From 6721e7f09aa95bff6622068332a3f56afad9c87b Mon Sep 17 00:00:00 2001 From: Tibor Frank Date: Tue, 20 Jun 2017 13:57:08 +0200 Subject: CSIT-687: Directory structure reorganization Change-Id: I772c9e214be2461adf58124998d272e7d795220f Signed-off-by: Tibor Frank Signed-off-by: Maciek Konstantynowicz --- TLDK-tests/func/__init__.robot | 18 - TLDK-tests/func/ipv4/ipv4_assemble.robot | 46 - TLDK-tests/func/ipv4/ipv4_checksum.robot | 43 - TLDK-tests/func/ipv4/ipv4_fragment.robot | 43 - TLDK-tests/func/ipv6/ipv6_checksum.robot | 43 - TLDK-tests/func/ipv6/ipv6_fragment.robot | 43 - TLDK-tests/tldk_scripts/install_tldk.sh | 57 - TLDK-tests/tldk_scripts/run_tldk.sh | 53 - .../tldk_testconfig/test_ipv4_assemble_be.cfg | 1 - .../tldk_testconfig/test_ipv4_assemble_fe.cfg | 2 - .../tldk_testconfig/test_ipv4_checksum_be.cfg | 2 - .../tldk_testconfig/test_ipv4_checksum_fe.cfg | 3 - .../tldk_testconfig/test_ipv4_fragment_be.cfg | 2 - .../tldk_testconfig/test_ipv4_fragment_fe.cfg | 3 - .../tldk_testconfig/test_ipv6_checksum_be.cfg | 2 - .../tldk_testconfig/test_ipv6_checksum_fe.cfg | 3 - .../tldk_testconfig/test_ipv6_fragment_be.cfg | 2 - .../tldk_testconfig/test_ipv6_fragment_fe.cfg | 3 - bootstrap-TLDK.sh | 6 +- bootstrap-hc2vpp-integration-odl.sh | 4 +- bootstrap-hc2vpp-integration.sh | 4 +- bootstrap-hc2vpp-verify-odl.sh | 2 +- bootstrap-hc2vpp-verify.sh | 2 +- bootstrap-nsh_sfc-functional-virl.sh | 6 +- bootstrap-verify-perf-DPDK.sh | 22 +- bootstrap-verify-perf.sh | 56 +- bootstrap-vpp-verify-semiweekly.sh | 4 +- bootstrap-vpp-verify-weekly.sh | 2 +- bootstrap.sh | 4 +- docs/directory_structure.md | 537 +++++++ docs/qemu_vpp_vm | 6 +- dpdk-tests/dpdk_scripts/cleanup_dpdk.sh | 90 -- dpdk-tests/dpdk_scripts/init_dpdk.sh | 35 - dpdk-tests/dpdk_scripts/install_dpdk.sh | 63 - dpdk-tests/dpdk_scripts/run_l2fwd.sh | 115 -- dpdk-tests/dpdk_scripts/run_l3fwd.sh | 104 -- ...ge2p1x520-eth-l2xcbase-testpmd-ndrpdrdisc.robot | 374 ----- ...ge2p1x520-ethip4-ip4base-l3fwd-ndrpdrdisc.robot | 421 ------ ...ge2p1x710-eth-l2xcbase-testpmd-ndrpdrdisc.robot | 422 ------ ...e2p1xl710-eth-l2xcbase-testpmd-ndrpdrdisc.robot | 424 ------ dpdk-tests/perf/__init__.robot | 38 - nsh_sfc_tests/func/__init__.robot | 20 - .../eth2p-ethip4-nsh-proxy-inbound-func.robot | 85 -- .../eth2p-ethip4-nsh-proxy-outbound-func.robot | 86 -- .../func/sff/eth2p-ethip4-sfc-sff-func.robot | 85 -- nsh_sfc_tests/sfc_scripts/install_sfc.sh | 114 -- nsh_sfc_tests/sfc_scripts/set_nsh_proxy_inbound.sh | 32 - .../sfc_scripts/set_nsh_proxy_outbound.sh | 32 - nsh_sfc_tests/sfc_scripts/set_sfc_sff.sh | 32 - nsh_sfc_tests/sfc_scripts/start_tcpdump.sh | 16 - resources/libraries/python/TLDK/UdpTest.py | 252 +-- resources/libraries/python/TrafficGenerator.py | 16 +- resources/libraries/robot/DPDK/default.robot | 110 -- resources/libraries/robot/TLDK/TLDKUtils.robot | 80 - resources/libraries/robot/bridge_domain.robot | 279 ---- resources/libraries/robot/counters.robot | 91 -- resources/libraries/robot/crypto/ipsec.robot | 280 ++++ resources/libraries/robot/default.robot | 357 ----- resources/libraries/robot/dhcp_client.robot | 141 -- resources/libraries/robot/dhcp_proxy.robot | 159 -- resources/libraries/robot/double_qemu_setup.robot | 95 -- resources/libraries/robot/dpdk/default.robot | 110 ++ resources/libraries/robot/fds/default.robot | 4 +- .../libraries/robot/features/dhcp_client.robot | 141 ++ .../libraries/robot/features/dhcp_proxy.robot | 159 ++ resources/libraries/robot/features/policer.robot | 99 ++ resources/libraries/robot/gre.robot | 182 --- resources/libraries/robot/honeycomb/policer.robot | 2 +- resources/libraries/robot/interfaces.robot | 35 - resources/libraries/robot/ip/ip4.robot | 160 ++ resources/libraries/robot/ip/ip6.robot | 195 +++ resources/libraries/robot/ip/map.robot | 312 ++++ resources/libraries/robot/ip/snat.robot | 150 ++ resources/libraries/robot/ipsec.robot | 280 ---- resources/libraries/robot/ipv4.robot | 160 -- resources/libraries/robot/ipv6.robot | 195 --- .../libraries/robot/l2/l2_bridge_domain.robot | 279 ++++ resources/libraries/robot/l2/l2_traffic.robot | 183 +++ resources/libraries/robot/l2/l2_xconnect.robot | 24 + resources/libraries/robot/l2/tagging.robot | 219 +++ resources/libraries/robot/l2_traffic.robot | 183 --- resources/libraries/robot/l2_xconnect.robot | 24 - resources/libraries/robot/lisp/l2lisp.robot | 77 - resources/libraries/robot/lisp/lisp_api.robot | 399 ----- .../robot/lisp/lisp_static_adjacency.robot | 168 -- resources/libraries/robot/lisp/lispgpe.robot | 126 -- resources/libraries/robot/lxc.robot | 257 ---- resources/libraries/robot/map.robot | 312 ---- resources/libraries/robot/overlay/gre.robot | 182 +++ resources/libraries/robot/overlay/l2lisp.robot | 77 + resources/libraries/robot/overlay/lisp_api.robot | 399 +++++ .../robot/overlay/lisp_static_adjacency.robot | 168 ++ resources/libraries/robot/overlay/lispgpe.robot | 126 ++ resources/libraries/robot/overlay/vxlan.robot | 135 ++ .../performance/performance_configuration.robot | 1597 ++++++++++++++++++++ .../robot/performance/performance_setup.robot | 532 +++++++ .../robot/performance/performance_utils.robot | 545 +++++++ .../robot/performance_configuration.robot | 1597 -------------------- resources/libraries/robot/performance_setup.robot | 532 ------- resources/libraries/robot/performance_utils.robot | 545 ------- resources/libraries/robot/policer.robot | 99 -- resources/libraries/robot/qemu.robot | 99 -- resources/libraries/robot/shared/counters.robot | 91 ++ resources/libraries/robot/shared/default.robot | 357 +++++ resources/libraries/robot/shared/interfaces.robot | 35 + resources/libraries/robot/shared/lxc.robot | 257 ++++ .../libraries/robot/shared/testing_path.robot | 353 +++++ resources/libraries/robot/shared/traffic.robot | 459 ++++++ resources/libraries/robot/snat.robot | 150 -- resources/libraries/robot/tagging.robot | 219 --- resources/libraries/robot/telemetry/ipfix.robot | 2 +- resources/libraries/robot/testing_path.robot | 353 ----- resources/libraries/robot/tldk/tldk_utils.robot | 80 + resources/libraries/robot/traffic.robot | 459 ------ .../libraries/robot/vm/double_qemu_setup.robot | 95 ++ resources/libraries/robot/vm/qemu.robot | 99 ++ resources/libraries/robot/vxlan.robot | 135 -- .../templates/vat/show_crypto_device_mapping.vat | 2 +- .../ubuntu-14.04.4_2016-10-07_1.3/apt-packages.txt | 500 +++--- .../pip-requirements.txt | 28 +- .../ubuntu-16.04.1_2016-10-10_1.4/apt-packages.txt | 492 +++--- .../pip-requirements.txt | 30 +- .../ubuntu-16.04.1_2016-11-28_1.5/apt-packages.txt | 536 +++---- .../pip-requirements.txt | 30 +- .../ubuntu-16.04.1_2016-12-19_1.6/apt-packages.txt | 550 +++---- .../pip-requirements.txt | 30 +- resources/tools/download_hc_build_pkgs.sh | 96 -- resources/tools/download_hc_pkgs.sh | 99 -- resources/tools/download_install_vpp_pkgs.sh | 81 - resources/tools/download_install_vpp_rpms.sh | 39 - resources/tools/download_nsh_sfc_pkgs.sh | 65 - resources/tools/rename_robot_keywords.py | 243 --- resources/tools/report_gen/conf.py | 4 +- resources/tools/robot_output_parser.py | 208 --- resources/tools/scripts/download_hc_build_pkgs.sh | 96 ++ resources/tools/scripts/download_hc_pkgs.sh | 99 ++ .../tools/scripts/download_install_vpp_pkgs.sh | 81 + .../tools/scripts/download_install_vpp_rpms.sh | 39 + resources/tools/scripts/download_nsh_sfc_pkgs.sh | 65 + resources/tools/scripts/rename_robot_keywords.py | 243 +++ resources/tools/scripts/robot_output_parser.py | 208 +++ resources/tools/scripts/topo_installation.py | 149 ++ resources/tools/scripts/topo_reservation.py | 65 + .../profile_trex_stateless_base_class.py | 212 --- .../stream_profiles/trex-sl-2n-ethip4-ip4src253.py | 94 -- .../stream_profiles/trex-sl-3n-ethip4-ip4dst1.py | 73 - .../stream_profiles/trex-sl-3n-ethip4-ip4dst100.py | 96 -- .../trex-sl-3n-ethip4-ip4dst1000.py | 96 -- .../trex-sl-3n-ethip4-ip4dst10000.py | 96 -- .../trex-sl-3n-ethip4-ip4dst100000.py | 96 -- .../trex-sl-3n-ethip4-ip4dst1000000.py | 96 -- .../stream_profiles/trex-sl-3n-ethip4-ip4dst253.py | 96 -- .../trex-sl-3n-ethip4-ip4dst253_l3fwd.py | 96 -- .../stream_profiles/trex-sl-3n-ethip4-ip4src253.py | 94 -- .../stream_profiles/trex-sl-3n-ethip4-ip4src254.py | 94 -- .../trex-sl-3n-ethip4udp-1000u15p.py | 116 -- .../trex-sl-3n-ethip4udp-100u15p.py | 116 -- .../stream_profiles/trex-sl-3n-ethip4udp-10u15p.py | 116 -- .../stream_profiles/trex-sl-3n-ethip4udp-1u15p.py | 113 -- .../stream_profiles/trex-sl-3n-ethip4udp-1u1p.py | 88 -- .../trex-sl-3n-ethip4udp-2000u15p.py | 116 -- .../trex-sl-3n-ethip4udp-4000u15p.py | 116 -- .../trex-sl-3n-ethip6-ip6dst10000.py | 99 -- .../trex-sl-3n-ethip6-ip6dst100000.py | 99 -- .../trex-sl-3n-ethip6-ip6dst1000000.py | 99 -- .../stream_profiles/trex-sl-3n-ethip6-ip6src253.py | 99 -- resources/tools/t-rex/t-rex-installer.sh | 37 - resources/tools/t-rex/t-rex-server-info.py | 76 - resources/tools/t-rex/t-rex-stateless-profile.py | 296 ---- resources/tools/t-rex/t-rex-stateless-stop.py | 91 -- .../tools/testbed-setup/playbooks/files/90-csit | 158 +- resources/tools/topo_installation.py | 149 -- resources/tools/topo_reservation.py | 65 - resources/tools/trex/trex_installer.sh | 37 + resources/tools/trex/trex_server_info.py | 76 + resources/tools/trex/trex_stateless_profile.py | 296 ++++ resources/tools/trex/trex_stateless_stop.py | 91 ++ .../trex/profile_trex_stateless_base_class.py | 212 +++ .../trex/trex-sl-2n-ethip4-ip4src253.py | 94 ++ .../trex/trex-sl-3n-ethip4-ip4dst1.py | 73 + .../trex/trex-sl-3n-ethip4-ip4dst100.py | 96 ++ .../trex/trex-sl-3n-ethip4-ip4dst1000.py | 96 ++ .../trex/trex-sl-3n-ethip4-ip4dst10000.py | 96 ++ .../trex/trex-sl-3n-ethip4-ip4dst100000.py | 96 ++ .../trex/trex-sl-3n-ethip4-ip4dst1000000.py | 96 ++ .../trex/trex-sl-3n-ethip4-ip4dst253.py | 96 ++ .../trex/trex-sl-3n-ethip4-ip4dst253_l3fwd.py | 96 ++ .../trex/trex-sl-3n-ethip4-ip4src253.py | 94 ++ .../trex/trex-sl-3n-ethip4-ip4src254.py | 94 ++ .../trex/trex-sl-3n-ethip4udp-1000u15p.py | 116 ++ .../trex/trex-sl-3n-ethip4udp-100u15p.py | 116 ++ .../trex/trex-sl-3n-ethip4udp-10u15p.py | 116 ++ .../trex/trex-sl-3n-ethip4udp-1u15p.py | 113 ++ .../trex/trex-sl-3n-ethip4udp-1u1p.py | 88 ++ .../trex/trex-sl-3n-ethip4udp-2000u15p.py | 116 ++ .../trex/trex-sl-3n-ethip4udp-4000u15p.py | 116 ++ .../trex/trex-sl-3n-ethip6-ip6dst10000.py | 99 ++ .../trex/trex-sl-3n-ethip6-ip6dst100000.py | 99 ++ .../trex/trex-sl-3n-ethip6-ip6dst1000000.py | 99 ++ .../trex/trex-sl-3n-ethip6-ip6src253.py | 99 ++ sample_tests/sample_suite.robot | 6 +- tests/dpdk/dpdk_scripts/cleanup_dpdk.sh | 90 ++ tests/dpdk/dpdk_scripts/init_dpdk.sh | 35 + tests/dpdk/dpdk_scripts/install_dpdk.sh | 63 + tests/dpdk/dpdk_scripts/run_l2fwd.sh | 115 ++ tests/dpdk/dpdk_scripts/run_l3fwd.sh | 104 ++ ...ge2p1x520-eth-l2xcbase-testpmd-ndrpdrdisc.robot | 374 +++++ ...ge2p1x520-ethip4-ip4base-l3fwd-ndrpdrdisc.robot | 421 ++++++ ...ge2p1x710-eth-l2xcbase-testpmd-ndrpdrdisc.robot | 422 ++++++ ...e2p1xl710-eth-l2xcbase-testpmd-ndrpdrdisc.robot | 424 ++++++ tests/dpdk/perf/__init__.robot | 38 + tests/func/__init__.robot | 20 - .../eth2p-ethip4-ip4base-copblklistbase-func.robot | 92 -- .../eth2p-ethip4-ip4base-copwhlistbase-func.robot | 92 -- .../eth2p-ethip6-ip6base-copblklistbase-func.robot | 101 -- .../eth2p-ethip6-ip6base-copwhlistbase-func.robot | 101 -- .../eth2p-ethip4-ip4base-ip4dhcpclient-func.robot | 117 -- .../eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot | 93 -- .../eth2p-ethip6-ip6base-ip6dhcpproxy-func.robot | 66 - ...lrn-eth-4vhost-2vm-fds-provider-nets-func.robot | 341 ----- ...clrn--eth-4vhost-2vm-fds-tenant-nets-func.robot | 333 ---- tests/func/gre/eth2p-ethip4gre-ip4base-func.robot | 306 ---- tests/func/honeycomb/__init__.robot | 27 - .../honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot | 169 --- .../mgmt-cfg-dhcp-apihc-apivat-func.robot | 131 -- .../func/honeycomb/mgmt-cfg-int-apihcnc-func.robot | 76 - .../mgmt-cfg-int-subint-apihc-apivat-func.robot | 609 -------- .../mgmt-cfg-intip4-intip6-apihc-apivat-func.robot | 293 ---- .../mgmt-cfg-inttap-apihc-apivat-func.robot | 79 - .../mgmt-cfg-intvhost-apihc-apivat-func.robot | 163 -- .../mgmt-cfg-l2bd-apihc-apivat-func.robot | 116 -- .../mgmt-cfg-l2fib-apihc-apivat-func.robot | 232 --- .../mgmt-cfg-lisp-apihc-apivat-func.robot | 224 --- .../honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot | 147 -- .../honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot | 86 -- .../mgmt-cfg-pluginacl-apihc-apivat-func.robot | 742 --------- .../honeycomb/mgmt-cfg-policer-apihc-func.robot | 144 -- .../honeycomb/mgmt-cfg-proxyarp-apihc-func.robot | 89 -- .../honeycomb/mgmt-cfg-proxynd6-apihc-func.robot | 117 -- .../mgmt-cfg-routing-apihc-apivat-func.robot | 231 --- .../func/honeycomb/mgmt-cfg-slaac-apihc-func.robot | 138 -- .../mgmt-cfg-snat44-apihc-apivat-func.robot | 105 -- .../mgmt-cfg-spanrx-apihc-apivat-func.robot | 260 ---- .../mgmt-cfg-vxlan-apihc-apivat-func.robot | 139 -- .../mgmt-cfg-vxlangpe-apihc-apivat-func.robot | 168 -- tests/func/honeycomb/mgmt-notif-apihcnc-func.robot | 68 - .../honeycomb/mgmt-statepersist-apihc-func.robot | 169 --- .../iacl/eth2p-eth-l2xcbase-iaclbase-func.robot | 144 -- .../iacl/eth2p-ethip4-ip4base-iaclbase-func.robot | 524 ------- .../iacl/eth2p-ethip6-ip6base-iaclbase-func.robot | 577 ------- .../ipsec/eth2p-ethip4ipsectnl-ip4base-func.robot | 523 ------- .../ipsec/eth2p-ethip4ipsectpt-ip4base-func.robot | 487 ------ .../ipsec/eth2p-ethip6ipsectnl-ip6base-func.robot | 523 ------- .../ipsec/eth2p-ethip6ipsectpt-ip6base-func.robot | 487 ------ .../ipv4/eth2p-ethip4-ip4base-eth-2vhost-1vm.robot | 98 -- tests/func/ipv4/eth2p-ethip4-ip4base-func.robot | 138 -- .../ipv4/eth2p-ethip4-ip4base-ip4arp-func.robot | 82 - .../ipv4/eth2p-ethip4-ip4base-ip4ecmp-func.robot | 74 - .../eth2p-ethip4-ip4base-ip4proxyarp-func.robot | 156 -- tests/func/ipv6/eth2p-ethip6-ip6base-func.robot | 120 -- .../ipv6/eth2p-ethip6-ip6base-ip6ecmp-func.robot | 74 - .../ipv6/eth2p-ethip6-ip6base-ip6ra-func.robot | 107 -- ...2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot | 110 -- .../func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot | 91 -- ...2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot | 151 -- .../func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot | 85 -- .../l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot | 86 -- .../eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot | 93 -- tests/func/l2xc/eth2p-eth-l2xcbase-func.robot | 74 - tests/func/lisp/api-crud-lisp-func.robot | 116 -- ...sectptlispgpe-ip4base-eth-2vhost-1vm-func.robot | 209 --- .../eth2p-ethip4ipsectptlispgpe-ip4base-func.robot | 269 ---- ...sectptlispgpe-ip6base-eth-2vhost-1vm-func.robot | 185 --- .../eth2p-ethip4ipsectptlispgpe-ip6base-func.robot | 160 -- ...h2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot | 133 -- .../func/lisp/eth2p-ethip4lisp-ip4base-func.robot | 124 -- .../eth2p-ethip4lisp-l2bdbasemaclrn-func.robot | 95 -- ...ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot | 121 -- .../lisp/eth2p-ethip4lispgpe-ip4base-func.robot | 104 -- ...ip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot | 133 -- .../lisp/eth2p-ethip4lispgpe-ip4basevrf-func.robot | 109 -- ...ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot | 117 -- .../lisp/eth2p-ethip4lispgpe-ip6base-func.robot | 120 -- .../lisp/eth2p-ethip4lispgpe-ip6basevrf-func.robot | 110 -- ...sectptlispgpe-ip4base-eth-2vhost-1vm-func.robot | 183 --- .../eth2p-ethip6ipsectptlispgpe-ip4base-func.robot | 158 -- ...sectptlispgpe-ip6base-eth-2vhost-1vm-func.robot | 201 --- .../eth2p-ethip6ipsectptlispgpe-ip6base-func.robot | 174 --- .../eth2p-ethip6lisp-l2bdbasemaclrn-func.robot | 96 -- .../lisp/eth2p-ethip6lispgpe-ip4base-func.robot | 108 -- ...ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot | 131 -- .../lisp/eth2p-ethip6lispgpe-ip6base-func.robot | 107 -- ...ip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot | 138 -- .../lisp/eth2p-ethip6lispgpe-ip6basevrf-func.robot | 112 -- ...eth2p-ethip4-ip4base-ipolicemarkbase-func.robot | 162 -- ...eth2p-ethip6-ip6base-ipolicemarkbase-func.robot | 161 -- tests/func/rpf/eth2p-ethip4-ip4base-rpf-func.robot | 134 -- ...ethip6ip4-ip4base--ip6base-swirelw46-func.robot | 209 --- ...ethip6ip4-ip4base--ip6base-swiremape-func.robot | 483 ------ ...ethip6ip4-ip4base--ip6base-swiremapt-func.robot | 135 -- tests/func/tap/api-crud-tap-func.robot | 72 - .../eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot | 88 -- ...2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot | 176 --- .../tap/eth2p-ethip4-ip4base-eth-1tap-func.robot | 126 -- .../eth2p-ethip4-ip4base-ip4ipfixbase-func.robot | 201 --- .../eth2p-ethip4-ip4base-ip4ipfixscale-func.robot | 111 -- .../eth2p-ethip6-ip6base-ip6ipfixbase-func.robot | 198 --- .../eth2p-ethip6-ip6base-ip6ipfixscale-func.robot | 127 -- .../span/eth2p-ethip4-ip4base-spanrx-func.robot | 79 - .../span/eth2p-ethip6-ip6base-spanrx-func.robot | 64 - ...-l2bdbase-vhost-client-reconnect-2vm-func.robot | 231 --- ...ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot | 221 --- ...p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot | 189 --- ...2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot | 405 ----- tests/func/vlan/eth2p-dot1ad-l2xcbase-func.robot | 69 - .../eth2p-dot1ad-l2xcbase-vlantrans22-func.robot | 346 ----- ...q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot | 394 ----- ...p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot | 335 ---- tests/func/vlan/eth2p-dot1q-ip4base-func.robot | 107 -- ...-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-func.robot | 145 -- ...h2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot | 206 --- .../eth2p-dot1q-l2xcbase-vlantrans11-func.robot | 171 --- tests/func/vrf/eth2p-ethip4-ip4basevrf-func.robot | 391 ----- tests/func/vrf/eth2p-ethip6-ip6basevrf-func.robot | 409 ----- .../eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot | 76 - ...4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot | 116 -- .../eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot | 78 - .../vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot | 66 - ...6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot | 119 -- .../eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot | 80 - ...h4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot | 200 --- ...h4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot | 203 --- tests/nsh_sfc/func/__init__.robot | 20 + .../eth2p-ethip4-nsh-proxy-inbound-func.robot | 85 ++ .../eth2p-ethip4-nsh-proxy-outbound-func.robot | 86 ++ .../func/sff/eth2p-ethip4-sfc-sff-func.robot | 85 ++ tests/nsh_sfc/sfc_scripts/install_sfc.sh | 114 ++ tests/nsh_sfc/sfc_scripts/set_nsh_proxy_inbound.sh | 32 + .../nsh_sfc/sfc_scripts/set_nsh_proxy_outbound.sh | 32 + tests/nsh_sfc/sfc_scripts/set_sfc_sff.sh | 32 + tests/nsh_sfc/sfc_scripts/start_tcpdump.sh | 16 + ...e2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot | 288 ---- .../perf/10ge2p1x520-dot1ad-l2xcbase-ndrchk.robot | 279 ---- .../10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot | 606 -------- ...-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot | 705 --------- ...ot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk.robot | 212 --- ...-dot1q-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot | 684 --------- ...x520-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk.robot | 209 --- tests/perf/10ge2p1x520-dot1q-l2xcbase-ndrchk.robot | 266 ---- .../10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot | 584 ------- ...-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot | 623 -------- ...-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot | 548 ------- .../10ge2p1x520-eth-l2bdbasemaclrn-ndrchk.robot | 192 --- ...10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot | 274 ---- .../10ge2p1x520-eth-l2bdbasemaclrn-pdrchk.robot | 184 --- ...20-eth-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot | 621 -------- ...p1x520-eth-l2xcbase-eth-2vhost-1vm-pdrchk.robot | 208 --- ...20-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot | 549 ------- tests/perf/10ge2p1x520-eth-l2xcbase-ndrchk.robot | 192 --- .../perf/10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot | 483 ------ tests/perf/10ge2p1x520-eth-l2xcbase-pdrchk.robot | 184 --- ...x520-ethip4-ip4base-copwhtlistbase-ndrchk.robot | 260 ---- ...-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot | 569 ------- ...-ethip4-ip4base-eth-2vhost-1vm-ndrpdrdisc.robot | 658 -------- ...x520-ethip4-ip4base-eth-2vhost-1vm-pdrchk.robot | 209 --- ...-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot | 550 ------- ...2p1x520-ethip4-ip4base-iacldstbase-ndrchk.robot | 332 ---- ...520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot | 713 --------- ...520-ethip4-ip4base-ipolicemarkbase-ndrchk.robot | 226 --- ...ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot | 517 ------- tests/perf/10ge2p1x520-ethip4-ip4base-ndrchk.robot | 198 --- .../10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot | 489 ------ tests/perf/10ge2p1x520-ethip4-ip4base-pdrchk.robot | 190 --- ...0ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot | 227 --- .../10ge2p1x520-ethip4-ip4scale200k-ndrchk.robot | 201 --- ...0ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot | 457 ------ .../10ge2p1x520-ethip4-ip4scale20k-ndrchk.robot | 210 --- ...10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot | 457 ------ .../10ge2p1x520-ethip4-ip4scale2m-ndrchk.robot | 210 --- .../10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot | 457 ------ .../10ge2p1x520-ethip4-ip4scale2m-pdrchk.robot | 185 --- .../10ge2p1x520-ethip4lispip4-ip4base-ndrchk.robot | 266 ---- ...e2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot | 595 -------- .../10ge2p1x520-ethip4lispip4-ip4base-pdrchk.robot | 193 --- .../10ge2p1x520-ethip4lispip6-ip4base-ndrchk.robot | 266 ---- ...e2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot | 596 -------- .../10ge2p1x520-ethip4lispip6-ip4base-pdrchk.robot | 193 --- ...udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot | 229 --- ...-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot | 230 --- ...ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot | 230 --- ...p4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot | 230 --- ...p4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot | 124 -- ...p4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot | 124 -- ...-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot | 675 --------- ...520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot | 487 ------ ...2p1x520-ethip4vxlan-l2bdbasemaclrn-pdrchk.robot | 186 --- .../10ge2p1x520-ethip4vxlan-l2xcbase-ndrchk.robot | 190 --- ...ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot | 432 ------ .../10ge2p1x520-ethip4vxlan-l2xcbase-pdrchk.robot | 186 --- ...x520-ethip6-ip6base-copwhtlistbase-ndrchk.robot | 256 ---- ...-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot | 565 ------- ...2p1x520-ethip6-ip6base-iacldstbase-ndrchk.robot | 210 --- ...520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot | 474 ------ tests/perf/10ge2p1x520-ethip6-ip6base-ndrchk.robot | 191 --- .../10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot | 436 ------ tests/perf/10ge2p1x520-ethip6-ip6base-pdrchk.robot | 183 --- .../10ge2p1x520-ethip6-ip6scale200k-ndrchk.robot | 201 --- ...0ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot | 457 ------ .../10ge2p1x520-ethip6-ip6scale20k-ndrchk.robot | 201 --- ...10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot | 457 ------ .../10ge2p1x520-ethip6-ip6scale2m-ndrchk.robot | 210 --- .../10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot | 457 ------ .../10ge2p1x520-ethip6-ip6scale2m-pdrchk.robot | 185 --- .../10ge2p1x520-ethip6lispip4-ip6base-ndrchk.robot | 266 ---- ...e2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot | 596 -------- .../10ge2p1x520-ethip6lispip4-ip6base-pdrchk.robot | 193 --- .../10ge2p1x520-ethip6lispip6-ip6base-ndrchk.robot | 266 ---- ...e2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot | 596 -------- .../10ge2p1x520-ethip6lispip6-ip6base-pdrchk.robot | 193 --- ...-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot | 658 -------- ...10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot | 274 ---- ...e2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot | 352 ----- ...-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot | 660 -------- ...-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot | 588 ------- ...0ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot | 232 --- ...10-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot | 588 ------- .../40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot | 251 --- ...-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot | 588 ------- .../40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot | 257 ---- ...secbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot | 337 ----- ...ecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot | 333 ---- ...secbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot | 361 ----- ...ecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot | 357 ----- ...ale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot | 337 ----- ...le1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot | 333 ---- ...ale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot | 361 ----- ...le1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot | 357 ----- ...sectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot | 374 ----- .../40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot | 183 --- tests/perf/__init__.robot | 45 - tests/tldk/func/__init__.robot | 18 + tests/tldk/func/ipv4/ipv4_assemble.robot | 46 + tests/tldk/func/ipv4/ipv4_checksum.robot | 43 + tests/tldk/func/ipv4/ipv4_fragment.robot | 43 + tests/tldk/func/ipv6/ipv6_checksum.robot | 43 + tests/tldk/func/ipv6/ipv6_fragment.robot | 43 + tests/tldk/tldk_scripts/install_tldk.sh | 57 + tests/tldk/tldk_scripts/run_tldk.sh | 53 + .../tldk/tldk_testconfig/test_ipv4_assemble_be.cfg | 1 + .../tldk/tldk_testconfig/test_ipv4_assemble_fe.cfg | 2 + .../tldk/tldk_testconfig/test_ipv4_checksum_be.cfg | 2 + .../tldk/tldk_testconfig/test_ipv4_checksum_fe.cfg | 3 + .../tldk/tldk_testconfig/test_ipv4_fragment_be.cfg | 2 + .../tldk/tldk_testconfig/test_ipv4_fragment_fe.cfg | 3 + .../tldk/tldk_testconfig/test_ipv6_checksum_be.cfg | 2 + .../tldk/tldk_testconfig/test_ipv6_checksum_fe.cfg | 3 + .../tldk/tldk_testconfig/test_ipv6_fragment_be.cfg | 2 + .../tldk/tldk_testconfig/test_ipv6_fragment_fe.cfg | 3 + tests/vpp/func/__init__.robot | 20 + .../crypto/eth2p-ethip4ipsectnl-ip4base-func.robot | 523 +++++++ .../crypto/eth2p-ethip4ipsectpt-ip4base-func.robot | 487 ++++++ .../eth2p-ethip4ipsectptlispgpe-ip4base-func.robot | 269 ++++ .../eth2p-ethip4ipsectptlispgpe-ip6base-func.robot | 160 ++ ...h2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot | 133 ++ .../crypto/eth2p-ethip6ipsectnl-ip6base-func.robot | 523 +++++++ .../crypto/eth2p-ethip6ipsectpt-ip6base-func.robot | 487 ++++++ .../eth2p-ethip6ipsectptlispgpe-ip4base-func.robot | 158 ++ .../eth2p-ethip6ipsectptlispgpe-ip6base-func.robot | 174 +++ tests/vpp/func/honeycomb/__init__.robot | 27 + .../honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot | 169 +++ .../mgmt-cfg-dhcp-apihc-apivat-func.robot | 131 ++ .../func/honeycomb/mgmt-cfg-int-apihcnc-func.robot | 76 + .../mgmt-cfg-int-subint-apihc-apivat-func.robot | 609 ++++++++ .../mgmt-cfg-intip4-intip6-apihc-apivat-func.robot | 293 ++++ .../mgmt-cfg-inttap-apihc-apivat-func.robot | 79 + .../mgmt-cfg-intvhost-apihc-apivat-func.robot | 163 ++ .../mgmt-cfg-l2bd-apihc-apivat-func.robot | 116 ++ .../mgmt-cfg-l2fib-apihc-apivat-func.robot | 232 +++ .../mgmt-cfg-lisp-apihc-apivat-func.robot | 224 +++ .../honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot | 147 ++ .../honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot | 86 ++ .../mgmt-cfg-pluginacl-apihc-apivat-func.robot | 742 +++++++++ .../honeycomb/mgmt-cfg-policer-apihc-func.robot | 144 ++ .../honeycomb/mgmt-cfg-proxyarp-apihc-func.robot | 89 ++ .../honeycomb/mgmt-cfg-proxynd6-apihc-func.robot | 117 ++ .../mgmt-cfg-routing-apihc-apivat-func.robot | 231 +++ .../func/honeycomb/mgmt-cfg-slaac-apihc-func.robot | 138 ++ .../mgmt-cfg-snat44-apihc-apivat-func.robot | 105 ++ .../mgmt-cfg-spanrx-apihc-apivat-func.robot | 260 ++++ .../mgmt-cfg-vxlan-apihc-apivat-func.robot | 139 ++ .../mgmt-cfg-vxlangpe-apihc-apivat-func.robot | 168 ++ .../func/honeycomb/mgmt-notif-apihcnc-func.robot | 68 + .../honeycomb/mgmt-statepersist-apihc-func.robot | 169 +++ tests/vpp/func/interfaces/api-crud-tap-func.robot | 72 + .../eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot | 88 ++ ...2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot | 176 +++ .../eth2p-ethip4-ip4base-eth-1tap-func.robot | 126 ++ tests/vpp/func/ip4/eth2p-dot1q-ip4base-func.robot | 107 ++ .../eth2p-ethip4-ip4base-copblklistbase-func.robot | 92 ++ .../eth2p-ethip4-ip4base-copwhlistbase-func.robot | 92 ++ tests/vpp/func/ip4/eth2p-ethip4-ip4base-func.robot | 138 ++ .../ip4/eth2p-ethip4-ip4base-iaclbase-func.robot | 524 +++++++ .../ip4/eth2p-ethip4-ip4base-ip4arp-func.robot | 82 + .../eth2p-ethip4-ip4base-ip4dhcpclient-func.robot | 117 ++ .../eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot | 93 ++ .../ip4/eth2p-ethip4-ip4base-ip4ecmp-func.robot | 74 + .../eth2p-ethip4-ip4base-ip4proxyarp-func.robot | 156 ++ ...eth2p-ethip4-ip4base-ipolicemarkbase-func.robot | 162 ++ .../func/ip4/eth2p-ethip4-ip4base-rpf-func.robot | 134 ++ .../func/ip4/eth2p-ethip4-ip4basevrf-func.robot | 391 +++++ .../gre/eth2p-ethip4gre-ip4base-func.robot | 306 ++++ .../func/ip4_tunnels/lisp/api-crud-lisp-func.robot | 116 ++ .../lisp/eth2p-ethip4lisp-ip4base-func.robot | 124 ++ .../eth2p-ethip4lisp-l2bdbasemaclrn-func.robot | 95 ++ .../lisp/eth2p-ethip4lispgpe-ip4base-func.robot | 104 ++ .../lisp/eth2p-ethip4lispgpe-ip4basevrf-func.robot | 109 ++ .../lisp/eth2p-ethip4lispgpe-ip6base-func.robot | 120 ++ .../lisp/eth2p-ethip4lispgpe-ip6basevrf-func.robot | 110 ++ ...ethip6ip4-ip4base--ip6base-swirelw46-func.robot | 209 +++ ...ethip6ip4-ip4base--ip6base-swiremape-func.robot | 483 ++++++ ...ethip6ip4-ip4base--ip6base-swiremapt-func.robot | 135 ++ .../eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot | 74 + .../eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot | 78 + .../vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot | 66 + ...h4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot | 200 +++ .../eth2p-ethip6-ip6base-copblklistbase-func.robot | 101 ++ .../eth2p-ethip6-ip6base-copwhlistbase-func.robot | 101 ++ tests/vpp/func/ip6/eth2p-ethip6-ip6base-func.robot | 120 ++ .../ip6/eth2p-ethip6-ip6base-iaclbase-func.robot | 577 +++++++ .../eth2p-ethip6-ip6base-ip6dhcpproxy-func.robot | 66 + .../ip6/eth2p-ethip6-ip6base-ip6ecmp-func.robot | 74 + .../func/ip6/eth2p-ethip6-ip6base-ip6ra-func.robot | 107 ++ ...eth2p-ethip6-ip6base-ipolicemarkbase-func.robot | 161 ++ .../func/ip6/eth2p-ethip6-ip6basevrf-func.robot | 409 +++++ .../eth2p-ethip6lisp-l2bdbasemaclrn-func.robot | 96 ++ .../lisp/eth2p-ethip6lispgpe-ip4base-func.robot | 108 ++ .../lisp/eth2p-ethip6lispgpe-ip6base-func.robot | 107 ++ .../lisp/eth2p-ethip6lispgpe-ip6basevrf-func.robot | 112 ++ .../eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot | 80 + ...h4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot | 203 +++ ...ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot | 221 +++ ...2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot | 405 +++++ ...q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot | 394 +++++ ...h2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot | 206 +++ .../func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot | 91 ++ .../func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot | 85 ++ .../l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot | 86 ++ ...p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot | 189 +++ .../vpp/func/l2xc/eth2p-dot1ad-l2xcbase-func.robot | 69 + .../eth2p-dot1ad-l2xcbase-vlantrans22-func.robot | 346 +++++ ...p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot | 335 ++++ .../eth2p-dot1q-l2xcbase-vlantrans11-func.robot | 171 +++ tests/vpp/func/l2xc/eth2p-eth-l2xcbase-func.robot | 74 + .../l2xc/eth2p-eth-l2xcbase-iaclbase-func.robot | 144 ++ .../eth2p-ethip4-ip4base-ip4ipfixbase-func.robot | 201 +++ .../eth2p-ethip4-ip4base-ip4ipfixscale-func.robot | 111 ++ .../eth2p-ethip4-ip4base-spanrx-func.robot | 79 + .../eth2p-ethip6-ip6base-ip6ipfixbase-func.robot | 198 +++ .../eth2p-ethip6-ip6base-ip6ipfixscale-func.robot | 127 ++ .../eth2p-ethip6-ip6base-spanrx-func.robot | 64 + .../ip4/eth2p-ethip4-ip4base-eth-2vhost-1vm.robot | 98 ++ ...sectptlispgpe-ip4base-eth-2vhost-1vm-func.robot | 209 +++ ...sectptlispgpe-ip6base-eth-2vhost-1vm-func.robot | 185 +++ ...ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot | 121 ++ ...ip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot | 133 ++ ...ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot | 117 ++ ...sectptlispgpe-ip4base-eth-2vhost-1vm-func.robot | 183 +++ ...sectptlispgpe-ip6base-eth-2vhost-1vm-func.robot | 201 +++ ...ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot | 131 ++ ...ip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot | 138 ++ ...-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-func.robot | 145 ++ ...lrn-eth-4vhost-2vm-fds-provider-nets-func.robot | 341 +++++ ...2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot | 110 ++ ...2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot | 151 ++ ...-l2bdbase-vhost-client-reconnect-2vm-func.robot | 231 +++ ...clrn--eth-4vhost-2vm-fds-tenant-nets-func.robot | 333 ++++ ...4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot | 116 ++ ...6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot | 119 ++ .../eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot | 93 ++ tests/vpp/perf/__init__.robot | 45 + ...secbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot | 337 +++++ ...ecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot | 333 ++++ ...secbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot | 361 +++++ ...ecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot | 357 +++++ ...ale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot | 337 +++++ ...le1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot | 333 ++++ ...ale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot | 361 +++++ ...le1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot | 357 +++++ ...sectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot | 374 +++++ ...x520-ethip4-ip4base-copwhtlistbase-ndrchk.robot | 260 ++++ ...-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot | 569 +++++++ ...2p1x520-ethip4-ip4base-iacldstbase-ndrchk.robot | 332 ++++ ...520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot | 713 +++++++++ ...520-ethip4-ip4base-ipolicemarkbase-ndrchk.robot | 226 +++ ...ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot | 517 +++++++ .../ip4/10ge2p1x520-ethip4-ip4base-ndrchk.robot | 198 +++ .../10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot | 489 ++++++ .../ip4/10ge2p1x520-ethip4-ip4base-pdrchk.robot | 190 +++ ...0ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot | 227 +++ .../10ge2p1x520-ethip4-ip4scale200k-ndrchk.robot | 201 +++ ...0ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot | 457 ++++++ .../10ge2p1x520-ethip4-ip4scale20k-ndrchk.robot | 210 +++ ...10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot | 457 ++++++ .../ip4/10ge2p1x520-ethip4-ip4scale2m-ndrchk.robot | 210 +++ .../10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot | 457 ++++++ .../ip4/10ge2p1x520-ethip4-ip4scale2m-pdrchk.robot | 185 +++ ...udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot | 229 +++ ...-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot | 230 +++ ...ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot | 230 +++ ...p4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot | 230 +++ ...p4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot | 124 ++ ...p4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot | 124 ++ .../40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot | 257 ++++ .../10ge2p1x520-ethip4lispip4-ip4base-ndrchk.robot | 266 ++++ ...e2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot | 595 ++++++++ .../10ge2p1x520-ethip4lispip4-ip4base-pdrchk.robot | 193 +++ .../10ge2p1x520-ethip4lispip6-ip4base-ndrchk.robot | 266 ++++ ...e2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot | 596 ++++++++ .../10ge2p1x520-ethip4lispip6-ip4base-pdrchk.robot | 193 +++ ...520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot | 487 ++++++ ...2p1x520-ethip4vxlan-l2bdbasemaclrn-pdrchk.robot | 186 +++ .../10ge2p1x520-ethip4vxlan-l2xcbase-ndrchk.robot | 190 +++ ...ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot | 432 ++++++ .../10ge2p1x520-ethip4vxlan-l2xcbase-pdrchk.robot | 186 +++ ...x520-ethip6-ip6base-copwhtlistbase-ndrchk.robot | 256 ++++ ...-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot | 565 +++++++ ...2p1x520-ethip6-ip6base-iacldstbase-ndrchk.robot | 210 +++ ...520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot | 474 ++++++ .../ip6/10ge2p1x520-ethip6-ip6base-ndrchk.robot | 191 +++ .../10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot | 436 ++++++ .../ip6/10ge2p1x520-ethip6-ip6base-pdrchk.robot | 183 +++ .../10ge2p1x520-ethip6-ip6scale200k-ndrchk.robot | 201 +++ ...0ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot | 457 ++++++ .../10ge2p1x520-ethip6-ip6scale20k-ndrchk.robot | 201 +++ ...10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot | 457 ++++++ .../ip6/10ge2p1x520-ethip6-ip6scale2m-ndrchk.robot | 210 +++ .../10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot | 457 ++++++ .../ip6/10ge2p1x520-ethip6-ip6scale2m-pdrchk.robot | 185 +++ .../40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot | 183 +++ .../10ge2p1x520-ethip6lispip4-ip6base-ndrchk.robot | 266 ++++ ...e2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot | 596 ++++++++ .../10ge2p1x520-ethip6lispip4-ip6base-pdrchk.robot | 193 +++ .../10ge2p1x520-ethip6lispip6-ip6base-ndrchk.robot | 266 ++++ ...e2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot | 596 ++++++++ .../10ge2p1x520-ethip6lispip6-ip6base-pdrchk.robot | 193 +++ ...e2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot | 288 ++++ .../l2/10ge2p1x520-dot1ad-l2xcbase-ndrchk.robot | 279 ++++ .../10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot | 606 ++++++++ .../l2/10ge2p1x520-dot1q-l2xcbase-ndrchk.robot | 266 ++++ .../l2/10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot | 584 +++++++ .../l2/10ge2p1x520-eth-l2bdbasemaclrn-ndrchk.robot | 192 +++ ...10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot | 274 ++++ .../l2/10ge2p1x520-eth-l2bdbasemaclrn-pdrchk.robot | 184 +++ .../perf/l2/10ge2p1x520-eth-l2xcbase-ndrchk.robot | 192 +++ .../l2/10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot | 483 ++++++ .../perf/l2/10ge2p1x520-eth-l2xcbase-pdrchk.robot | 184 +++ ...10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot | 274 ++++ ...e2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot | 352 +++++ ...0ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot | 232 +++ .../l2/40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot | 251 +++ ...-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot | 705 +++++++++ ...ot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk.robot | 212 +++ ...-dot1q-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot | 684 +++++++++ ...x520-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk.robot | 209 +++ ...-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot | 623 ++++++++ ...-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot | 548 +++++++ ...20-eth-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot | 621 ++++++++ ...p1x520-eth-l2xcbase-eth-2vhost-1vm-pdrchk.robot | 208 +++ ...20-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot | 549 +++++++ ...-ethip4-ip4base-eth-2vhost-1vm-ndrpdrdisc.robot | 658 ++++++++ ...x520-ethip4-ip4base-eth-2vhost-1vm-pdrchk.robot | 209 +++ ...-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot | 550 +++++++ ...-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot | 675 +++++++++ ...-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot | 658 ++++++++ ...-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot | 660 ++++++++ ...-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot | 588 +++++++ ...10-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot | 588 +++++++ ...-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot | 588 +++++++ 678 files changed, 73572 insertions(+), 73037 deletions(-) delete mode 100644 TLDK-tests/func/__init__.robot delete mode 100644 TLDK-tests/func/ipv4/ipv4_assemble.robot delete mode 100644 TLDK-tests/func/ipv4/ipv4_checksum.robot delete mode 100644 TLDK-tests/func/ipv4/ipv4_fragment.robot delete mode 100644 TLDK-tests/func/ipv6/ipv6_checksum.robot delete mode 100644 TLDK-tests/func/ipv6/ipv6_fragment.robot delete mode 100755 TLDK-tests/tldk_scripts/install_tldk.sh delete mode 100755 TLDK-tests/tldk_scripts/run_tldk.sh delete mode 100644 TLDK-tests/tldk_testconfig/test_ipv4_assemble_be.cfg delete mode 100644 TLDK-tests/tldk_testconfig/test_ipv4_assemble_fe.cfg delete mode 100644 TLDK-tests/tldk_testconfig/test_ipv4_checksum_be.cfg delete mode 100644 TLDK-tests/tldk_testconfig/test_ipv4_checksum_fe.cfg delete mode 100644 TLDK-tests/tldk_testconfig/test_ipv4_fragment_be.cfg delete mode 100644 TLDK-tests/tldk_testconfig/test_ipv4_fragment_fe.cfg delete mode 100644 TLDK-tests/tldk_testconfig/test_ipv6_checksum_be.cfg delete mode 100644 TLDK-tests/tldk_testconfig/test_ipv6_checksum_fe.cfg delete mode 100644 TLDK-tests/tldk_testconfig/test_ipv6_fragment_be.cfg delete mode 100644 TLDK-tests/tldk_testconfig/test_ipv6_fragment_fe.cfg create mode 100644 docs/directory_structure.md delete mode 100755 dpdk-tests/dpdk_scripts/cleanup_dpdk.sh delete mode 100755 dpdk-tests/dpdk_scripts/init_dpdk.sh delete mode 100755 dpdk-tests/dpdk_scripts/install_dpdk.sh delete mode 100755 dpdk-tests/dpdk_scripts/run_l2fwd.sh delete mode 100755 dpdk-tests/dpdk_scripts/run_l3fwd.sh delete mode 100644 dpdk-tests/perf/10ge2p1x520-eth-l2xcbase-testpmd-ndrpdrdisc.robot delete mode 100644 dpdk-tests/perf/10ge2p1x520-ethip4-ip4base-l3fwd-ndrpdrdisc.robot delete mode 100644 dpdk-tests/perf/10ge2p1x710-eth-l2xcbase-testpmd-ndrpdrdisc.robot delete mode 100644 dpdk-tests/perf/40ge2p1xl710-eth-l2xcbase-testpmd-ndrpdrdisc.robot delete mode 100644 dpdk-tests/perf/__init__.robot delete mode 100644 nsh_sfc_tests/func/__init__.robot delete mode 100644 nsh_sfc_tests/func/proxy/eth2p-ethip4-nsh-proxy-inbound-func.robot delete mode 100644 nsh_sfc_tests/func/proxy/eth2p-ethip4-nsh-proxy-outbound-func.robot delete mode 100644 nsh_sfc_tests/func/sff/eth2p-ethip4-sfc-sff-func.robot delete mode 100755 nsh_sfc_tests/sfc_scripts/install_sfc.sh delete mode 100755 nsh_sfc_tests/sfc_scripts/set_nsh_proxy_inbound.sh delete mode 100755 nsh_sfc_tests/sfc_scripts/set_nsh_proxy_outbound.sh delete mode 100755 nsh_sfc_tests/sfc_scripts/set_sfc_sff.sh delete mode 100755 nsh_sfc_tests/sfc_scripts/start_tcpdump.sh delete mode 100644 resources/libraries/robot/DPDK/default.robot delete mode 100644 resources/libraries/robot/TLDK/TLDKUtils.robot delete mode 100644 resources/libraries/robot/bridge_domain.robot delete mode 100644 resources/libraries/robot/counters.robot create mode 100644 resources/libraries/robot/crypto/ipsec.robot delete mode 100644 resources/libraries/robot/default.robot delete mode 100644 resources/libraries/robot/dhcp_client.robot delete mode 100644 resources/libraries/robot/dhcp_proxy.robot delete mode 100644 resources/libraries/robot/double_qemu_setup.robot create mode 100644 resources/libraries/robot/dpdk/default.robot create mode 100644 resources/libraries/robot/features/dhcp_client.robot create mode 100644 resources/libraries/robot/features/dhcp_proxy.robot create mode 100644 resources/libraries/robot/features/policer.robot delete mode 100644 resources/libraries/robot/gre.robot delete mode 100644 resources/libraries/robot/interfaces.robot create mode 100644 resources/libraries/robot/ip/ip4.robot create mode 100644 resources/libraries/robot/ip/ip6.robot create mode 100644 resources/libraries/robot/ip/map.robot create mode 100644 resources/libraries/robot/ip/snat.robot delete mode 100644 resources/libraries/robot/ipsec.robot delete mode 100644 resources/libraries/robot/ipv4.robot delete mode 100644 resources/libraries/robot/ipv6.robot create mode 100644 resources/libraries/robot/l2/l2_bridge_domain.robot create mode 100644 resources/libraries/robot/l2/l2_traffic.robot create mode 100644 resources/libraries/robot/l2/l2_xconnect.robot create mode 100644 resources/libraries/robot/l2/tagging.robot delete mode 100644 resources/libraries/robot/l2_traffic.robot delete mode 100644 resources/libraries/robot/l2_xconnect.robot delete mode 100644 resources/libraries/robot/lisp/l2lisp.robot delete mode 100644 resources/libraries/robot/lisp/lisp_api.robot delete mode 100644 resources/libraries/robot/lisp/lisp_static_adjacency.robot delete mode 100644 resources/libraries/robot/lisp/lispgpe.robot delete mode 100644 resources/libraries/robot/lxc.robot delete mode 100644 resources/libraries/robot/map.robot create mode 100644 resources/libraries/robot/overlay/gre.robot create mode 100644 resources/libraries/robot/overlay/l2lisp.robot create mode 100644 resources/libraries/robot/overlay/lisp_api.robot create mode 100644 resources/libraries/robot/overlay/lisp_static_adjacency.robot create mode 100644 resources/libraries/robot/overlay/lispgpe.robot create mode 100644 resources/libraries/robot/overlay/vxlan.robot create mode 100644 resources/libraries/robot/performance/performance_configuration.robot create mode 100644 resources/libraries/robot/performance/performance_setup.robot create mode 100644 resources/libraries/robot/performance/performance_utils.robot delete mode 100644 resources/libraries/robot/performance_configuration.robot delete mode 100644 resources/libraries/robot/performance_setup.robot delete mode 100644 resources/libraries/robot/performance_utils.robot delete mode 100644 resources/libraries/robot/policer.robot delete mode 100644 resources/libraries/robot/qemu.robot create mode 100644 resources/libraries/robot/shared/counters.robot create mode 100644 resources/libraries/robot/shared/default.robot create mode 100644 resources/libraries/robot/shared/interfaces.robot create mode 100644 resources/libraries/robot/shared/lxc.robot create mode 100644 resources/libraries/robot/shared/testing_path.robot create mode 100644 resources/libraries/robot/shared/traffic.robot delete mode 100644 resources/libraries/robot/snat.robot delete mode 100644 resources/libraries/robot/tagging.robot delete mode 100644 resources/libraries/robot/testing_path.robot create mode 100644 resources/libraries/robot/tldk/tldk_utils.robot delete mode 100644 resources/libraries/robot/traffic.robot create mode 100644 resources/libraries/robot/vm/double_qemu_setup.robot create mode 100644 resources/libraries/robot/vm/qemu.robot delete mode 100644 resources/libraries/robot/vxlan.robot delete mode 100755 resources/tools/download_hc_build_pkgs.sh delete mode 100755 resources/tools/download_hc_pkgs.sh delete mode 100755 resources/tools/download_install_vpp_pkgs.sh delete mode 100644 resources/tools/download_install_vpp_rpms.sh delete mode 100755 resources/tools/download_nsh_sfc_pkgs.sh delete mode 100755 resources/tools/rename_robot_keywords.py delete mode 100755 resources/tools/robot_output_parser.py create mode 100755 resources/tools/scripts/download_hc_build_pkgs.sh create mode 100755 resources/tools/scripts/download_hc_pkgs.sh create mode 100755 resources/tools/scripts/download_install_vpp_pkgs.sh create mode 100644 resources/tools/scripts/download_install_vpp_rpms.sh create mode 100755 resources/tools/scripts/download_nsh_sfc_pkgs.sh create mode 100755 resources/tools/scripts/rename_robot_keywords.py create mode 100755 resources/tools/scripts/robot_output_parser.py create mode 100755 resources/tools/scripts/topo_installation.py create mode 100755 resources/tools/scripts/topo_reservation.py delete mode 100755 resources/tools/t-rex/stream_profiles/profile_trex_stateless_base_class.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-2n-ethip4-ip4src253.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst1.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst100.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst1000.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst10000.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst100000.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst1000000.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst253.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst253_l3fwd.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4src253.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4src254.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-1000u15p.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-100u15p.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-10u15p.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-1u15p.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-1u1p.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-2000u15p.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-4000u15p.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip6-ip6dst10000.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip6-ip6dst100000.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip6-ip6dst1000000.py delete mode 100755 resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip6-ip6src253.py delete mode 100755 resources/tools/t-rex/t-rex-installer.sh delete mode 100755 resources/tools/t-rex/t-rex-server-info.py delete mode 100755 resources/tools/t-rex/t-rex-stateless-profile.py delete mode 100755 resources/tools/t-rex/t-rex-stateless-stop.py delete mode 100755 resources/tools/topo_installation.py delete mode 100755 resources/tools/topo_reservation.py create mode 100755 resources/tools/trex/trex_installer.sh create mode 100755 resources/tools/trex/trex_server_info.py create mode 100755 resources/tools/trex/trex_stateless_profile.py create mode 100755 resources/tools/trex/trex_stateless_stop.py create mode 100755 resources/traffic_profiles/trex/profile_trex_stateless_base_class.py create mode 100755 resources/traffic_profiles/trex/trex-sl-2n-ethip4-ip4src253.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst1.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst100.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst1000.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst10000.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst100000.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst1000000.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst253.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst253_l3fwd.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4src253.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4src254.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-1000u15p.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-100u15p.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-10u15p.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-1u15p.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-1u1p.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-2000u15p.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-4000u15p.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip6-ip6dst10000.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip6-ip6dst100000.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip6-ip6dst1000000.py create mode 100755 resources/traffic_profiles/trex/trex-sl-3n-ethip6-ip6src253.py create mode 100755 tests/dpdk/dpdk_scripts/cleanup_dpdk.sh create mode 100755 tests/dpdk/dpdk_scripts/init_dpdk.sh create mode 100755 tests/dpdk/dpdk_scripts/install_dpdk.sh create mode 100755 tests/dpdk/dpdk_scripts/run_l2fwd.sh create mode 100755 tests/dpdk/dpdk_scripts/run_l3fwd.sh create mode 100644 tests/dpdk/perf/10ge2p1x520-eth-l2xcbase-testpmd-ndrpdrdisc.robot create mode 100644 tests/dpdk/perf/10ge2p1x520-ethip4-ip4base-l3fwd-ndrpdrdisc.robot create mode 100644 tests/dpdk/perf/10ge2p1x710-eth-l2xcbase-testpmd-ndrpdrdisc.robot create mode 100644 tests/dpdk/perf/40ge2p1xl710-eth-l2xcbase-testpmd-ndrpdrdisc.robot create mode 100644 tests/dpdk/perf/__init__.robot delete mode 100644 tests/func/__init__.robot delete mode 100644 tests/func/cop/eth2p-ethip4-ip4base-copblklistbase-func.robot delete mode 100644 tests/func/cop/eth2p-ethip4-ip4base-copwhlistbase-func.robot delete mode 100644 tests/func/cop/eth2p-ethip6-ip6base-copblklistbase-func.robot delete mode 100644 tests/func/cop/eth2p-ethip6-ip6base-copwhlistbase-func.robot delete mode 100644 tests/func/dhcp/eth2p-ethip4-ip4base-ip4dhcpclient-func.robot delete mode 100644 tests/func/dhcp/eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot delete mode 100644 tests/func/dhcp/eth2p-ethip6-ip6base-ip6dhcpproxy-func.robot delete mode 100644 tests/func/fds/eth2p-dot1q-l2bdbasemaclrn-eth-4vhost-2vm-fds-provider-nets-func.robot delete mode 100644 tests/func/fds/eth2p-ethip4vxlan-l2bdbasemaclrn--eth-4vhost-2vm-fds-tenant-nets-func.robot delete mode 100644 tests/func/gre/eth2p-ethip4gre-ip4base-func.robot delete mode 100644 tests/func/honeycomb/__init__.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-dhcp-apihc-apivat-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-policer-apihc-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-proxynd6-apihc-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-slaac-apihc-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot delete mode 100644 tests/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot delete mode 100644 tests/func/honeycomb/mgmt-notif-apihcnc-func.robot delete mode 100644 tests/func/honeycomb/mgmt-statepersist-apihc-func.robot delete mode 100644 tests/func/iacl/eth2p-eth-l2xcbase-iaclbase-func.robot delete mode 100644 tests/func/iacl/eth2p-ethip4-ip4base-iaclbase-func.robot delete mode 100644 tests/func/iacl/eth2p-ethip6-ip6base-iaclbase-func.robot delete mode 100644 tests/func/ipsec/eth2p-ethip4ipsectnl-ip4base-func.robot delete mode 100644 tests/func/ipsec/eth2p-ethip4ipsectpt-ip4base-func.robot delete mode 100644 tests/func/ipsec/eth2p-ethip6ipsectnl-ip6base-func.robot delete mode 100644 tests/func/ipsec/eth2p-ethip6ipsectpt-ip6base-func.robot delete mode 100644 tests/func/ipv4/eth2p-ethip4-ip4base-eth-2vhost-1vm.robot delete mode 100644 tests/func/ipv4/eth2p-ethip4-ip4base-func.robot delete mode 100644 tests/func/ipv4/eth2p-ethip4-ip4base-ip4arp-func.robot delete mode 100644 tests/func/ipv4/eth2p-ethip4-ip4base-ip4ecmp-func.robot delete mode 100644 tests/func/ipv4/eth2p-ethip4-ip4base-ip4proxyarp-func.robot delete mode 100644 tests/func/ipv6/eth2p-ethip6-ip6base-func.robot delete mode 100644 tests/func/ipv6/eth2p-ethip6-ip6base-ip6ecmp-func.robot delete mode 100644 tests/func/ipv6/eth2p-ethip6-ip6base-ip6ra-func.robot delete mode 100644 tests/func/l2bd/eth2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot delete mode 100644 tests/func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot delete mode 100644 tests/func/l2bd/eth2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot delete mode 100644 tests/func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot delete mode 100644 tests/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot delete mode 100644 tests/func/l2xc/eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot delete mode 100644 tests/func/l2xc/eth2p-eth-l2xcbase-func.robot delete mode 100644 tests/func/lisp/api-crud-lisp-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip4base-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6base-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip4lisp-ip4base-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip4lisp-l2bdbasemaclrn-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip4lispgpe-ip4base-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip4lispgpe-ip4basevrf-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip4lispgpe-ip6base-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip4lispgpe-ip6basevrf-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip4base-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip6base-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip6lisp-l2bdbasemaclrn-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip6lispgpe-ip4base-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip6lispgpe-ip6base-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot delete mode 100644 tests/func/lisp/eth2p-ethip6lispgpe-ip6basevrf-func.robot delete mode 100644 tests/func/policer/eth2p-ethip4-ip4base-ipolicemarkbase-func.robot delete mode 100644 tests/func/policer/eth2p-ethip6-ip6base-ipolicemarkbase-func.robot delete mode 100644 tests/func/rpf/eth2p-ethip4-ip4base-rpf-func.robot delete mode 100644 tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swirelw46-func.robot delete mode 100644 tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremape-func.robot delete mode 100644 tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremapt-func.robot delete mode 100644 tests/func/tap/api-crud-tap-func.robot delete mode 100644 tests/func/tap/eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot delete mode 100644 tests/func/tap/eth2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot delete mode 100644 tests/func/tap/eth2p-ethip4-ip4base-eth-1tap-func.robot delete mode 100644 tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixbase-func.robot delete mode 100644 tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixscale-func.robot delete mode 100644 tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixbase-func.robot delete mode 100644 tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixscale-func.robot delete mode 100644 tests/func/telemetry/span/eth2p-ethip4-ip4base-spanrx-func.robot delete mode 100644 tests/func/telemetry/span/eth2p-ethip6-ip6base-spanrx-func.robot delete mode 100644 tests/func/vhost/eth2p-ethip4-l2bdbase-vhost-client-reconnect-2vm-func.robot delete mode 100644 tests/func/vlan/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot delete mode 100644 tests/func/vlan/eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot delete mode 100644 tests/func/vlan/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot delete mode 100644 tests/func/vlan/eth2p-dot1ad-l2xcbase-func.robot delete mode 100644 tests/func/vlan/eth2p-dot1ad-l2xcbase-vlantrans22-func.robot delete mode 100644 tests/func/vlan/eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot delete mode 100644 tests/func/vlan/eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot delete mode 100644 tests/func/vlan/eth2p-dot1q-ip4base-func.robot delete mode 100644 tests/func/vlan/eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-func.robot delete mode 100644 tests/func/vlan/eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot delete mode 100644 tests/func/vlan/eth2p-dot1q-l2xcbase-vlantrans11-func.robot delete mode 100644 tests/func/vrf/eth2p-ethip4-ip4basevrf-func.robot delete mode 100644 tests/func/vrf/eth2p-ethip6-ip6basevrf-func.robot delete mode 100644 tests/func/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot delete mode 100644 tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot delete mode 100644 tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot delete mode 100644 tests/func/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot delete mode 100644 tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot delete mode 100644 tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot delete mode 100644 tests/func/vxlan/eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot delete mode 100644 tests/func/vxlan/eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot create mode 100644 tests/nsh_sfc/func/__init__.robot create mode 100644 tests/nsh_sfc/func/proxy/eth2p-ethip4-nsh-proxy-inbound-func.robot create mode 100644 tests/nsh_sfc/func/proxy/eth2p-ethip4-nsh-proxy-outbound-func.robot create mode 100644 tests/nsh_sfc/func/sff/eth2p-ethip4-sfc-sff-func.robot create mode 100755 tests/nsh_sfc/sfc_scripts/install_sfc.sh create mode 100755 tests/nsh_sfc/sfc_scripts/set_nsh_proxy_inbound.sh create mode 100755 tests/nsh_sfc/sfc_scripts/set_nsh_proxy_outbound.sh create mode 100755 tests/nsh_sfc/sfc_scripts/set_sfc_sff.sh create mode 100755 tests/nsh_sfc/sfc_scripts/start_tcpdump.sh delete mode 100644 tests/perf/10ge2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-dot1ad-l2xcbase-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk.robot delete mode 100644 tests/perf/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk.robot delete mode 100644 tests/perf/10ge2p1x520-dot1q-l2xcbase-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-pdrchk.robot delete mode 100644 tests/perf/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-pdrchk.robot delete mode 100644 tests/perf/10ge2p1x520-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-eth-l2xcbase-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-eth-l2xcbase-pdrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-pdrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4base-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4base-pdrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4scale200k-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4scale20k-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4scale2m-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4-ip4scale2m-pdrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4lispip4-ip4base-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4lispip4-ip4base-pdrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4lispip6-ip4base-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4lispip6-ip4base-pdrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-pdrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-pdrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6-ip6base-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6-ip6base-pdrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6-ip6scale200k-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6-ip6scale20k-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6-ip6scale2m-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6-ip6scale2m-pdrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6lispip4-ip6base-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6lispip4-ip6base-pdrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6lispip6-ip6base-ndrchk.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x520-ethip6lispip6-ip6base-pdrchk.robot delete mode 100644 tests/perf/10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot delete mode 100644 tests/perf/10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot delete mode 100644 tests/perf/40ge2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot delete mode 100644 tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot delete mode 100644 tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot delete mode 100644 tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot delete mode 100644 tests/perf/40ge2p1xl710-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot delete mode 100644 tests/perf/40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot delete mode 100644 tests/perf/40ge2p1xl710-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot delete mode 100644 tests/perf/40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot delete mode 100644 tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot delete mode 100644 tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot delete mode 100644 tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot delete mode 100644 tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot delete mode 100644 tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot delete mode 100644 tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot delete mode 100644 tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot delete mode 100644 tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot delete mode 100644 tests/perf/40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot delete mode 100644 tests/perf/40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot delete mode 100644 tests/perf/__init__.robot create mode 100644 tests/tldk/func/__init__.robot create mode 100644 tests/tldk/func/ipv4/ipv4_assemble.robot create mode 100644 tests/tldk/func/ipv4/ipv4_checksum.robot create mode 100644 tests/tldk/func/ipv4/ipv4_fragment.robot create mode 100644 tests/tldk/func/ipv6/ipv6_checksum.robot create mode 100644 tests/tldk/func/ipv6/ipv6_fragment.robot create mode 100755 tests/tldk/tldk_scripts/install_tldk.sh create mode 100755 tests/tldk/tldk_scripts/run_tldk.sh create mode 100644 tests/tldk/tldk_testconfig/test_ipv4_assemble_be.cfg create mode 100644 tests/tldk/tldk_testconfig/test_ipv4_assemble_fe.cfg create mode 100644 tests/tldk/tldk_testconfig/test_ipv4_checksum_be.cfg create mode 100644 tests/tldk/tldk_testconfig/test_ipv4_checksum_fe.cfg create mode 100644 tests/tldk/tldk_testconfig/test_ipv4_fragment_be.cfg create mode 100644 tests/tldk/tldk_testconfig/test_ipv4_fragment_fe.cfg create mode 100644 tests/tldk/tldk_testconfig/test_ipv6_checksum_be.cfg create mode 100644 tests/tldk/tldk_testconfig/test_ipv6_checksum_fe.cfg create mode 100644 tests/tldk/tldk_testconfig/test_ipv6_fragment_be.cfg create mode 100644 tests/tldk/tldk_testconfig/test_ipv6_fragment_fe.cfg create mode 100644 tests/vpp/func/__init__.robot create mode 100644 tests/vpp/func/crypto/eth2p-ethip4ipsectnl-ip4base-func.robot create mode 100644 tests/vpp/func/crypto/eth2p-ethip4ipsectpt-ip4base-func.robot create mode 100644 tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip4base-func.robot create mode 100644 tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip6base-func.robot create mode 100644 tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot create mode 100644 tests/vpp/func/crypto/eth2p-ethip6ipsectnl-ip6base-func.robot create mode 100644 tests/vpp/func/crypto/eth2p-ethip6ipsectpt-ip6base-func.robot create mode 100644 tests/vpp/func/crypto/eth2p-ethip6ipsectptlispgpe-ip4base-func.robot create mode 100644 tests/vpp/func/crypto/eth2p-ethip6ipsectptlispgpe-ip6base-func.robot create mode 100644 tests/vpp/func/honeycomb/__init__.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-dhcp-apihc-apivat-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-policer-apihc-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-proxynd6-apihc-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-slaac-apihc-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-notif-apihcnc-func.robot create mode 100644 tests/vpp/func/honeycomb/mgmt-statepersist-apihc-func.robot create mode 100644 tests/vpp/func/interfaces/api-crud-tap-func.robot create mode 100644 tests/vpp/func/interfaces/eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot create mode 100644 tests/vpp/func/interfaces/eth2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot create mode 100644 tests/vpp/func/interfaces/eth2p-ethip4-ip4base-eth-1tap-func.robot create mode 100644 tests/vpp/func/ip4/eth2p-dot1q-ip4base-func.robot create mode 100644 tests/vpp/func/ip4/eth2p-ethip4-ip4base-copblklistbase-func.robot create mode 100644 tests/vpp/func/ip4/eth2p-ethip4-ip4base-copwhlistbase-func.robot create mode 100644 tests/vpp/func/ip4/eth2p-ethip4-ip4base-func.robot create mode 100644 tests/vpp/func/ip4/eth2p-ethip4-ip4base-iaclbase-func.robot create mode 100644 tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4arp-func.robot create mode 100644 tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4dhcpclient-func.robot create mode 100644 tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot create mode 100644 tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4ecmp-func.robot create mode 100644 tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4proxyarp-func.robot create mode 100644 tests/vpp/func/ip4/eth2p-ethip4-ip4base-ipolicemarkbase-func.robot create mode 100644 tests/vpp/func/ip4/eth2p-ethip4-ip4base-rpf-func.robot create mode 100644 tests/vpp/func/ip4/eth2p-ethip4-ip4basevrf-func.robot create mode 100644 tests/vpp/func/ip4_tunnels/gre/eth2p-ethip4gre-ip4base-func.robot create mode 100644 tests/vpp/func/ip4_tunnels/lisp/api-crud-lisp-func.robot create mode 100644 tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lisp-ip4base-func.robot create mode 100644 tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lisp-l2bdbasemaclrn-func.robot create mode 100644 tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip4base-func.robot create mode 100644 tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip4basevrf-func.robot create mode 100644 tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip6base-func.robot create mode 100644 tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip6basevrf-func.robot create mode 100644 tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swirelw46-func.robot create mode 100644 tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremape-func.robot create mode 100644 tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremapt-func.robot create mode 100644 tests/vpp/func/ip4_tunnels/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot create mode 100644 tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot create mode 100644 tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot create mode 100644 tests/vpp/func/ip4_tunnels/vxlan/eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot create mode 100644 tests/vpp/func/ip6/eth2p-ethip6-ip6base-copblklistbase-func.robot create mode 100644 tests/vpp/func/ip6/eth2p-ethip6-ip6base-copwhlistbase-func.robot create mode 100644 tests/vpp/func/ip6/eth2p-ethip6-ip6base-func.robot create mode 100644 tests/vpp/func/ip6/eth2p-ethip6-ip6base-iaclbase-func.robot create mode 100644 tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6dhcpproxy-func.robot create mode 100644 tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6ecmp-func.robot create mode 100644 tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6ra-func.robot create mode 100644 tests/vpp/func/ip6/eth2p-ethip6-ip6base-ipolicemarkbase-func.robot create mode 100644 tests/vpp/func/ip6/eth2p-ethip6-ip6basevrf-func.robot create mode 100644 tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lisp-l2bdbasemaclrn-func.robot create mode 100644 tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip4base-func.robot create mode 100644 tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip6base-func.robot create mode 100644 tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip6basevrf-func.robot create mode 100644 tests/vpp/func/ip6_tunnels/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot create mode 100644 tests/vpp/func/ip6_tunnels/vxlan/eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot create mode 100644 tests/vpp/func/l2bd/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot create mode 100644 tests/vpp/func/l2bd/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot create mode 100644 tests/vpp/func/l2bd/eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot create mode 100644 tests/vpp/func/l2bd/eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot create mode 100644 tests/vpp/func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot create mode 100644 tests/vpp/func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot create mode 100644 tests/vpp/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot create mode 100644 tests/vpp/func/l2xc/eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot create mode 100644 tests/vpp/func/l2xc/eth2p-dot1ad-l2xcbase-func.robot create mode 100644 tests/vpp/func/l2xc/eth2p-dot1ad-l2xcbase-vlantrans22-func.robot create mode 100644 tests/vpp/func/l2xc/eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot create mode 100644 tests/vpp/func/l2xc/eth2p-dot1q-l2xcbase-vlantrans11-func.robot create mode 100644 tests/vpp/func/l2xc/eth2p-eth-l2xcbase-func.robot create mode 100644 tests/vpp/func/l2xc/eth2p-eth-l2xcbase-iaclbase-func.robot create mode 100644 tests/vpp/func/telemetry/eth2p-ethip4-ip4base-ip4ipfixbase-func.robot create mode 100644 tests/vpp/func/telemetry/eth2p-ethip4-ip4base-ip4ipfixscale-func.robot create mode 100644 tests/vpp/func/telemetry/eth2p-ethip4-ip4base-spanrx-func.robot create mode 100644 tests/vpp/func/telemetry/eth2p-ethip6-ip6base-ip6ipfixbase-func.robot create mode 100644 tests/vpp/func/telemetry/eth2p-ethip6-ip6base-ip6ipfixscale-func.robot create mode 100644 tests/vpp/func/telemetry/eth2p-ethip6-ip6base-spanrx-func.robot create mode 100644 tests/vpp/func/vm_vhost/ip4/eth2p-ethip4-ip4base-eth-2vhost-1vm.robot create mode 100644 tests/vpp/func/vm_vhost/ip4/eth2p-ethip4ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot create mode 100644 tests/vpp/func/vm_vhost/ip4/eth2p-ethip4ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot create mode 100644 tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot create mode 100644 tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot create mode 100644 tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot create mode 100644 tests/vpp/func/vm_vhost/ip6/eth2p-ethip6ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot create mode 100644 tests/vpp/func/vm_vhost/ip6/eth2p-ethip6ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot create mode 100644 tests/vpp/func/vm_vhost/ip6/eth2p-ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot create mode 100644 tests/vpp/func/vm_vhost/ip6/eth2p-ethip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot create mode 100644 tests/vpp/func/vm_vhost/l2bd/eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-func.robot create mode 100644 tests/vpp/func/vm_vhost/l2bd/eth2p-dot1q-l2bdbasemaclrn-eth-4vhost-2vm-fds-provider-nets-func.robot create mode 100644 tests/vpp/func/vm_vhost/l2bd/eth2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot create mode 100644 tests/vpp/func/vm_vhost/l2bd/eth2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot create mode 100644 tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4-l2bdbase-vhost-client-reconnect-2vm-func.robot create mode 100644 tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4vxlan-l2bdbasemaclrn--eth-4vhost-2vm-fds-tenant-nets-func.robot create mode 100644 tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot create mode 100644 tests/vpp/func/vm_vhost/l2bd/eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot create mode 100644 tests/vpp/func/vm_vhost/l2xc/eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot create mode 100644 tests/vpp/perf/__init__.robot create mode 100644 tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrchk.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrchk.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrchk.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ndrchk.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-pdrchk.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale200k-ndrchk.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale20k-ndrchk.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-ndrchk.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-pdrchk.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4/40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-ndrchk.robot create mode 100644 tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-pdrchk.robot create mode 100644 tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-ndrchk.robot create mode 100644 tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-pdrchk.robot create mode 100644 tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-pdrchk.robot create mode 100644 tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-ndrchk.robot create mode 100644 tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-pdrchk.robot create mode 100644 tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrchk.robot create mode 100644 tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrchk.robot create mode 100644 tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-ndrchk.robot create mode 100644 tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-pdrchk.robot create mode 100644 tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale200k-ndrchk.robot create mode 100644 tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale20k-ndrchk.robot create mode 100644 tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-ndrchk.robot create mode 100644 tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-pdrchk.robot create mode 100644 tests/vpp/perf/ip6/40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-ndrchk.robot create mode 100644 tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-pdrchk.robot create mode 100644 tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-ndrchk.robot create mode 100644 tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-pdrchk.robot create mode 100644 tests/vpp/perf/l2/10ge2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/l2/10ge2p1x520-dot1ad-l2xcbase-ndrchk.robot create mode 100644 tests/vpp/perf/l2/10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/l2/10ge2p1x520-dot1q-l2xcbase-ndrchk.robot create mode 100644 tests/vpp/perf/l2/10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-ndrchk.robot create mode 100644 tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-pdrchk.robot create mode 100644 tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-ndrchk.robot create mode 100644 tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-pdrchk.robot create mode 100644 tests/vpp/perf/l2/10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/l2/40ge2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/l2/40ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/l2/40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk.robot create mode 100644 tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk.robot create mode 100644 tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-pdrchk.robot create mode 100644 tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-pdrchk.robot create mode 100644 tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/vm_vhost/10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot create mode 100644 tests/vpp/perf/vm_vhost/40ge2p1xl710-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot diff --git a/TLDK-tests/func/__init__.robot b/TLDK-tests/func/__init__.robot deleted file mode 100644 index 8f95c6cd01..0000000000 --- a/TLDK-tests/func/__init__.robot +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Library | resources.libraries.python.TLDK.SetupTLDKTest -| Suite Setup | Setup TLDK Test | ${nodes} diff --git a/TLDK-tests/func/ipv4/ipv4_assemble.robot b/TLDK-tests/func/ipv4/ipv4_assemble.robot deleted file mode 100644 index 765e90085f..0000000000 --- a/TLDK-tests/func/ipv4/ipv4_assemble.robot +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.TrafficScriptExecutor -| Library | resources.libraries.python.TLDK.UdpTest -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/counters.robot -| Resource | resources/libraries/robot/TLDK/TLDKUtils.robot -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST | TLDK -| Documentation | *TLDK IPv4 assemble test suite.* -| ... -| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG with single link -| ... | between nodes. From this topology only TG and DUT1 nodes are used. -| ... | In VM environment, the DUT2 is not configured since the DUT1 is testing -| ... | with the pcap file that generated with the pcap_gen.py. There is no -| ... | packet going out to DUT2, udpfwd app is verified on DUT1 only. -| ... | This test case just use the pcap file for the UDP functional test. - -*** Variables *** -| ${tc01_file_prefix}= | test_ipv4_assemble - -*** Test Cases *** -| TC01: TLDK IPv4 assemble test case -| | Given Path for 2-node testing is set | ${nodes['TG']} | ${nodes['DUT1']} -| | And Pick out the port used to execute test -| | And Get the pcap data | ${tc01_file_prefix} -| | When Exec the udpfwd test | ${dut_node} | ${dut_port} -| | ... | ${tc01_file_prefix} | ${dest_ip} | ${is_ipv4} -| | ${pkt_count}= | Get the test result | ${dut_node} -| | ... | ${tc01_file_prefix} -| | ${result}= | Convert To Integer | ${pkt_count} -| | Then Should Be Equal As Integers | ${result} | 1 diff --git a/TLDK-tests/func/ipv4/ipv4_checksum.robot b/TLDK-tests/func/ipv4/ipv4_checksum.robot deleted file mode 100644 index 9e7dd97095..0000000000 --- a/TLDK-tests/func/ipv4/ipv4_checksum.robot +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.TrafficScriptExecutor -| Library | resources.libraries.python.TLDK.UdpTest -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/counters.robot -| Resource | resources/libraries/robot/TLDK/TLDKUtils.robot -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST | TLDK -| Documentation | *TLDK IPv4 checksum test suite.* -| ... -| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG with single link -| ... | between nodes. From this topology only TG and DUT1 nodes are used. -| ... | This test case just use the pcap file for the UDP functional test. - -*** Variables *** -| ${tc01_file_prefix}= | test_ipv4_checksum - -*** Test Cases *** -| TC01: TLDK IPv4 checksum test case -| | Given Path for 2-node testing is set | ${nodes['TG']} | ${nodes['DUT1']} -| | And Pick out the port used to execute test -| | And Get the pcap data | ${tc01_file_prefix} -| | When Exec the udpfwd test | ${dut_node} | ${dut_port} -| | ... | ${tc01_file_prefix} | ${dest_ip} | ${is_ipv4} -| | ${checksum}= | Get the test result | ${dut_node} -| | ... | ${tc01_file_prefix} -| | ${result}= | Convert To Integer | ${checksum} -| | Then Should Be Equal As Integers | ${result} | ${packet_num} diff --git a/TLDK-tests/func/ipv4/ipv4_fragment.robot b/TLDK-tests/func/ipv4/ipv4_fragment.robot deleted file mode 100644 index b060eecfb9..0000000000 --- a/TLDK-tests/func/ipv4/ipv4_fragment.robot +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.TrafficScriptExecutor -| Library | resources.libraries.python.TLDK.UdpTest -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/counters.robot -| Resource | resources/libraries/robot/TLDK/TLDKUtils.robot -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST | TLDK -| Documentation | *TLDK IPv4 fragment test suite.* -| ... -| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG with single link -| ... | between nodes. From this topology only TG and DUT1 nodes are used. -| ... | This test case just use the pcap file for the UDP functional test. - -*** Variables *** -| ${tc01_file_prefix}= | test_ipv4_fragment - -*** Test Cases *** -| TC01: TLDK IPv4 fragment test case -| | Given Path for 2-node testing is set | ${nodes['TG']} | ${nodes['DUT1']} -| | And Pick out the port used to execute test -| | And Get the pcap data | ${tc01_file_prefix} -| | When Exec the udpfwd test | ${dut_node} | ${dut_port} -| | ... | ${tc01_file_prefix} | ${dest_ip} | ${is_ipv4} -| | ${checksum}= | Get the test result | ${dut_node} -| | ... | ${tc01_file_prefix} -| | ${result}= | Convert To Integer | ${checksum} -| | Then Should Be Equal As Integers | ${result} | 990 diff --git a/TLDK-tests/func/ipv6/ipv6_checksum.robot b/TLDK-tests/func/ipv6/ipv6_checksum.robot deleted file mode 100644 index ac05d3c8ae..0000000000 --- a/TLDK-tests/func/ipv6/ipv6_checksum.robot +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.TrafficScriptExecutor -| Library | resources.libraries.python.TLDK.UdpTest -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/counters.robot -| Resource | resources/libraries/robot/TLDK/TLDKUtils.robot -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST | TLDK -| Documentation | *TLDK IPv6 checksum test suit.* -| ... -| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG with single link -| ... | between nodes. From this topology only TG and DUT1 nodes are used. -| ... | This test case just use the pcap file for the UDP functional test. - -*** Variables *** -| ${tc01_file_prefix}= | test_ipv6_checksum - -*** Test Cases *** -| TC01: TLDK IPv6 checksum test case -| | Given Path for 2-node testing is set | ${nodes['TG']} | ${nodes['DUT1']} -| | And Pick out the port used to execute test -| | And Get the pcap data | ${tc01_file_prefix} -| | When Exec the udpfwd test | ${dut_node} | ${dut_port} -| | ... | ${tc01_file_prefix} | ${dest_ip} | ${is_ipv4} -| | ${pkt_count}= | Get the test result | ${dut_node} -| | ... | ${tc01_file_prefix} -| | ${result}= | Convert To Integer | ${pkt_count} -| | Then Should Be Equal As Integers | ${result} | ${packet_num} diff --git a/TLDK-tests/func/ipv6/ipv6_fragment.robot b/TLDK-tests/func/ipv6/ipv6_fragment.robot deleted file mode 100644 index ef9610b4c6..0000000000 --- a/TLDK-tests/func/ipv6/ipv6_fragment.robot +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.TrafficScriptExecutor -| Library | resources.libraries.python.TLDK.UdpTest -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/counters.robot -| Resource | resources/libraries/robot/TLDK/TLDKUtils.robot -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST | TLDK -| Documentation | *TLDK IPv6 fragment test suite.* -| ... -| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG with single link -| ... | between nodes. From this topology only TG and DUT1 nodes are used. -| ... | This test case just use the pcap file for the UDP functional test. - -*** Variables *** -| ${tc01_file_prefix}= | test_ipv6_fragment - -*** Test Cases *** -| TC01: TLDK IPv6 fragment test case -| | Given Path for 2-node testing is set | ${nodes['TG']} | ${nodes['DUT1']} -| | And Pick out the port used to execute test -| | And Get the pcap data | ${tc01_file_prefix} -| | When Exec the udpfwd test | ${dut_node} | ${dut_port} -| | ... | ${tc01_file_prefix} | ${dest_ip} | ${is_ipv4} -| | ${pkt_count}= | Get the test result | ${dut_node} -| | ... | ${tc01_file_prefix} -| | ${result}= | Convert To Integer | ${pkt_count} -| | Then Should Be Equal As Integers | ${result} | ${970} diff --git a/TLDK-tests/tldk_scripts/install_tldk.sh b/TLDK-tests/tldk_scripts/install_tldk.sh deleted file mode 100755 index 0cc65f949e..0000000000 --- a/TLDK-tests/tldk_scripts/install_tldk.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash - -set -x - -DPDK_VERSION=16.11.1 - -ROOTDIR=/tmp/TLDK-testing -PWDDIR=$(pwd) -DPDK_DIR=dpdk -DPDK_PACKAGE=${DPDK_DIR}"-"${DPDK_VERSION}.tar.xz - -# compile and install the DPDK -cd ${ROOTDIR} -sudo tar xvf ${DPDK_PACKAGE} -sudo mv dpdk-stable-${DPDK_VERSION} dpdk -echo $PWD -echo ${DPDK_PACKAGE} -cd ./${DPDK_DIR} -sudo sed -i 's/^CONFIG_RTE_LIBRTE_PMD_PCAP=n/CONFIG_RTE_LIBRTE_PMD_PCAP=y/g' ./config/common_base -sudo make install T=x86_64-native-linuxapp-gcc -cd ${PWDDIR} - -# compile the TLDK -export RTE_SDK=${ROOTDIR}/${DPDK_DIR}/ -export RTE_TARGET=x86_64-native-linuxapp-gcc -cd ${ROOTDIR}/tldk -make all -cd ${PWDDIR} - -sudo killall -9 l4fwd 2>/dev/null - -sleep 5 - -pid=`pgrep l4fwd` -if [ "$pid" != "" ]; then - echo "terminate the l4fwd failed!" - exit 1 -fi - -# check and setup the hugepages -SYS_HUGEPAGE=$(cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages) -if [ ${SYS_HUGEPAGE} -lt 1024 ]; then - MOUNT=$(mount | grep /mnt/huge) - while [ "${MOUNT}" != "" ] - do - sudo umount /mnt/huge - sleep 1 - MOUNT=$(mount | grep /mnt/huge) - done - - echo 1024 | sudo tee /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages - echo 1024 | sudo tee /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages - - sudo mkdir -p /mnt/huge - sudo mount -t hugetlbfs nodev /mnt/huge/ - test $? -eq 0 || exit 1 -fi diff --git a/TLDK-tests/tldk_scripts/run_tldk.sh b/TLDK-tests/tldk_scripts/run_tldk.sh deleted file mode 100755 index 0f56f02dfc..0000000000 --- a/TLDK-tests/tldk_scripts/run_tldk.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash - -set -x - -ROOTDIR=/tmp/TLDK-testing -PWDDIR=$(pwd) - -rx_file=$1 -tx_file=$2 -nic_pci=$3 -fe_cfg=$4 -be_cfg=$5 -IPv4_addr=$6 -IPv6_addr=$7 - -echo $IPv4_addr - -#kill the l4fwd -sudo killall -9 l4fwd 2>/dev/null - -sleep 2 - -pid=`pgrep l4fwd` -if [ "$pid" != "" ]; then - echo "terminate the l4fwd failed!" - exit 1 -fi - -#mount the hugepages again -sudo umount /mnt/huge -sudo mount -t hugetlbfs nodev /mnt/huge/ -test $? -eq 0 || exit 1 - -sleep 2 - -#run the l4fwd with tag U -# need to install libpcap, libpcap-dev to use --vdev -cd ${ROOTDIR} -if [ "$IPv6_addr" == "NONE" ]; then -sudo sh -c "nohup ./tldk/x86_64-native-linuxapp-gcc/app/l4fwd --lcore='0' \ - -n 2 --vdev 'eth_pcap1,rx_pcap=${rx_file},tx_pcap=${tx_file}' \ - -b ${nic_pci} -- -P -U -R 0x1000 -S 0x1000 -s 0x20 -f ${fe_cfg} -b ${be_cfg} \ - port=0,lcore=0,rx_offload=0,tx_offload=0,ipv4=${IPv4_addr} &" -elif [ "$IPv4_addr" == "NONE" ]; then -sudo sh -c "nohup ./tldk/x86_64-native-linuxapp-gcc/app/l4fwd --lcore='0' \ - -n 2 --vdev 'eth_pcap1,rx_pcap=${rx_file},tx_pcap=${tx_file}' \ - -b ${nic_pci} -- -P -U -R 0x1000 -S 0x1000 -s 0x20 -f ${fe_cfg} -b ${be_cfg} \ - port=0,lcore=0,rx_offload=0,tx_offload=0,ipv6=${IPv6_addr} &" -fi - -cd ${PWDDIR} - -sleep 10 diff --git a/TLDK-tests/tldk_testconfig/test_ipv4_assemble_be.cfg b/TLDK-tests/tldk_testconfig/test_ipv4_assemble_be.cfg deleted file mode 100644 index 7f7cb8e8fe..0000000000 --- a/TLDK-tests/tldk_testconfig/test_ipv4_assemble_be.cfg +++ /dev/null @@ -1 +0,0 @@ -port=0,masklen=24,addr=192.168.1.56,mac=68:05:ca:27:d1:6a diff --git a/TLDK-tests/tldk_testconfig/test_ipv4_assemble_fe.cfg b/TLDK-tests/tldk_testconfig/test_ipv4_assemble_fe.cfg deleted file mode 100644 index f3531e0b3a..0000000000 --- a/TLDK-tests/tldk_testconfig/test_ipv4_assemble_fe.cfg +++ /dev/null @@ -1,2 +0,0 @@ -#udpfwd config file -lcore=0,op=echo,laddr=0.0.0.0,lport=0x8000,raddr=0.0.0.0,rport=0 diff --git a/TLDK-tests/tldk_testconfig/test_ipv4_checksum_be.cfg b/TLDK-tests/tldk_testconfig/test_ipv4_checksum_be.cfg deleted file mode 100644 index c4e39e064f..0000000000 --- a/TLDK-tests/tldk_testconfig/test_ipv4_checksum_be.cfg +++ /dev/null @@ -1,2 +0,0 @@ -port=0,masklen=24,addr=192.168.1.56,mac=68:05:ca:27:d1:6a -port=0,addr=2001:4860:b002::56,masklen=64,mac=68:05:ca:27:d1:6a diff --git a/TLDK-tests/tldk_testconfig/test_ipv4_checksum_fe.cfg b/TLDK-tests/tldk_testconfig/test_ipv4_checksum_fe.cfg deleted file mode 100644 index a8cd61b82c..0000000000 --- a/TLDK-tests/tldk_testconfig/test_ipv4_checksum_fe.cfg +++ /dev/null @@ -1,3 +0,0 @@ -#udpfwd config file -lcore=0,op=echo,laddr=0.0.0.0,lport=0x8000,raddr=0.0.0.0,rport=0 -lcore=0,op=echo,laddr=::,lport=0x8000,raddr=::,rport=0 diff --git a/TLDK-tests/tldk_testconfig/test_ipv4_fragment_be.cfg b/TLDK-tests/tldk_testconfig/test_ipv4_fragment_be.cfg deleted file mode 100644 index e769994319..0000000000 --- a/TLDK-tests/tldk_testconfig/test_ipv4_fragment_be.cfg +++ /dev/null @@ -1,2 +0,0 @@ -port=0,masklen=24,addr=192.168.1.56,mac=68:05:ca:27:d1:6a,mtu=1024 -port=0,addr=2001:4860:b002::56,masklen=64,mac=68:05:ca:27:d1:6a,mtu=1024 diff --git a/TLDK-tests/tldk_testconfig/test_ipv4_fragment_fe.cfg b/TLDK-tests/tldk_testconfig/test_ipv4_fragment_fe.cfg deleted file mode 100644 index a8cd61b82c..0000000000 --- a/TLDK-tests/tldk_testconfig/test_ipv4_fragment_fe.cfg +++ /dev/null @@ -1,3 +0,0 @@ -#udpfwd config file -lcore=0,op=echo,laddr=0.0.0.0,lport=0x8000,raddr=0.0.0.0,rport=0 -lcore=0,op=echo,laddr=::,lport=0x8000,raddr=::,rport=0 diff --git a/TLDK-tests/tldk_testconfig/test_ipv6_checksum_be.cfg b/TLDK-tests/tldk_testconfig/test_ipv6_checksum_be.cfg deleted file mode 100644 index c4e39e064f..0000000000 --- a/TLDK-tests/tldk_testconfig/test_ipv6_checksum_be.cfg +++ /dev/null @@ -1,2 +0,0 @@ -port=0,masklen=24,addr=192.168.1.56,mac=68:05:ca:27:d1:6a -port=0,addr=2001:4860:b002::56,masklen=64,mac=68:05:ca:27:d1:6a diff --git a/TLDK-tests/tldk_testconfig/test_ipv6_checksum_fe.cfg b/TLDK-tests/tldk_testconfig/test_ipv6_checksum_fe.cfg deleted file mode 100644 index 9553b7085c..0000000000 --- a/TLDK-tests/tldk_testconfig/test_ipv6_checksum_fe.cfg +++ /dev/null @@ -1,3 +0,0 @@ -#udpfwd config file -lcore=0,op=echo,laddr=0.0.0.0,lport=0x8000,raddr=0.0.0.0,rport=0 -lcore=0,op=echo,laddr=::,lport=0x8000,raddr=::,rport=0 diff --git a/TLDK-tests/tldk_testconfig/test_ipv6_fragment_be.cfg b/TLDK-tests/tldk_testconfig/test_ipv6_fragment_be.cfg deleted file mode 100644 index e769994319..0000000000 --- a/TLDK-tests/tldk_testconfig/test_ipv6_fragment_be.cfg +++ /dev/null @@ -1,2 +0,0 @@ -port=0,masklen=24,addr=192.168.1.56,mac=68:05:ca:27:d1:6a,mtu=1024 -port=0,addr=2001:4860:b002::56,masklen=64,mac=68:05:ca:27:d1:6a,mtu=1024 diff --git a/TLDK-tests/tldk_testconfig/test_ipv6_fragment_fe.cfg b/TLDK-tests/tldk_testconfig/test_ipv6_fragment_fe.cfg deleted file mode 100644 index 9553b7085c..0000000000 --- a/TLDK-tests/tldk_testconfig/test_ipv6_fragment_fe.cfg +++ /dev/null @@ -1,3 +0,0 @@ -#udpfwd config file -lcore=0,op=echo,laddr=0.0.0.0,lport=0x8000,raddr=0.0.0.0,rport=0 -lcore=0,op=echo,laddr=::,lport=0x8000,raddr=::,rport=0 diff --git a/bootstrap-TLDK.sh b/bootstrap-TLDK.sh index 7edaa4ef13..e060155f18 100755 --- a/bootstrap-TLDK.sh +++ b/bootstrap-TLDK.sh @@ -118,7 +118,7 @@ TLDK_TAR_FILE="tldk_depends.tar.gz" wget "fast.dpdk.org/rel/${DPDK_PACKAGE}" tar zcf ${TLDK_TAR_FILE} ${DPDK_PACKAGE} ./tldk/ \ - ./TLDK-tests/tldk_testconfig/ ./TLDK-tests/tldk_deplibs/ + ./tests/tldk/tldk_testconfig/ ./tests/tldk/tldk_deplibs/ cat ${VIRL_PKEY} # Copy the files to VIRL host @@ -195,7 +195,7 @@ fi PYTHONPATH=`pwd` pybot -L TRACE -W 150 \ -v TOPOLOGY_PATH:${SCRIPT_DIR}/topologies/enabled/topology.yaml \ - --suite "TLDK-tests.func" \ + --suite "tests.tldk.func" \ --include vm_envAND3_node_single_link_topo \ --noncritical EXPECTED_FAILING \ - TLDK-tests/ + tests/ diff --git a/bootstrap-hc2vpp-integration-odl.sh b/bootstrap-hc2vpp-integration-odl.sh index 76adc834d4..fc7f732008 100755 --- a/bootstrap-hc2vpp-integration-odl.sh +++ b/bootstrap-hc2vpp-integration-odl.sh @@ -119,7 +119,7 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Download VPP and HC packages from the current branch echo Downloading packages... -bash ${SCRIPT_DIR}/resources/tools/download_hc_pkgs.sh ${STREAM} ${OS} +bash ${SCRIPT_DIR}/resources/tools/scripts/download_hc_pkgs.sh ${STREAM} ${OS} if [ "${OS}" == "centos7" ]; then VPP_PKGS=(*.rpm) @@ -224,7 +224,7 @@ fi PYTHONPATH=`pwd` pybot -L TRACE -W 136\ -v TOPOLOGY_PATH:${SCRIPT_DIR}/topologies/enabled/topology.yaml \ - --suite "tests.func" \ + --suite "tests.vpp.func" \ --include HC_FUNC \ --exclude HC_REST_ONLY \ --noncritical EXPECTED_FAILING \ diff --git a/bootstrap-hc2vpp-integration.sh b/bootstrap-hc2vpp-integration.sh index ab5fa22a1d..075ac96356 100755 --- a/bootstrap-hc2vpp-integration.sh +++ b/bootstrap-hc2vpp-integration.sh @@ -118,7 +118,7 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Download VPP and HC packages from the current branch echo Downloading packages... -bash ${SCRIPT_DIR}/resources/tools/download_hc_pkgs.sh ${STREAM} ${OS} +bash ${SCRIPT_DIR}/resources/tools/scripts/download_hc_pkgs.sh ${STREAM} ${OS} if [ "${OS}" == "centos7" ]; then VPP_PKGS=(*.rpm) @@ -223,7 +223,7 @@ fi PYTHONPATH=`pwd` pybot -L TRACE -W 136\ -v TOPOLOGY_PATH:${SCRIPT_DIR}/topologies/enabled/topology.yaml \ - --suite "tests.func" \ + --suite "tests.vpp.func" \ --include HC_FUNC \ --noncritical EXPECTED_FAILING \ tests/ diff --git a/bootstrap-hc2vpp-verify-odl.sh b/bootstrap-hc2vpp-verify-odl.sh index 5bf15222f1..b065edc7c4 100755 --- a/bootstrap-hc2vpp-verify-odl.sh +++ b/bootstrap-hc2vpp-verify-odl.sh @@ -223,7 +223,7 @@ cp /nfs/common/karaf_${ODL} ~ PYTHONPATH=`pwd` pybot -L TRACE -W 136\ -v TOPOLOGY_PATH:${SCRIPT_DIR}/topologies/enabled/topology.yaml \ - --suite "tests.func" \ + --suite "tests.vpp.func" \ --include HC_FUNC \ --exclude HC_REST_ONLY \ --noncritical EXPECTED_FAILING \ diff --git a/bootstrap-hc2vpp-verify.sh b/bootstrap-hc2vpp-verify.sh index 196fb80ac3..b642da760f 100755 --- a/bootstrap-hc2vpp-verify.sh +++ b/bootstrap-hc2vpp-verify.sh @@ -219,7 +219,7 @@ fi PYTHONPATH=`pwd` pybot -L TRACE -W 136\ -v TOPOLOGY_PATH:${SCRIPT_DIR}/topologies/enabled/topology.yaml \ - --suite "tests.func" \ + --suite "tests.vpp.func" \ --include HC_FUNC \ --noncritical EXPECTED_FAILING \ tests/ diff --git a/bootstrap-nsh_sfc-functional-virl.sh b/bootstrap-nsh_sfc-functional-virl.sh index 35754bb143..f74942940e 100755 --- a/bootstrap-nsh_sfc-functional-virl.sh +++ b/bootstrap-nsh_sfc-functional-virl.sh @@ -127,7 +127,7 @@ done # Download VPP and NSH SFC packages from the current branch echo Downloading packages... -bash ${SCRIPT_DIR}/resources/tools/download_nsh_sfc_pkgs.sh ${STREAM} ${OS} +bash ${SCRIPT_DIR}/resources/tools/scripts/download_nsh_sfc_pkgs.sh ${STREAM} ${OS} if [ "${OS}" == "centos7" ]; then VPP_PKGS=(*.rpm) @@ -233,8 +233,8 @@ fi PYTHONPATH=`pwd` pybot -L TRACE -W 136\ -v TOPOLOGY_PATH:${SCRIPT_DIR}/topologies/enabled/topology.yaml \ - --suite "nsh_sfc_tests.func" \ + --suite "tests.nsh_sfc.func" \ --include vm_envAND3_node_single_link_topo \ --exclude PERFTEST \ --exclude SKIP_PATCH \ - nsh_sfc_tests/ + tests/ diff --git a/bootstrap-verify-perf-DPDK.sh b/bootstrap-verify-perf-DPDK.sh index 4ad3824aba..1b8a885258 100755 --- a/bootstrap-verify-perf-DPDK.sh +++ b/bootstrap-verify-perf-DPDK.sh @@ -46,7 +46,7 @@ pip install -r requirements.txt while :; do for TOPOLOGY in ${TOPOLOGIES}; do - python ${SCRIPT_DIR}/resources/tools/topo_reservation.py -t ${TOPOLOGY} + python ${SCRIPT_DIR}/resources/tools/scripts/topo_reservation.py -t ${TOPOLOGY} if [ $? -eq 0 ]; then WORKING_TOPOLOGY=${TOPOLOGY} echo "Reserved: ${WORKING_TOPOLOGY}" @@ -67,7 +67,7 @@ done #for DPDK test, we don't need to install the VPP deb function cancel_all { - python ${SCRIPT_DIR}/resources/tools/topo_reservation.py -c -t $1 + python ${SCRIPT_DIR}/resources/tools/scripts/topo_reservation.py -c -t $1 } # On script exit we cancel the reservation @@ -80,10 +80,10 @@ case "$TEST_TAG" in -L TRACE \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ -v DPDK_TEST:True \ - -s "dpdk-tests.perf" \ + -s "tests.dpdk.perf" \ --exclude SKIP_PATCH \ -i NDRPDRDISC \ - dpdk-tests/ + tests/dpdk/ RETURN_STATUS=$(echo $?) ;; PERFTEST_SHORT ) @@ -91,9 +91,9 @@ case "$TEST_TAG" in -L TRACE \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ -v DPDK_TEST:True \ - -s "dpdk-tests.perf" \ + -s "tests.dpdk.perf" \ -i NDRCHK \ - dpdk-tests/ + tests/dpdk/ RETURN_STATUS=$(echo $?) ;; PERFTEST_NIGHTLY ) @@ -102,8 +102,8 @@ case "$TEST_TAG" in -L TRACE \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ -v DPDK_TEST:True \ - -s "dpdk-tests.perf" \ - dpdk-tests/ + -s "tests.dpdk.perf" \ + tests/dpdk/ RETURN_STATUS=$(echo $?) ;; * ) @@ -112,15 +112,15 @@ case "$TEST_TAG" in -L TRACE \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ -v DPDK_TEST:True \ - -s "dpdk-tests.perf" \ - dpdk-tests/ + -s "tests.dpdk.perf" \ + tests/ RETURN_STATUS=$(echo $?) esac # Pybot output post-processing echo Post-processing test data... -python ${SCRIPT_DIR}/resources/tools/robot_output_parser.py \ +python ${SCRIPT_DIR}/resources/tools/scripts/robot_output_parser.py \ -i ${SCRIPT_DIR}/output.xml \ -o ${SCRIPT_DIR}/output_perf_data.xml if [ ! $? -eq 0 ]; then diff --git a/bootstrap-verify-perf.sh b/bootstrap-verify-perf.sh index 67986b8531..89af840593 100755 --- a/bootstrap-verify-perf.sh +++ b/bootstrap-verify-perf.sh @@ -41,7 +41,7 @@ then then # Download the latest VPP build .deb install packages echo Downloading VPP packages... - bash ${SCRIPT_DIR}/resources/tools/download_install_vpp_pkgs.sh --skip-install + bash ${SCRIPT_DIR}/resources/tools/scripts/download_install_vpp_pkgs.sh --skip-install VPP_DEBS="$( readlink -f *.deb | tr '\n' ' ' )" # Take vpp package and get the vpp version @@ -98,7 +98,7 @@ pip install -r requirements.txt while :; do for TOPOLOGY in ${TOPOLOGIES}; do - python ${SCRIPT_DIR}/resources/tools/topo_reservation.py -t ${TOPOLOGY} + python ${SCRIPT_DIR}/resources/tools/scripts/topo_reservation.py -t ${TOPOLOGY} if [ $? -eq 0 ]; then WORKING_TOPOLOGY=${TOPOLOGY} echo "Reserved: ${WORKING_TOPOLOGY}" @@ -118,15 +118,15 @@ while :; do done function cancel_all { - python ${SCRIPT_DIR}/resources/tools/topo_installation.py -c -d ${INSTALLATION_DIR} -t $1 - python ${SCRIPT_DIR}/resources/tools/topo_reservation.py -c -t $1 + python ${SCRIPT_DIR}/resources/tools/scripts/topo_installation.py -c -d ${INSTALLATION_DIR} -t $1 + python ${SCRIPT_DIR}/resources/tools/scripts/topo_reservation.py -c -t $1 } # On script exit we cancel the reservation and installation and delete all vpp # packages trap "cancel_all ${WORKING_TOPOLOGY}" EXIT -python ${SCRIPT_DIR}/resources/tools/topo_installation.py -t ${WORKING_TOPOLOGY} \ +python ${SCRIPT_DIR}/resources/tools/scripts/topo_installation.py -t ${WORKING_TOPOLOGY} \ -d ${INSTALLATION_DIR} \ -p ${VPP_DEBS} if [ $? -eq 0 ]; then @@ -141,7 +141,7 @@ case "$TEST_TAG" in PERFTEST_DAILY ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ --include ndrdiscANDnic_intel-x520-da2AND1t1cORndrdiscANDnic_intel-x520-da2AND2t2c \ tests/ RETURN_STATUS=$(echo $?) @@ -149,7 +149,7 @@ case "$TEST_TAG" in PERFTEST_SEMI_WEEKLY ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ --include ndrdiscANDnic_intel-x710AND1t1cORndrdiscANDnic_intel-x710AND2t2cORndrdiscANDnic_intel-xl710AND1t1cORndrdiscANDnic_intel-xl710AND2t2c \ tests/ RETURN_STATUS=$(echo $?) @@ -157,7 +157,7 @@ case "$TEST_TAG" in VERIFY-PERF-NDRDISC ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ --include ndrdiscAND1t1cORndrdiscAND2t2c \ tests/ RETURN_STATUS=$(echo $?) @@ -165,7 +165,7 @@ case "$TEST_TAG" in VERIFY-PERF-PDRDISC ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ --include pdrdiscAND1t1cORpdrdiscAND2t2c \ tests/ RETURN_STATUS=$(echo $?) @@ -173,7 +173,7 @@ case "$TEST_TAG" in VERIFY-PERF-NDRCHK ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ --include ndrchkAND1t1cORndrchkAND2t2c \ tests/ RETURN_STATUS=$(echo $?) @@ -181,7 +181,7 @@ case "$TEST_TAG" in PERFTEST_NDRCHK_DAILY ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ --include ndrchkAND1t1cORndrchkAND2t2c \ tests/ RETURN_STATUS=$(echo $?) @@ -189,7 +189,7 @@ case "$TEST_TAG" in VERIFY-PERF-IP4 ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ --include ndrdiscANDnic_intel-x520-da2AND1t1cANDip4baseORndrdiscANDnic_intel-x520-da2AND1t1cANDip4fwdANDfib_2m \ tests/ RETURN_STATUS=$(echo $?) @@ -197,7 +197,7 @@ case "$TEST_TAG" in VERIFY-PERF-IP6 ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ --include ndrdiscANDnic_intel-x520-da2AND1t1cANDip6baseORndrdiscANDnic_intel-x520-da2AND1t1cANDip6fwdANDfib_2m \ tests/ RETURN_STATUS=$(echo $?) @@ -205,7 +205,7 @@ case "$TEST_TAG" in VERIFY-PERF-L2 ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ --include ndrdiscANDnic_intel-x520-da2AND1t1cANDl2xcbaseORndrdiscANDnic_intel-x520-da2AND1t1cANDl2bdbase \ tests/ RETURN_STATUS=$(echo $?) @@ -213,7 +213,7 @@ case "$TEST_TAG" in VERIFY-PERF-LISP ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ --include ndrdiscANDnic_intel-x520-da2AND1t1cANDlisp \ tests/ RETURN_STATUS=$(echo $?) @@ -221,7 +221,7 @@ case "$TEST_TAG" in VERIFY-PERF-VXLAN ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ --include ndrdiscANDnic_intel-x520-da2AND1t1cANDvxlan \ tests/ RETURN_STATUS=$(echo $?) @@ -229,7 +229,7 @@ case "$TEST_TAG" in VERIFY-PERF-VHOST ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ --include ndrdiscANDnic_intel-x520-da2AND1t1cANDvhost \ tests/ RETURN_STATUS=$(echo $?) @@ -237,7 +237,7 @@ case "$TEST_TAG" in VPP-VERIFY-PERF-IP4 ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ --include pdrchkANDnic_intel-x520-da2AND1t1cANDip4baseORpdrchkANDnic_intel-x520-da2AND1t1cANDip4fwdANDfib_2m \ tests/ RETURN_STATUS=$(echo $?) @@ -245,7 +245,7 @@ case "$TEST_TAG" in VPP-VERIFY-PERF-IP6 ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ --include pdrchkANDnic_intel-x520-da2AND1t1cANDip6baseORpdrchkANDnic_intel-x520-da2AND1t1cANDip6fwdANDfib_2m \ tests/ RETURN_STATUS=$(echo $?) @@ -253,7 +253,7 @@ case "$TEST_TAG" in VPP-VERIFY-PERF-L2 ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ --include pdrchkANDnic_intel-x520-da2AND1t1cANDl2xcbaseORpdrchkANDnic_intel-x520-da2AND1t1cANDl2bdbase \ tests/ RETURN_STATUS=$(echo $?) @@ -261,7 +261,7 @@ case "$TEST_TAG" in VPP-VERIFY-PERF-LISP ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ --include pdrchkANDnic_intel-x520-da2AND1t1cANDlisp \ tests/ RETURN_STATUS=$(echo $?) @@ -269,7 +269,7 @@ case "$TEST_TAG" in VPP-VERIFY-PERF-VXLAN ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ --include pdrchkANDnic_intel-x520-da2AND1t1cANDvxlan \ tests/ RETURN_STATUS=$(echo $?) @@ -277,7 +277,7 @@ case "$TEST_TAG" in VPP-VERIFY-PERF-VHOST ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ --include pdrchkANDnic_intel-x520-da2AND1t1cANDvhost \ tests/ RETURN_STATUS=$(echo $?) @@ -285,7 +285,7 @@ case "$TEST_TAG" in PERFTEST_LONG ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ --exclude SKIP_PATCH \ -i NDRPDRDISC \ tests/ @@ -294,7 +294,7 @@ case "$TEST_TAG" in PERFTEST_SHORT ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ -i NDRCHK \ tests/ RETURN_STATUS=$(echo $?) @@ -303,7 +303,7 @@ case "$TEST_TAG" in #run all available tests pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ tests/ RETURN_STATUS=$(echo $?) ;; @@ -311,7 +311,7 @@ case "$TEST_TAG" in # run full performance test suite and exit on fail pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.perf" \ + -s "tests.vpp.perf" \ tests/ RETURN_STATUS=$(echo $?) esac @@ -319,7 +319,7 @@ esac # Pybot output post-processing echo Post-processing test data... -python ${SCRIPT_DIR}/resources/tools/robot_output_parser.py \ +python ${SCRIPT_DIR}/resources/tools/scripts/robot_output_parser.py \ -i ${SCRIPT_DIR}/output.xml \ -o ${SCRIPT_DIR}/output_perf_data.xml \ -v ${VPP_STABLE_VER} diff --git a/bootstrap-vpp-verify-semiweekly.sh b/bootstrap-vpp-verify-semiweekly.sh index a2c463c456..8f46ac6c0e 100644 --- a/bootstrap-vpp-verify-semiweekly.sh +++ b/bootstrap-vpp-verify-semiweekly.sh @@ -55,7 +55,7 @@ else # Download the latest VPP build install packages rm -f *.${PACKAGE} echo Downloading VPP packages... - bash ${SCRIPT_DIR}/resources/tools/download_install_vpp_pkgs.sh --skip-install + bash ${SCRIPT_DIR}/resources/tools/scripts/download_install_vpp_pkgs.sh --skip-install fi # Take vpp package and get the vpp version @@ -278,7 +278,7 @@ do pybot -L TRACE -W 136\ -v TOPOLOGY_PATH:${SCRIPT_DIR}/topologies/enabled/topology_VIRL.yaml \ - --suite "tests.func" \ + --suite "tests.vpp.func" \ --include vm_envAND3_node_single_link_topo \ --include vm_envAND3_node_double_link_topo \ --exclude PERFTEST \ diff --git a/bootstrap-vpp-verify-weekly.sh b/bootstrap-vpp-verify-weekly.sh index ecb0ab34ee..e2b04a9388 100644 --- a/bootstrap-vpp-verify-weekly.sh +++ b/bootstrap-vpp-verify-weekly.sh @@ -237,7 +237,7 @@ do echo ${test_set}. test loop PYTHONPATH=`pwd` pybot -L TRACE -W 136\ -v TOPOLOGY_PATH:${SCRIPT_DIR}/topologies/enabled/topology.yaml \ - --suite "tests.func" \ + --suite "tests.vpp.unc" \ --include vm_envAND3_node_single_link_topo \ --include vm_envAND3_node_double_link_topo \ --exclude PERFTEST \ diff --git a/bootstrap.sh b/bootstrap.sh index e8da341a0f..e3d80e7d56 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -92,8 +92,8 @@ VIRL_SERVER_EXPECTED_STATUS="PRODUCTION" SSH_OPTIONS="-i ${VIRL_PKEY} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o BatchMode=yes -o LogLevel=error" -TEST_GROUPS=("gre,ipv6,lisp,policer,rpf,softwire" "dhcp,ipsec,l2bd,l2xc,telemetry,vrf,vxlan" "cop,fds,honeycomb,iacl,ipv4,tap,vhost,vlan") -SUITE_PATH="tests.func" +TEST_GROUPS=("crypto,ip4_tunnels.softwire,ip4_tunnels.vxlan,telemetry" "ip4,ip4_tunnels.gre,ip4_tunnels.lisp,ip6_tunnels.vxlan,vm_vhost.ip4,vm_vhost.ip6" "interfaces,ip6,ip6_tunnels.lisp,l2bd,l2xc,vm_vhost.l2bd,vm_vhost.l2xc") +SUITE_PATH="tests.vpp.func" SKIP_PATCH="SKIP_PATCH" # Create tmp dir diff --git a/docs/directory_structure.md b/docs/directory_structure.md new file mode 100644 index 0000000000..b4065989d2 --- /dev/null +++ b/docs/directory_structure.md @@ -0,0 +1,537 @@ + +# Directory structure re-organization + +## Table of contents + +1. [The new structure](#the-new-structure) +1. [Tests](#tests) + 1. [Performance](#performance) + 1. [Functional](#functional) +1. [Keywords](#keywords) + 1. [L2 Robot keywords](#l2-robot-keywords) + 1. [L1 Python keywords](#l1-python-keywords) + +## The new structure + +### Tests +``` +$CSIT/ + tests/ + vpp/ + func/ + l2bd/ + l2xc/ + ip4/ + ip6/ + ip4_tunnels/ + ip6_tunnels/ + vm_vhost/ + crypto/ + interfaces/ + telemetry/ + honeycomb/ + perf/ + l2/ + ip4/ + ip6/ + ip4_tunnels/ + ip6_tunnels/ + vm_vhost/ + crypto/ + dpdk/ + func/ + perf/ + nsh_sfc/ + func/ + perf/ + tldk/ + func/ + perf/ +``` + +### Keywords +``` +$CSIT/ + resources/ + libraries/ + bash/ + python/ + packages/ (dirs): feature | area + modules/ + robot/ + shared/ + l2/ + ip/ + overlay/ + vm/ + crypto/ + dpdk/ + nsh_sfc/ + tldk/ + honeycomb/ + performance/ + telemetry/ + features/ + fds/ +``` + +*Notes:* +1. **l1/** - L1 will not be created, L1 KWs will be temporarily kept in L2 (their + current place) and asap refactored using Python +1. **l2/** - Not needed if we do not have l1/ + + +### Other resources +``` +$CSIT/ + resources/ + templates/ + vat/ + honeycomb/ + test_data/ + honeycomb/ + lisp/ + softwire/ + tools/ + disk_image_builder/ + doc_gen/ + report_gen/ + scripts/ + testbed_setup/ + topology/ + trex/ + vagrant/ + virl/ + topology_schemas/ + traffic_scripts/ + traffic_profiles/ + trex/ + ixia/ +``` + +## Tests + +### Performance + +#### L2 Ethernet Switching +``` +ls | grep -E "(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-(ndrpdrdisc|ndrchk|pdrchk)" +``` +``` +l2/ + 10ge2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot + 10ge2p1x520-dot1ad-l2xcbase-ndrchk.robot + 10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot + 10ge2p1x520-dot1q-l2xcbase-ndrchk.robot + 10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot + 10ge2p1x520-eth-l2bdbasemaclrn-ndrchk.robot + 10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot + 10ge2p1x520-eth-l2bdbasemaclrn-pdrchk.robot + 10ge2p1x520-eth-l2xcbase-ndrchk.robot + 10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot + 10ge2p1x520-eth-l2xcbase-pdrchk.robot + 10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot + 40ge2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot + 40ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot + 40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot +``` + +#### IPv4 Routed-Forwarding +``` +ls | grep -P 'ethip4(udp|)-ip4(base|scale)[a-z0-9]*(?!-eth-[0-9]vhost).*-(ndrpdrdisc|ndrchk|pdrchk)' +``` +``` +ip4/ + 10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrchk.robot + 10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot + 10ge2p1x520-ethip4-ip4base-iacldstbase-ndrchk.robot + 10ge2p1x520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot + 10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrchk.robot + 10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot + 10ge2p1x520-ethip4-ip4base-ndrchk.robot + 10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot + 10ge2p1x520-ethip4-ip4base-pdrchk.robot + 10ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot + 10ge2p1x520-ethip4-ip4scale200k-ndrchk.robot + 10ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot + 10ge2p1x520-ethip4-ip4scale20k-ndrchk.robot + 10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot + 10ge2p1x520-ethip4-ip4scale2m-ndrchk.robot + 10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot + 10ge2p1x520-ethip4-ip4scale2m-pdrchk.robot + 10ge2p1x520-ethip4udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot + 10ge2p1x520-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot + 10ge2p1x520-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot + 10ge2p1x520-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot + 10ge2p1x520-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot + 10ge2p1x520-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot + 40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot +``` + +#### IPv6 Routed-Forwarding +``` +ls | grep -E "ethip6-ip6(base|scale)[-a-z0-9]*-(ndrpdrdisc|ndrchk|pdrchk)" +``` +``` +ip6/ + 10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrchk.robot + 10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot + 10ge2p1x520-ethip6-ip6base-iacldstbase-ndrchk.robot + 10ge2p1x520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot + 10ge2p1x520-ethip6-ip6base-ndrchk.robot + 10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot + 10ge2p1x520-ethip6-ip6base-pdrchk.robot + 10ge2p1x520-ethip6-ip6scale200k-ndrchk.robot + 10ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot + 10ge2p1x520-ethip6-ip6scale20k-ndrchk.robot + 10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot + 10ge2p1x520-ethip6-ip6scale2m-ndrchk.robot + 10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot + 10ge2p1x520-ethip6-ip6scale2m-pdrchk.robot + 40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot +``` + +#### IPv4 Overlay Tunnels +``` +ls | grep -E "ethip4[a-z0-9]+-[a-z0-9]*-(ndrpdrdisc|ndrchk|pdrchk)" +``` +``` +ip4_tunnels/ + 10ge2p1x520-ethip4lispip4-ip4base-ndrchk.robot + 10ge2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot + 10ge2p1x520-ethip4lispip4-ip4base-pdrchk.robot + 10ge2p1x520-ethip4lispip6-ip4base-ndrchk.robot + 10ge2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot + 10ge2p1x520-ethip4lispip6-ip4base-pdrchk.robot + 10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot + 10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-pdrchk.robot + 10ge2p1x520-ethip4vxlan-l2xcbase-ndrchk.robot + 10ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot + 10ge2p1x520-ethip4vxlan-l2xcbase-pdrchk.robot +``` + +#### IPv6 Overlay Tunnels +``` +ls | grep -E "ethip6[a-z0-9]+-[a-z0-9]*-(ndrpdrdisc|ndrchk|pdrchk)" +``` +``` +ip6_tunnels/ + 10ge2p1x520-ethip6lispip4-ip6base-ndrchk.robot + 10ge2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot + 10ge2p1x520-ethip6lispip4-ip6base-pdrchk.robot + 10ge2p1x520-ethip6lispip6-ip6base-ndrchk.robot + 10ge2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot + 10ge2p1x520-ethip6lispip6-ip6base-pdrchk.robot +``` + +#### VM vhost Connections +``` +ls | grep -E ".*vhost.*-(ndrpdrdisc|ndrchk|pdrchk)" +``` +``` +vm_vhost/ + 10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot + 10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk.robot + 10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot + 10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk.robot + 10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-ndrpdrdisc.robot + 10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-pdrchk.robot + 10ge2p1x520-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot + 10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot + 10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot + 10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot + 10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot + 10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-pdrchk.robot + 10ge2p1x520-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot + 10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot + 40ge2p1xl710-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot + 40ge2p1xl710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot + 40ge2p1xl710-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot + 40ge2p1xl710-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot +``` + +#### IPSec Crypto HW: IP4 Routed-Forwarding +``` +ls | grep -E ".*ipsec.*-(ndrpdrdisc|ndrchk|pdrchk)" +``` +``` +crypto/ + 40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot + 40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot + 40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot + 40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot + 40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot + 40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot + 40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot + 40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot + 40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot +``` + +### Functional + +#### L2 Ethernet Switching +``` +l2bd/ + eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot + eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot + eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot + eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot + eth2p-eth-l2bdbasemaclrn-func.robot + eth2p-eth-l2bdbasemacstc-func.robot + eth4p-eth-l2bdbasemaclrn-l2shg-func.robot +``` + +``` +l2xc/ + eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot + eth2p-dot1ad-l2xcbase-func.robot + eth2p-dot1ad-l2xcbase-vlantrans22-func.robot + eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot + eth2p-dot1q-l2xcbase-vlantrans11-func.robot + eth2p-eth-l2xcbase-func.robot + eth2p-eth-l2xcbase-iaclbase-func.robot +``` + +#### IPv4 Routed-Forwarding +``` +ip4/ + eth2p-dot1q-ip4base-func.robot + eth2p-ethip4-ip4base-copblklistbase-func.robot + eth2p-ethip4-ip4base-copwhlistbase-func.robot + eth2p-ethip4-ip4base-func.robot + eth2p-ethip4-ip4base-iaclbase-func.robot + eth2p-ethip4-ip4base-ip4arp-func.robot + eth2p-ethip4-ip4base-ip4dhcpclient-func.robot + eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot + eth2p-ethip4-ip4base-ip4ecmp-func.robot + eth2p-ethip4-ip4base-ip4proxyarp-func.robot + eth2p-ethip4-ip4base-ipolicemarkbase-func.robot + eth2p-ethip4-ip4base-rpf-func.robot + eth2p-ethip4-ip4basevrf-func.robot +``` + +#### IPv6 Routed-Forwarding +``` +ip6/ + eth2p-ethip6-ip6base-copblklistbase-func.robot + eth2p-ethip6-ip6base-copwhlistbase-func.robot + eth2p-ethip6-ip6base-func.robot + eth2p-ethip6-ip6base-iaclbase-func.robot + eth2p-ethip6-ip6base-ip6dhcpproxy-func.robot + eth2p-ethip6-ip6base-ip6ecmp-func.robot + eth2p-ethip6-ip6base-ip6ra-func.robot + eth2p-ethip6-ip6base-ipolicemarkbase-func.robot + eth2p-ethip6-ip6basevrf-func.robot +``` + +#### IPv4 Overlay Tunnels +``` +ip4_tunnels/ + gre/ + eth2p-ethip4gre-ip4base-func.robot + lisp/ + api-crud-lisp-func.robot + eth2p-ethip4lispgpe-ip4base-func.robot + eth2p-ethip4lispgpe-ip4basevrf-func.robot + eth2p-ethip4lispgpe-ip6base-func.robot + eth2p-ethip4lispgpe-ip6basevrf-func.robot + eth2p-ethip4lisp-ip4base-func.robot + eth2p-ethip4lisp-l2bdbasemaclrn-func.robot + softwire/ + eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremapt-func.robot + eth2p-ethip4--ethip6ip4-ip4base--ip6base-swirelw46-func.robot + eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremape-func.robot + vxlan/ + eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot + eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot + eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot + eth2p-ethip4vxlan-l2xcbase-func.robot +``` + +#### IPv6 Overlay Tunnels +``` +ip6_tunnels/ + lisp/ + eth2p-ethip6lispgpe-ip6base-func.robot + eth2p-ethip6lispgpe-ip6basevrf-func.robot + eth2p-ethip6lispgpe-ip4base-func.robot + eth2p-ethip6lisp-l2bdbasemaclrn-func.robot + vxlan/ + eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot + eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot +``` + +#### VM vhost Connections +``` +vm_vhost/ + l2bd/ + eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-func.robot + eth2p-dot1q-l2bdbasemaclrn-eth-4vhost-2vm-fds-provider-nets-func.robot + eth2p-ethip4-l2bdbase-vhost-client-reconnect-2vm-func.robot + eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot + eth2p-ethip4vxlan-l2bdbasemaclrn--eth-4vhost-2vm-fds-tenant-nets-func.robot + eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot + eth2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot + eth2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot + l2xc/ + eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot + ip4/ + eth2p-ethip4-ip4base-eth-2vhost-1vm.robot + eth2p-ethip4ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot + eth2p-ethip4ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot + eth2p-ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot + eth2p-ethip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot + eth2p-ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot + ip6/ + eth2p-ethip6ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot + eth2p-ethip6ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot + eth2p-ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot + eth2p-ethip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot +``` + +#### Crypto HW: IP4 Routed-Forwarding +``` +crypto/ + eth2p-ethip4ipsectnl-ip4base-func.robot + eth2p-ethip4ipsectpt-ip4base-func.robot + eth2p-ethip4ipsectptlispgpe-ip4base-func.robot + eth2p-ethip4ipsectptlispgpe-ip6base-func.robot + eth2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot + eth2p-ethip6ipsectnl-ip6base-func.robot + eth2p-ethip6ipsectpt-ip6base-func.robot + eth2p-ethip6ipsectptlispgpe-ip4base-func.robot + eth2p-ethip6ipsectptlispgpe-ip6base-func.robot +``` + +#### Honecomb +``` +honeycomb/ + __init__.robot + mgmt-cfg-l2fib-apihc-apivat-func.robot + mgmt-cfg-slaac-apihc-func.robot + mgmt-cfg-l2bd-apihc-apivat-func.robot + mgmt-cfg-lisp-apihc-apivat-func.robot + mgmt-cfg-intip4-intip6-apihc-apivat-func.robot + mgmt-cfg-nsh-apihc-apivat-func.robot + mgmt-cfg-proxyarp-apihc-func.robot + mgmt-cfg-int-subint-apihc-apivat-func.robot + mgmt-cfg-snat44-apihc-apivat-func.robot + mgmt-cfg-vxlangpe-apihc-apivat-func.robot + mgmt-cfg-pluginacl-apihc-apivat-func.robot + mgmt-cfg-dhcp-apihc-apivat-func.robot + mgmt-cfg-inttap-apihc-apivat-func.robot + mgmt-cfg-routing-apihc-apivat-func.robot + mgmt-cfg-spanrx-apihc-apivat-func.robot + mgmt-cfg-vxlan-apihc-apivat-func.robot + mgmt-cfg-policer-apihc-func.robot + mgmt-cfg-intvhost-apihc-apivat-func.robot + mgmt-notif-apihcnc-func.robot + mgmt-cfg-proxynd6-apihc-func.robot + mgmt-cfg-pbb-apihc-apivat-func.robot + mgmt-statepersist-apihc-func.robot + mgmt-cfg-int-apihcnc-func.robot + mgmt-cfg-acl-apihc-apivat-func.robot +``` + +#### Telemetry +``` +telemetry/ + eth2p-ethip4-ip4base-ip4ipfixbase-func.robot + eth2p-ethip4-ip4base-ip4ipfixscale-func.robot + eth2p-ethip4-ip4base-spanrx-func.robot + eth2p-ethip6-ip6base-ip6ipfixbase-func.robot + eth2p-ethip6-ip6base-ip6ipfixscale-func.robot + eth2p-ethip6-ip6base-spanrx-func.robot +``` + +#### Interface +``` +interfaces/ + api-crud-tap-func.robot + eth2p-ethip4-ip4base-eth-1tap-func.robot + eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot + eth2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot +``` + + +## Keywords + +### L2 Robot keywords +``` +shared/ + counters.robot + default.robot + interfaces.robot + traffic.robot + testing_path.robot + lxc.robot +l2/ + bridge_domain.robot + l2_traffic.robot + l2_xconnect.robot + tagging.robot +ip/ + ipv4.robot + ipv6.robot + snat.robot + map.robot +overlay/ + gre.robot + lisp_static_adjacency.robot + lispgpe.robot + l2lisp.robot + lisp_api.robot + vxlan.robot +vm/ + double_qemu_setup.robot + qemu.robot +crypto/ + ipsec.robot +dpdk/ + default.robot +nsh_sfc/ + default.robot +tldk/ + TLDKUtils.robot +honeycomb/ + policer.robot + nat.robot + port_mirroring.robot + vhost_user.robot + netconf.robot + nsh.robot + vxlan.robot + dhcp.robot + slaac.robot + notifications.robot + routing.robot + access_control_lists.robot + tap.robot + interfaces.robot + honeycomb.robot + persistence.robot + sub_interface.robot + provider_backbone_bridge.robot + vxlan_gpe.robot + proxyarp.robot + bridge_domain.robot + lisp.robot + l2_fib.robot +performance/ + performance_configuration.robot + performance_utils.robot + performance_setup.robot +telemetry/ + span.robot + ipfix.robot +features/ + policer.robot + dhcp_client.robot + dhcp_proxy.robot +fds/ + default.robot +``` + +### L1 Python keywords + +No changes at this stage. diff --git a/docs/qemu_vpp_vm b/docs/qemu_vpp_vm index 4b47f90009..7f99231e15 100644 --- a/docs/qemu_vpp_vm +++ b/docs/qemu_vpp_vm @@ -28,13 +28,13 @@ because ttyS0 is used by serial console and ttyS1 is dedicated for qemu-guest-agent in QEMU setup. There is python library for QEMU setup, start and some utilities "resources/libraries/python/QemuUtils.py" and keyword "Stop and Clear QEMU" for -teardown in resources/libraries/robot/qemu.robot. "Qemu Start" setup one +teardown in resources/libraries/robot/vm/qemu.robot. "Qemu Start" setup one management interface by default. You can add Vhost-user interfaces by "Qemu Add Vhost User If" keyword. Example usage in robot framework test: *** Settings *** -| Resource | resources/libraries/robot/qemu.robot +| Resource | resources/libraries/robot/vm/qemu.robot *** Test Cases *** | VM test @@ -45,5 +45,5 @@ Example usage in robot framework test: | | ${vm}= | Qemu Start | | [Teardown] | Stop and Clear QEMU | ${dut1} | ${vm} -Note that VPP must be started and cofigured before starting the VM when using +Note that VPP must be started and configured before starting the VM when using Vhost-user interfaces. diff --git a/dpdk-tests/dpdk_scripts/cleanup_dpdk.sh b/dpdk-tests/dpdk_scripts/cleanup_dpdk.sh deleted file mode 100755 index 48e1a29b63..0000000000 --- a/dpdk-tests/dpdk_scripts/cleanup_dpdk.sh +++ /dev/null @@ -1,90 +0,0 @@ -#!/bin/bash - -set -x - -# Setting variables -DPDK_VERSION=dpdk-17.05 -ROOTDIR=/tmp/openvpp-testing -TESTPMDLOG=screenlog.0 -PWDDIR=$(pwd) - -# Setting command line arguments -port1_driver=$1 -port1_pci=$2 -port2_driver=$3 -port2_pci=$4 - -# Try to kill the testpmd -sudo pgrep testpmd -if [ $? -eq "0" ]; then - success=false - sudo pkill testpmd - echo "RC = $?" - for attempt in {1..5}; do - echo "Checking if testpmd is still alive, attempt nr ${attempt}" - sudo pgrep testpmd - if [ $? -eq "1" ]; then - echo "testpmd is dead" - success=true - break - fi - echo "testpmd is still alive, waiting 1 second" - sleep 1 - done - if [ "$success" = false ]; then - echo "The command sudo pkill testpmd failed" - sudo pkill -9 testpmd - echo "RC = $?" - exit 1 - fi -else - echo "testpmd is not running" -fi - -#also kill the l3fwd -sudo pgrep l3fwd -if [ $? -eq "0" ]; then - success=false - sudo pkill l3fwd - echo "RC = $?" - for attempt in {1..5}; do - echo "Checking if l3fwd is still alive, attempt nr ${attempt}" - sudo pgrep l3fwd - if [ $? -eq "1" ]; then - echo "l3fwd is dead" - success=true - break - fi - echo "l3fwd is still alive, waiting 1 second" - sleep 1 - done - if [ "$success" = false ]; then - echo "The command sudo pkill l3fwd failed" - sudo pkill -9 l3fwd - echo "RC = $?" - exit 1 - fi -else - echo "l3fwd is not running" -fi - -# Remove hugepages -sudo rm -f /dev/hugepages/* - -# Unbind interfaces -cd ${ROOTDIR}/${DPDK_VERSION}/ -sudo ./usertools/dpdk-devbind.py -b ${port1_driver} ${port1_pci} || \ - { echo "Unbind ${port1_pci} failed"; exit 1; } -sudo ./usertools/dpdk-devbind.py -b ${port2_driver} ${port2_pci} || \ - { echo "Unbind ${port1_pci} failed"; exit 1; } - -sleep 2 - -if1_name=`./usertools/dpdk-devbind.py --s | grep "${port1_pci}" | sed -n 's/.*if=\(\S\)/\1/p' | awk -F' ' '{print $1}'` -if2_name=`./usertools/dpdk-devbind.py --s | grep "${port2_pci}" | sed -n 's/.*if=\(\S\)/\1/p' | awk -F' ' '{print $1}'` - -# Remove igb_uio driver -rmmod igb_uio || \ - { echo "Removing igb_uio failed"; exit 1; } - -cd ${PWDDIR} diff --git a/dpdk-tests/dpdk_scripts/init_dpdk.sh b/dpdk-tests/dpdk_scripts/init_dpdk.sh deleted file mode 100755 index bc4870e73e..0000000000 --- a/dpdk-tests/dpdk_scripts/init_dpdk.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash - -set -x - -# Setting variables -DPDK_VERSION=dpdk-17.05 -ROOTDIR=/tmp/openvpp-testing -PWDDIR=$(pwd) -cd ${ROOTDIR}/${DPDK_VERSION}/ - -modprobe uio -echo "RC = $?" - -lsmod | grep igb_uio -if [ $? -ne 1 ]; -then - rmmod igb_uio || \ - { echo "Failed to remove igb_uio module"; exit 1; } -fi - -lsmod | grep uio_pci_generic -if [ $? -ne 1 ]; -then - rmmod uio_pci_generic || \ - { echo "Failed to remove uio_pci_generic module"; exit 1; } -fi - -insmod ./x86_64-native-linuxapp-gcc/kmod/igb_uio.ko || \ - { echo "Failed to insert igb_uio module"; exit 1; } - -# Binding -./usertools/dpdk-devbind.py -b igb_uio $1 $2 || \ - { echo "Failed to bind interface $1 and $2 to igb_uio"; exit 1; } - -cd ${PWDDIR} diff --git a/dpdk-tests/dpdk_scripts/install_dpdk.sh b/dpdk-tests/dpdk_scripts/install_dpdk.sh deleted file mode 100755 index 126e8cafc0..0000000000 --- a/dpdk-tests/dpdk_scripts/install_dpdk.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash - -set -x - -# Setting variables -DPDK_VERSION=dpdk-17.05 -DPDK_DIR=${DPDK_VERSION} -DPDK_PACKAGE=${DPDK_DIR}.tar.xz -ROOTDIR=/tmp/openvpp-testing -PWDDIR=$(pwd) - -# Download the DPDK package -cd ${ROOTDIR} -wget "fast.dpdk.org/rel/${DPDK_PACKAGE}" || \ - { echo "Failed to download $DPDK_PACKAGE"; exit 1; } -tar xJvf ${DPDK_PACKAGE} || \ - { echo "Failed to extract $DPDK_PACKAGE"; exit 1; } - -# Compile the DPDK -cd ./${DPDK_DIR} -sudo sed -i 's/^CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n/CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=y/g' ./config/common_base -make install T=x86_64-native-linuxapp-gcc -j || \ - { echo "Failed to compile $DPDK_VERSION"; exit 1; } -cd ${PWDDIR} - -# Compile the l3fwd -export RTE_SDK=${ROOTDIR}/${DPDK_DIR}/ -export RTE_TARGET=x86_64-native-linuxapp-gcc -cd ${RTE_SDK}/examples/l3fwd -sudo sed -i 's/^#define RTE_TEST_RX_DESC_DEFAULT 128/#define RTE_TEST_RX_DESC_DEFAULT 2048/g' ./main.c -sudo sed -i 's/^#define RTE_TEST_TX_DESC_DEFAULT 512/#define RTE_TEST_TX_DESC_DEFAULT 2048/g' ./main.c -make -j || \ - { echo "Failed to compile l3fwd"; exit 1; } -cd ${PWDDIR} - -# Check and setup the hugepages -SYS_HUGEPAGE=$(cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages) -echo " SYS_HUGEPAGE = ${SYS_HUGEPAGE}" -if [ ${SYS_HUGEPAGE} -lt 4096 ]; then - echo " It is not enough, should be at least 4096" - MOUNT=$(mount | grep /mnt/huge) - while [ "${MOUNT}" != "" ] - do - sudo umount /mnt/huge - sleep 1 - MOUNT=$(mount | grep /mnt/huge) - done - - echo 2048 | sudo tee /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages - echo 2048 | sudo tee /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages - - echo " Mounting hugepages" - sudo mkdir -p /mnt/huge - sudo mount -t hugetlbfs nodev /mnt/huge/ || \ - { echo "Failed to mount hugepages"; exit 1; } -fi - -# Check and set the max map count -SYS_MAP=$(cat /proc/sys/vm/max_map_count) - -if [ ${SYS_MAP} -lt 200000 ]; then - echo 200000 | sudo tee /proc/sys/vm/max_map_count -fi diff --git a/dpdk-tests/dpdk_scripts/run_l2fwd.sh b/dpdk-tests/dpdk_scripts/run_l2fwd.sh deleted file mode 100755 index 20c41d6d6f..0000000000 --- a/dpdk-tests/dpdk_scripts/run_l2fwd.sh +++ /dev/null @@ -1,115 +0,0 @@ -#!/bin/bash - -set -x - -# Setting variables -DPDK_VERSION=dpdk-17.05 -ROOTDIR=/tmp/openvpp-testing -TESTPMDLOG=screenlog.0 -PWDDIR=$(pwd) - -# Setting command line arguments -cpu_corelist=$1 -nb_cores=$2 -queue_nums=$3 -jumbo_frames=$4 - -# Try to kill the testpmd -sudo pgrep testpmd -if [ $? -eq "0" ]; then - success=false - sudo pkill testpmd - echo "RC = $?" - for attempt in {1..5}; do - echo "Checking if testpmd is still alive, attempt nr ${attempt}" - sudo pgrep testpmd - if [ $? -eq "1" ]; then - echo "testpmd is dead" - success=true - break - fi - echo "testpmd is still alive, waiting 1 second" - sleep 1 - done - if [ "$success" = false ]; then - echo "The command sudo pkill testpmd failed" - sudo pkill -9 testpmd - echo "RC = $?" - exit 1 - fi -else - echo "testpmd is not running" -fi - -# Try to kill the l3fwd -sudo pgrep l3fwd -if [ $? -eq "0" ]; then - success=false - sudo pkill l3fwd - echo "RC = $?" - for attempt in {1..5}; do - echo "Checking if l3fwd is still alive, attempt nr ${attempt}" - sudo pgrep l3fwd - if [ $? -eq "1" ]; then - echo "l3fwd is dead" - success=true - break - fi - echo "l3fwd is still alive, waiting 1 second" - sleep 1 - done - if [ "$success" = false ]; then - echo "The command sudo pkill l3fwd failed" - sudo pkill -9 l3fwd - echo "RC = $?" - exit 1 - fi -else - echo "l3fwd is not running" -fi - -# Remove hugepages -sudo rm -f /dev/hugepages/* - -sleep 2 - -cd ${ROOTDIR}/${DPDK_VERSION}/ -rm -f ${TESTPMDLOG} -if [ "$jumbo_frames" = "yes" ]; then - sudo sh -c "screen -dmSL DPDK-test ./x86_64-native-linuxapp-gcc/app/testpmd \ - -l ${cpu_corelist} -n 4 -- \ - --numa \ - --nb-ports=2 \ - --portmask=0x3 \ - --nb-cores=${nb_cores} \ - --max-pkt-len=9000 \ - --txqflags=0 \ - --forward-mode=io \ - --rxq=${queue_nums} \ - --txq=$((${nb_cores} + 1)) \ - --burst=64 \ - --rxd=1024 \ - --txd=1024 \ - --disable-link-check \ - --auto-start" -else - sudo sh -c "screen -dmSL DPDK-test ./x86_64-native-linuxapp-gcc/app/testpmd \ - -l ${cpu_corelist} -n 4 -- \ - --numa \ - --nb-ports=2 \ - --portmask=0x3 \ - --nb-cores=${nb_cores} \ - --forward-mode=io \ - --rxq=${queue_nums} \ - --txq=$((${nb_cores} + 1)) \ - --burst=64 \ - --rxd=1024 \ - --txd=1024 \ - --disable-link-check \ - --auto-start" -fi - -sleep 10 -less -r ${TESTPMDLOG} - -cd ${PWDDIR} diff --git a/dpdk-tests/dpdk_scripts/run_l3fwd.sh b/dpdk-tests/dpdk_scripts/run_l3fwd.sh deleted file mode 100755 index 3363d71875..0000000000 --- a/dpdk-tests/dpdk_scripts/run_l3fwd.sh +++ /dev/null @@ -1,104 +0,0 @@ -#!/bin/bash - -set -x - -# Setting variables -DPDK_VERSION=dpdk-17.05 -ROOTDIR=/tmp/openvpp-testing -L3FWDLOG=screenlog.0 -PWDDIR=$(pwd) - -cpu_corelist=$1 -port_config=$2 -adj_mac0=$3 -adj_mac1=$4 -jumbo_frames=$5 - -SCRIPT_NAME=$(basename $0) - -# define a function to get the l3fwd PID -function get_l3fwd_pid() -{ - pid_l3fwd=`sudo ps -elf | grep l3fwd | grep -v grep | grep -v SCREEN | grep -v ${SCRIPT_NAME} | awk '{print $4}'` - echo ${pid_l3fwd} -} - -# Try to kill the l3fwd -# Don't use the pgrep and pkill -l3fwd_pid=`get_l3fwd_pid` -echo ${l3fwd_pid} -if [ ! -z ${l3fwd_pid} ]; then - success=false - sudo kill -15 ${l3fwd_pid} - echo "RC = $?" - for attempt in {1..5}; do - echo "Checking if l3fwd is still alive, attempt nr ${attempt}" - l3fwd_pid=`get_l3fwd_pid` - if [ -z ${l3fwd_pid} ]; then - echo "l3fwd is dead" - success=true - break - fi - echo "l3fwd is still alive, waiting 1 second" - sleep 1 - done - if [ "$success" = false ]; then - echo "The command sudo kill -15 l3fwd failed" - sudo kill -9 ${l3fwd_pid} - echo "RC = $?" - exit 1 - fi -else - echo "l3fwd is not running" -fi - -# Try to kill the testpmd -sudo pgrep testpmd -if [ $? -eq "0" ]; then - success=false - sudo pkill testpmd - echo "RC = $?" - for attempt in {1..5}; do - echo "Checking if testpmd is still alive, attempt nr ${attempt}" - sudo pgrep testpmd - if [ $? -eq "1" ]; then - echo "testpmd is dead" - success=true - break - fi - echo "testpmd is still alive, waiting 1 second" - sleep 1 - done - if [ "$success" = false ]; then - echo "The command sudo pkill testpmd failed" - sudo pkill -9 testpmd - echo "RC = $?" - exit 1 - fi -else - echo "testpmd is not running" -fi - -sudo rm -f /dev/hugepages/* - -sleep 2 - -#run the l3fwd -cd ${ROOTDIR}/${DPDK_VERSION}/ -rm -f ${L3FWDLOG} -if [ "$jumbo_frames" = "yes" ]; then - sudo sh -c "screen -dmSL DPDK-test ./examples/l3fwd/build/app/l3fwd \ - -l ${cpu_corelist} -n 4 -- -P -L -p 0x3 --config='${port_config}' \ - --enable-jumbo --max-pkt-len=9000 --eth-dest=0,${adj_mac0} \ - --eth-dest=1,${adj_mac1} --parse-ptype" -else - sudo sh -c "screen -dmSL DPDK-test ./examples/l3fwd/build/app/l3fwd \ - -l ${cpu_corelist} -n 4 -- -P -L -p 0x3 --config='${port_config}' \ - --eth-dest=0,${adj_mac0} --eth-dest=1,${adj_mac1} --parse-ptype" -fi - -sleep 10 -less -r ${L3FWDLOG} - -cd ${PWDDIR} - diff --git a/dpdk-tests/perf/10ge2p1x520-eth-l2xcbase-testpmd-ndrpdrdisc.robot b/dpdk-tests/perf/10ge2p1x520-eth-l2xcbase-testpmd-ndrpdrdisc.robot deleted file mode 100644 index 45a67bb5ba..0000000000 --- a/dpdk-tests/perf/10ge2p1x520-eth-l2xcbase-testpmd-ndrpdrdisc.robot +++ /dev/null @@ -1,374 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/DPDK/default.robot -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.DPDK.DPDKTools -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | PERFTEST | NDRPDRDISC | 1NUMA -| ... | NIC_Intel-X520-DA2 | DPDK | ETH | L2XCFWD | BASE -| Suite Setup | Set up DPDK 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down DPDK 3-node performance topology -| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 frame forwarding. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 run the DPDK testpmd\ -| ... | application and use the io forwarding mode. DUT1 and DUT2 tested with\ -| ... | 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ -| ... | of packets transmitted. NDR and PDR are discovered for different\ -| ... | Ethernet L2 frame sizes using either binary search or linear search\ -| ... | algorithms with configured starting rate and final step that determines\ -| ... | throughput measurement resolution. Test packets are generated by TG on\ -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\ -| ... | (flow-group per direction, 253 flows per flow-group) with all packets\ -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\ -| ... | payload. MAC addresses are matching MAC addresses of the TG node\ -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames\ -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames\ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames\ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames\ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames\ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte\ -| | ... | frames using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte\ -| | ... | frames using binary search start at 10GE linerate, step 100kpps,\ -| | ... | LT=0.5%. -| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte\ -| | ... | frames using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte\ -| | ... | frames using binary search start at 10GE linerate, step 10kpps,\ -| | ... | LT=0.5%. -| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte\ -| | ... | frames using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte\ -| | ... | frames using binary search start at 10GE linerate, step 10kpps,\ -| | ... | LT=0.5%. -| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte\ -| | ... | frames using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte\ -| | ... | frames using binary search start at 10GE linerate, step 100kpps,\ -| | ... | LT=0.5%. -| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte\ -| | ... | frames using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte\ -| | ... | frames using binary search start at 10GE linerate, step 10kpps,\ -| | ... | LT=0.5%. -| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte\ -| | ... | frames using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte -| | ... | frames using binary search start at 10GE linerate, step 5kpps,\ -| | ... | LT=0.5%. -| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/dpdk-tests/perf/10ge2p1x520-ethip4-ip4base-l3fwd-ndrpdrdisc.robot b/dpdk-tests/perf/10ge2p1x520-ethip4-ip4base-l3fwd-ndrpdrdisc.robot deleted file mode 100644 index e6ea0e2e31..0000000000 --- a/dpdk-tests/perf/10ge2p1x520-ethip4-ip4base-l3fwd-ndrpdrdisc.robot +++ /dev/null @@ -1,421 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/DPDK/default.robot -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.DPDK.DPDKTools -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC | 1NUMA -| ... | NIC_Intel-X520-DA2 | DPDK | IP4FWD | BASE | ETH -| Suite Setup | Set up DPDK 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down DPDK 3-node performance topology -| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L3 IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 run the DPDK l3fwd application -| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst253_l3fwd - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L3 IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps. -| | ... -| | [Tags] | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L3FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} -| | ... | ${threshold} - -| tc02-64B-1t1c-ethip4-ip4base-l3fwd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L3 IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps, LT=0.5%. -| | ... -| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L3FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} -| | ... | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4-ip4base-l3fwd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L3 IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps. -| | ... -| | [Tags] | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L3FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} -| | ... | ${threshold} - -| tc04-1518B-1t1c-ethip4-ip4base-l3fwd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L3 IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L3FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} -| | ... | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip4-ip4base-l3fwd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L3 IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps. -| | ... -| | [Tags] | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L3FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} -| | ... | ${threshold} - -| tc06-9000B-1t1c-ethip4-ip4base-l3fwd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L3 IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps, LT=0.5%. -| | ... -| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L3FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} -| | ... | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L3 IPv4 routing config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps. -| | ... -| | [Tags] | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L3FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} -| | ... | ${threshold} - -| tc08-64B-2t2c-ethip4-ip4base-l3fwd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L3 IPv4 routing config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps, LT=0.5%. -| | ... -| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L3FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} -| | ... | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-ethip4-ip4base-l3fwd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L3 IPv4 routing config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps. -| | ... -| | [Tags] | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L3FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} -| | ... | ${threshold} - -| tc10-1518B-2t2c-ethip4-ip4base-l3fwd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L3 IPv4 routing config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L3FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} -| | ... | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip4-ip4base-l3fwd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L3 IPv4 routing config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps. -| | ... -| | [Tags] | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L3FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} -| | ... | ${threshold} - -| tc12-9000B-2t2c-ethip4-ip4base-l3fwd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L3 IPv4 routing config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps, LT=0.5%. -| | ... -| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L3FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} -| | ... | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-ethip4-ip4base-l3fwd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L3 IPv4 routing config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps. -| | ... -| | [Tags] | 4T4C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L3FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} -| | ... | ${threshold} - -| tc14-64B-4t4c-ethip4-ip4base-l3fwd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L3 IPv4 routing config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps, LT=0.5%. -| | ... -| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L3FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} -| | ... | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-ethip4-ip4base-l3fwd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L3 IPv4 routing config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps. -| | ... -| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L3FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} -| | ... | ${threshold} - -| tc16-1518B-4t4c-ethip4-ip4base-l3fwd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L3 IPv4 routing config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L3FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} -| | ... | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip4-ip4base-l3fwd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L3 IPv4 routing config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps. -| | ... -| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L3FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} -| | ... | ${threshold} - -| tc18-9000B-4t4c-ethip4-ip4base-l3fwd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L3 IPv4 routing config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps, LT=0.5%. -| | ... -| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L3FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} -| | ... | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/dpdk-tests/perf/10ge2p1x710-eth-l2xcbase-testpmd-ndrpdrdisc.robot b/dpdk-tests/perf/10ge2p1x710-eth-l2xcbase-testpmd-ndrpdrdisc.robot deleted file mode 100644 index 6c4d19a962..0000000000 --- a/dpdk-tests/perf/10ge2p1x710-eth-l2xcbase-testpmd-ndrpdrdisc.robot +++ /dev/null @@ -1,422 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/DPDK/default.robot -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.DPDK.DPDKTools -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | PERFTEST | NDRPDRDISC | 1NUMA -| ... | NIC_Intel-X710 | DPDK | ETH | L2XCFWD | BASE -| Suite Setup | Set up DPDK 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X710 -| Suite Teardown | Tear down DPDK 3-node performance topology -| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 frame forwarding. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 run the DPDK testpmd\ -| ... | application and use the io forwarding mode. DUT1 and DUT2 tested with\ -| ... | 2p10GE NIC X710 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ -| ... | of packets transmitted. NDR and PDR are discovered for different\ -| ... | Ethernet L2 frame sizes using either binary search or linear search\ -| ... | algorithms with configured starting rate and final step that determines\ -| ... | throughput measurement resolution. Test packets are generated by TG on\ -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\ -| ... | (flow-group per direction, 253 flows per flow-group) with all packets\ -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\ -| ... | payload. MAC addresses are matching MAC addresses of the TG node\ -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | ... -| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | ... -| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 4T4C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | ... -| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 5kpps, LT=0.5%. -| | ... -| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} \ No newline at end of file diff --git a/dpdk-tests/perf/40ge2p1xl710-eth-l2xcbase-testpmd-ndrpdrdisc.robot b/dpdk-tests/perf/40ge2p1xl710-eth-l2xcbase-testpmd-ndrpdrdisc.robot deleted file mode 100644 index a878d31ad2..0000000000 --- a/dpdk-tests/perf/40ge2p1xl710-eth-l2xcbase-testpmd-ndrpdrdisc.robot +++ /dev/null @@ -1,424 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/DPDK/default.robot -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.DPDK.DPDKTools -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | PERFTEST | NDRPDRDISC | 1NUMA -| ... | NIC_Intel-XL710 | DPDK | ETH | L2XCFWD | BASE -| Suite Setup | Set up DPDK 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-XL710 -| Suite Teardown | Tear down DPDK 3-node performance topology -| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 frame forwarding. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 run the DPDK testpmd\ -| ... | application and use the io forwarding mode. DUT1 and DUT2 tested with\ -| ... | 2p40GE NIC XL710 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ -| ... | of packets transmitted. NDR and PDR are discovered for different\ -| ... | Ethernet L2 frame sizes using either binary search or linear search\ -| ... | algorithms with configured starting rate and final step that determines\ -| ... | throughput measurement resolution. Test packets are generated by TG on\ -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\ -| ... | (flow-group per direction, 253 flows per flow-group) with all packets\ -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\ -| ... | payload. MAC addresses are matching MAC addresses of the TG node\ -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps -| ${s_24.5G} | ${24500000000} -# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps -| ${s_18.75Mpps} | ${18750000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | ... -| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | ... -| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 4T4C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | ... -| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-eth-l2xcbase-testpmd-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes' -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-eth-l2xcbase-testpmd-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 5kpps, LT=0.5%. -| | ... -| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes' -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} \ No newline at end of file diff --git a/dpdk-tests/perf/__init__.robot b/dpdk-tests/perf/__init__.robot deleted file mode 100644 index 03371605fd..0000000000 --- a/dpdk-tests/perf/__init__.robot +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Library | resources.libraries.python.DPDK.SetupDPDKTest -| Suite Setup | Run Keywords | Setup performance global Variables -| ... | AND | Setup DPDK Test | ${nodes} -| ... | AND | Get CPU Layout from all nodes | ${nodes} -| ... | AND | Update All Numa Nodes -| ... | ${nodes} | skip_tg=${True} - -*** Keywords *** -| Setup performance global Variables -| | [Documentation] -| | ... | Setup suite Variables. Variables are used across performance testing. -| | ... -| | ... | _NOTE:_ This KW sets following suite variables: -| | ... | - perf_trial_duration - Duration of traffic run [s]. -| | ... | - perf_pdr_loss_acceptance - Loss acceptance treshold -| | ... | - perf_pdr_loss_acceptance_type - Loss acceptance treshold type -| | ... | - perf_vm_image - Guest VM disk image -| | ... -| | Set Global Variable | ${perf_trial_duration} | 10 -| | Set Global Variable | ${perf_pdr_loss_acceptance} | 0.5 -| | Set Global Variable | ${perf_pdr_loss_acceptance_type} | percentage -| | Set Global Variable | ${perf_vm_image} | /var/lib/vm/csit-nested-1.6.img diff --git a/nsh_sfc_tests/func/__init__.robot b/nsh_sfc_tests/func/__init__.robot deleted file mode 100644 index efebac383e..0000000000 --- a/nsh_sfc_tests/func/__init__.robot +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Library | resources.libraries.python.SFC.SetupSFCTest -| Suite Setup | Run Keywords | Setup NSH SFC test | ${nodes} -| ... | AND | Setup All DUTs | ${nodes} -| ... | AND | Update All Interface Data On All Nodes | ${nodes} diff --git a/nsh_sfc_tests/func/proxy/eth2p-ethip4-nsh-proxy-inbound-func.robot b/nsh_sfc_tests/func/proxy/eth2p-ethip4-nsh-proxy-inbound-func.robot deleted file mode 100644 index 9aa3a8692d..0000000000 --- a/nsh_sfc_tests/func/proxy/eth2p-ethip4-nsh-proxy-inbound-func.robot +++ /dev/null @@ -1,85 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/nsh_sfc/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/ipv4.robot -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST -| Suite Setup | Run Keywords -| ... | Configure all DUTs before test | AND -| ... | Configure all TGs for traffic script | AND -| ... | Update All Interface Data On All Nodes | ${nodes} | AND -| ... | Setup DUT nodes for 'Proxy Inbound' functional testing -| Test Setup | Run Keywords | Save VPP PIDs | AND -| ... | Reset VAT History On All DUTs | ${nodes} | AND -| ... | Clear interface counters on all vpp nodes in topology | ${nodes} -| Test Teardown | Run Keywords -| ... | Show packet trace on all DUTs | ${nodes} | AND -| ... | Show VAT History On All DUTs | ${nodes} | AND -| ... | Verify VPP PID in Teardown -| Documentation | *NSH SFC Proxy Inbound test cases* -| ... -| ... | Test the SFC Proxy Inbound functional. DUT run the VPP with NSH -| ... | SFC Plugin, TG send a VxLAN-GPE+NSH packet to the DUT, -| ... | if the packet match the SFC Proxy inbound rules, the SFC Proxy will -| ... | pop the VxLAN-GPE and NSH protocol, then encapsulate with the -| ... | VxLAN protocol. DUT will loopback the packet to the TG. -| ... | The TG will capture this VxLAN packet and check the packet -| ... | field is correct. - -*** Test Cases *** -| TC01: NSH SFC Proxy Inbound functional test with 152B frame size -| | [Documentation] -| | ... | Make TG send 152 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ -| | ... | Make TG verify SFC Proxy Inbound functional is correct. -| | ${frame_size}= | Set Variable | ${152} -| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Inbound" test - -| TC02: NSH SFC Proxy Inbound functional test with 256B frame size -| | [Documentation] -| | ... | Make TG send 256 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ -| | ... | Make TG verify SFC Proxy Inbound functional is correct. -| | ${frame_size}= | Set Variable | ${256} -| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Inbound" test - -| TC03: NSH SFC Proxy Inbound functional test with 512B frame size -| | [Documentation] -| | ... | Make TG send 512 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ -| | ... | Make TG verify SFC Proxy Inbound functional is correct. -| | ${frame_size}= | Set Variable | ${512} -| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Inbound" test - -| TC04: NSH SFC Proxy Inbound functional test with 1024B frame size -| | [Documentation] -| | ... | Make TG send 1024 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ -| | ... | Make TG verify SFC Proxy Inbound functional is correct. -| | ${frame_size}= | Set Variable | ${1024} -| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Inbound" test - -| TC05: NSH SFC Proxy Inbound functional test with 1280B frame size -| | [Documentation] -| | ... | Make TG send 1280 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ -| | ... | Make TG verify SFC Proxy Inbound functional is correct. -| | ${frame_size}= | Set Variable | ${1280} -| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Inbound" test - -| TC06: NSH SFC Proxy Inbound functional test with 1518B frame size -| | [Documentation] -| | ... | Make TG send 1518 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ -| | ... | Make TG verify SFC Proxy Inbound functional is correct. -| | ${frame_size}= | Set Variable | ${1518} -| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Inbound" test diff --git a/nsh_sfc_tests/func/proxy/eth2p-ethip4-nsh-proxy-outbound-func.robot b/nsh_sfc_tests/func/proxy/eth2p-ethip4-nsh-proxy-outbound-func.robot deleted file mode 100644 index db9c08d1b4..0000000000 --- a/nsh_sfc_tests/func/proxy/eth2p-ethip4-nsh-proxy-outbound-func.robot +++ /dev/null @@ -1,86 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/nsh_sfc/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/ipv4.robot -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST -| Suite Setup | Run Keywords -| ... | Configure all DUTs before test | AND -| ... | Configure all TGs for traffic script | AND -| ... | Update All Interface Data On All Nodes | ${nodes} | AND -| ... | Setup DUT nodes for 'Proxy Outbound' functional testing -| Test Setup | Run Keywords | Save VPP PIDs | AND -| ... | Reset VAT History On All DUTs | ${nodes} | AND -| ... | Clear interface counters on all vpp nodes in topology | ${nodes} -| Test Teardown | Run Keywords -| ... | Show packet trace on all DUTs | ${nodes} | AND -| ... | Show VAT History On All DUTs | ${nodes} | AND -| ... | Verify VPP PID in Teardown -| Documentation | *NSH SFC Proxy Outbound test cases* -| ... -| ... | Test the SFC Proxy Outbound functional. DUT run the VPP with NSH -| ... | SFC Plugin, TG send a VxLAN packet to the DUT, -| ... | if the packet match the SFC Proxy outbound rules, the SFC Proxy will -| ... | push the NSH protocol, then encapsulate with the VxLAN-GPE protocol. -| ... | DUT will loopback the packet to the TG. -| ... | The TG will capture this VxLAN-GPE+NSH packet and check the packet -| ... | field is correct. - - -*** Test Cases *** -| TC01: NSH SFC Proxy Outbound functional test with 128B frame size -| | [Documentation] -| | ... | Make TG send 128 Bytes VxLAN packet to DUT ingress interface.\ -| | ... | Make TG verify SFC Proxy Outbound functional is correct. -| | ${frame_size}= | Set Variable | ${128} -| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Outbound" test - -| TC02: NSH SFC Proxy Outbound functional test with 256B frame size -| | [Documentation] -| | ... | Make TG send 256 Bytes VxLAN packet to DUT ingress interface.\ -| | ... | Make TG verify SFC Proxy Outbound functional is correct. -| | ${frame_size}= | Set Variable | ${256} -| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Outbound" test - -| TC03: NSH SFC Proxy Outbound functional test with 512B frame size -| | [Documentation] -| | ... | Make TG send 512 Bytes VxLAN packet to DUT ingress interface.\ -| | ... | Make TG verify SFC Proxy Outbound functional is correct. -| | ${frame_size}= | Set Variable | ${512} -| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Outbound" test - -| TC04: NSH SFC Proxy Outbound functional test with 1024B frame size -| | [Documentation] -| | ... | Make TG send 1024 Bytes VxLAN packet to DUT ingress interface.\ -| | ... | Make TG verify SFC Proxy Outbound functional is correct. -| | ${frame_size}= | Set Variable | ${1024} -| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Outbound" test - -| TC05: NSH SFC Proxy Outbound functional test with 1280B frame size -| | [Documentation] -| | ... | Make TG send 1280 Bytes VxLAN packet to DUT ingress interface.\ -| | ... | Make TG verify SFC Proxy Outbound functional is correct. -| | ${frame_size}= | Set Variable | ${1280} -| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Outbound" test - -| TC06: NSH SFC Proxy Outbound functional test with 1518B frame size -| | [Documentation] -| | ... | Make TG send 1518 Bytes VxLAN packet to DUT ingress interface.\ -| | ... | Make TG verify SFC Proxy Outbound functional is correct. -| | ${frame_size}= | Set Variable | ${1518} -| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Outbound" test diff --git a/nsh_sfc_tests/func/sff/eth2p-ethip4-sfc-sff-func.robot b/nsh_sfc_tests/func/sff/eth2p-ethip4-sfc-sff-func.robot deleted file mode 100644 index 28aa4cd4d5..0000000000 --- a/nsh_sfc_tests/func/sff/eth2p-ethip4-sfc-sff-func.robot +++ /dev/null @@ -1,85 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/nsh_sfc/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/ipv4.robot -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST -| Suite Setup | Run Keywords -| ... | Configure all DUTs before test | AND -| ... | Configure all TGs for traffic script | AND -| ... | Update All Interface Data On All Nodes | ${nodes} | AND -| ... | Setup DUT nodes for 'SFF' functional testing -| Test Setup | Run Keywords | Save VPP PIDs | AND -| ... | Reset VAT History On All DUTs | ${nodes} | AND -| ... | Clear interface counters on all vpp nodes in topology | ${nodes} -| Test Teardown | Run Keywords -| ... | Show packet trace on all DUTs | ${nodes} | AND -| ... | Show VAT History On All DUTs | ${nodes} | AND -| ... | Verify VPP PID in Teardown -| Documentation | *NSH SFC SFF test cases* -| ... -| ... | Test the SFC Service Function Forward functional. DUT run the VPP -| ... | with NSH SFC Plugin, TG send a VxLAN-GPE+NSH packet to the DUT, -| ... | if the packet match the SFC SFF rules, the SFC SFF will -| ... | swap the VxLAN-GPE and NSH protocol. -| ... | DUT will loopback the packet to the TG. -| ... | The TG will capture this VxLAN-GPE+NSH packet and check the packet -| ... | field is correct. - -*** Test Cases *** -| TC01: NSH SFC SFF functional test with 152B frame size -| | [Documentation] -| | ... | Make TG send 152 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ -| | ... | Make TG verify SFC SFF functional is correct. -| | ${frame_size}= | Set Variable | ${152} -| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "SFF" test - -| TC02: NSH SFC SFF functional test with 256B frame size -| | [Documentation] -| | ... | Make TG send 256 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ -| | ... | Make TG verify SFC SFF functional is correct. -| | ${frame_size}= | Set Variable | ${256} -| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "SFF" test - -| TC03: NSH SFC SFF functional test with 512B frame size -| | [Documentation] -| | ... | Make TG send 512 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ -| | ... | Make TG verify SFC SFF functional is correct. -| | ${frame_size}= | Set Variable | ${512} -| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "SFF" test - -| TC04: NSH SFC SFF functional test with 1024B frame size -| | [Documentation] -| | ... | Make TG send 1024 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ -| | ... | Make TG verify SFC SFF functional is correct. -| | ${frame_size}= | Set Variable | ${1024} -| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "SFF" test - -| TC05: NSH SFC SFF functional test with 1280B frame size -| | [Documentation] -| | ... | Make TG send 1280 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ -| | ... | Make TG verify SFC SFF functional is correct. -| | ${frame_size}= | Set Variable | ${1280} -| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "SFF" test - -| TC06: NSH SFC SFF functional test with 1518B frame size -| | [Documentation] -| | ... | Make TG send 1518 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ -| | ... | Make TG verify SFC SFF functional is correct. -| | ${frame_size}= | Set Variable | ${1518} -| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "SFF" test diff --git a/nsh_sfc_tests/sfc_scripts/install_sfc.sh b/nsh_sfc_tests/sfc_scripts/install_sfc.sh deleted file mode 100755 index 265d4c153a..0000000000 --- a/nsh_sfc_tests/sfc_scripts/install_sfc.sh +++ /dev/null @@ -1,114 +0,0 @@ -#!/bin/bash - -set -x - -ROOTDIR=/tmp/openvpp-testing -PWDDIR=$(pwd) - -if_name1=$1 -if_name2=$2 - -VPP_VERSION=`cat ${ROOTDIR}/NSH_SFC_VER | grep VPP | awk -F'= ' '{print $2}'` -NSH_SFC_VERSION=`cat ${ROOTDIR}/NSH_SFC_VER | grep NSH_SFC | awk -F'= ' '{print $2}'` - -VPP_CODE_DIR=${ROOTDIR}/vpp_codes -NSH_SFC_CODE_DIR=${ROOTDIR}/nsh_sfc_codes - -#at first, we need to stop the vpp service if have -sudo service vpp stop - -#uninstall the vpp and nsh sfc plugin -#and git clone the vpp and nsh sfc plugin source codes -#then compile and install them in the dut nodes. -nsh_need_install=0 -sudo dpkg -l vpp-nsh-plugin >/dev/null 2>&1 -if [ $? -eq 0 ]; then - nsh_plugin_version=`dpkg -s vpp-nsh-plugin | grep Version | awk -F' ' '{print $2}'` - if [ "${nsh_plugin_version}" \< "${NSH_SFC_VERSION}" ]; then - sudo dpkg -P vpp-nsh-plugin vpp-nsh-plugin-dbg vpp-nsh-plugin-dev >/dev/null 2>&1 - test $? -eq 0 || exit 1 - nsh_need_install=1 - fi -else - nsh_need_install=1 -fi - -vpp_need_install=0 -sudo dpkg -l vpp >/dev/null 2>&1 -if [ $? -eq 0 ]; then - vpp_version=`dpkg -s vpp | grep Version | awk -F' ' '{print $2}'` - if [ "${vpp_version}" \< "${VPP_VERSION}" ]; then - sudo dpkg -P vpp vpp-dbg vpp-dev vpp-dpdk-dev vpp-dpdk-dkms vpp-lib \ - vpp-plugins vpp-python-api >/dev/null 2>&1 - test $? -eq 0 || exit 1 - vpp_need_install=1 - fi -else - vpp_need_install=1 -fi - -sleep 5 - -##begin to clone the vpp source code -if [ ${vpp_need_install} -eq 1 ]; then - sudo rm -rf ${VPP_CODE_DIR} - sudo mkdir -p ${VPP_CODE_DIR} - cd ${VPP_CODE_DIR} - git clone -b v${VPP_VERSION} https://gerrit.fd.io/r/vpp - - #compile the vpp code - cd ./vpp/build-root/ - make distclean - ./bootstrap.sh - make V=0 PLATFORM=vpp TAG=vpp install-deb - - #after that, install vpp - sudo dpkg -i *.deb - cd ${PWDDIR} -fi - -##begin to clone the nsh sfc source code -if [ ${nsh_need_install} -eq 1 ]; then - sudo rm -rf ${NSH_SFC_CODE_DIR} - sudo mkdir -p ${NSH_SFC_CODE_DIR} - cd ${NSH_SFC_CODE_DIR} - git clone -b v${NSH_SFC_VERSION} https://gerrit.fd.io/r/nsh_sfc - - #compile the nsh sfc code - cd ./nsh_sfc/nsh-plugin/ - sudo rm -rf build - sudo ./build.sh - - #after that, install the nsh sfc plugin - cd ./packaging/ - sudo dpkg -i *.deb - cd ${PWDDIR} -fi - -#check and setup the hugepages -SYS_HUGEPAGE=$(cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages) -if [ ${SYS_HUGEPAGE} -lt 1024 ]; then - MOUNT=$(mount | grep /mnt/huge) - while [ "${MOUNT}" != "" ] - do - sudo umount /mnt/huge - sleep 1 - MOUNT=$(mount | grep /mnt/huge) - done - - echo 2048 | sudo tee /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages - echo 2048 | sudo tee /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages - - sudo mkdir -p /mnt/huge - sudo mount -t hugetlbfs nodev /mnt/huge/ - test $? -eq 0 || exit 1 -fi - -#check and set the max map count -SYS_MAP=$(cat /proc/sys/vm/max_map_count) -if [ ${SYS_MAP} -lt 200000 ]; then - echo 200000 | sudo tee /proc/sys/vm/max_map_count -fi - -#after all, we can start the vpp service now -sudo service vpp start diff --git a/nsh_sfc_tests/sfc_scripts/set_nsh_proxy_inbound.sh b/nsh_sfc_tests/sfc_scripts/set_nsh_proxy_inbound.sh deleted file mode 100755 index 453de3f8de..0000000000 --- a/nsh_sfc_tests/sfc_scripts/set_nsh_proxy_inbound.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -set -x - -sudo service vpp restart -sleep 5 - -sudo vppctl set int state $1 up -sleep 10 -sudo vppctl set int ip table $1 0 -sudo vppctl set int ip address $1 192.168.50.76/24 - -sudo vppctl create vxlan-gpe tunnel local 192.168.50.76 remote 192.168.50.72 vni 9 next-nsh encap-vrf-id 0 decap-vrf-id 0 -sudo vppctl set int l2 bridge vxlan_gpe_tunnel0 1 1 - -sudo vppctl create vxlan tunnel src 192.168.50.76 dst 192.168.50.71 vni 1 encap-vrf-id 0 decap-next node nsh-proxy -sudo vppctl set int l2 bridge vxlan_tunnel0 1 1 - -sudo vppctl create nsh entry nsp 185 nsi 255 md-type 1 c1 3232248395 c2 9 c3 3232248392 c4 50336437 next-ethernet -sudo vppctl create nsh entry nsp 185 nsi 254 md-type 1 c1 3232248395 c2 9 c3 3232248392 c4 50336437 next-ethernet - -sleep 2 -vxlan_gpe_index=`sudo vppctl sh int | grep "vxlan_gpe_tunnel0" | awk '{print $2}'` -vxlan_index=`sudo vppctl sh int | grep "vxlan_tunnel0" | awk '{print $2}'` -sudo vppctl create nsh map nsp 185 nsi 255 mapped-nsp 185 mapped-nsi 255 nsh_action pop encap-vxlan4-intf ${vxlan_index} -sudo vppctl create nsh map nsp 185 nsi 254 mapped-nsp 185 mapped-nsi 254 nsh_action push encap-vxlan-gpe-intf ${vxlan_gpe_index} - -sudo vppctl ip route add 192.168.50.72/24 via 192.168.50.76 -sudo vppctl set ip arp $1 192.168.50.71 $2 -sudo vppctl set ip arp $1 192.168.50.72 $2 - -sudo vppctl trace add dpdk-input 100 diff --git a/nsh_sfc_tests/sfc_scripts/set_nsh_proxy_outbound.sh b/nsh_sfc_tests/sfc_scripts/set_nsh_proxy_outbound.sh deleted file mode 100755 index 304ed30cda..0000000000 --- a/nsh_sfc_tests/sfc_scripts/set_nsh_proxy_outbound.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -set -x - -sudo service vpp restart -sleep 5 - -sudo vppctl set int state $1 up -sleep 10 -sudo vppctl set int ip table $1 0 -sudo vppctl set int ip address $1 192.168.50.76/24 - -sudo vppctl create vxlan-gpe tunnel local 192.168.50.76 remote 192.168.50.71 vni 9 next-nsh encap-vrf-id 0 decap-vrf-id 0 -sudo vppctl set int l2 bridge vxlan_gpe_tunnel0 1 1 - -sudo vppctl create vxlan tunnel src 192.168.50.76 dst 192.168.50.72 vni 1 encap-vrf-id 0 decap-next node nsh-proxy -sudo vppctl set int l2 bridge vxlan_tunnel0 1 1 - -sudo vppctl create nsh entry nsp 185 nsi 255 md-type 1 c1 3232248395 c2 9 c3 3232248392 c4 50336437 next-ethernet -sudo vppctl create nsh entry nsp 185 nsi 254 md-type 1 c1 3232248395 c2 9 c3 3232248392 c4 50336437 next-ethernet - -sleep 2 -vxlan_gpe_index=`sudo vppctl sh int | grep "vxlan_gpe_tunnel0" | awk '{print $2}'` -vxlan_index=`sudo vppctl sh int | grep "vxlan_tunnel0" | awk '{print $2}'` -sudo vppctl create nsh map nsp 185 nsi 255 mapped-nsp 185 mapped-nsi 255 nsh_action pop encap-vxlan4-intf ${vxlan_index} -sudo vppctl create nsh map nsp 185 nsi 254 mapped-nsp 185 mapped-nsi 254 nsh_action push encap-vxlan-gpe-intf ${vxlan_gpe_index} - -sudo vppctl ip route add 192.168.50.72/24 via 192.168.50.76 -sudo vppctl set ip arp $1 192.168.50.71 $2 -sudo vppctl set ip arp $1 192.168.50.72 $2 - -sudo vppctl trace add dpdk-input 100 diff --git a/nsh_sfc_tests/sfc_scripts/set_sfc_sff.sh b/nsh_sfc_tests/sfc_scripts/set_sfc_sff.sh deleted file mode 100755 index 03e2f0ade7..0000000000 --- a/nsh_sfc_tests/sfc_scripts/set_sfc_sff.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -set -x - -sudo service vpp restart -sleep 5 - -sudo vppctl set int state $1 up -sleep 10 -sudo vppctl set int ip table $1 7 -sudo vppctl set int ip address $1 192.168.50.76/24 - -sudo vppctl create vxlan-gpe tunnel local 192.168.50.76 remote 192.168.50.71 vni 9 next-nsh encap-vrf-id 7 decap-vrf-id 7 -sudo vppctl set int l2 bridge vxlan_gpe_tunnel0 1 1 - -sudo vppctl create vxlan-gpe tunnel local 192.168.50.76 remote 192.168.50.72 vni 10 next-nsh encap-vrf-id 7 decap-vrf-id 7 -sudo vppctl set int l2 bridge vxlan_gpe_tunnel1 1 1 - -sudo vppctl create nsh entry nsp 185 nsi 255 md-type 1 c1 3232248395 c2 9 c3 3232248392 c4 50336437 next-ethernet -sudo vppctl create nsh entry nsp 185 nsi 254 md-type 1 c1 3232248395 c2 9 c3 3232248392 c4 50336437 next-ethernet - -sleep 2 -vxlan_gpe_index0=`sudo vppctl sh int | grep "vxlan_gpe_tunnel0" | awk '{print $2}'` -vxlan_gpe_index1=`sudo vppctl sh int | grep "vxlan_gpe_tunnel1" | awk '{print $2}'` -sudo vppctl create nsh map nsp 185 nsi 255 mapped-nsp 185 mapped-nsi 254 nsh_action swap encap-vxlan-gpe-intf ${vxlan_gpe_index0} - -sudo vppctl ip route add 192.168.50.71/32 via 192.168.50.76 $1 -sudo vppctl ip route add 192.168.50.72/32 via 192.168.50.76 $1 -sudo vppctl set ip arp fib-id 7 $1 192.168.50.71 $2 -sudo vppctl set ip arp fib-id 7 $1 192.168.50.72 $2 - -sudo vppctl trace add dpdk-input 100 diff --git a/nsh_sfc_tests/sfc_scripts/start_tcpdump.sh b/nsh_sfc_tests/sfc_scripts/start_tcpdump.sh deleted file mode 100755 index 46f8217e26..0000000000 --- a/nsh_sfc_tests/sfc_scripts/start_tcpdump.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -ROOTDIR=/tmp/openvpp-testing -PWDDIR=$(pwd) - -cd ${ROOTDIR}/nsh_sfc_tests/sfc_scripts/ -sudo rm -f temp_packet.pcap - -sudo /usr/sbin/tcpdump -i $1 -c 1 -w temp_packet.pcap dst host $2 & - -if [ ! $? -eq 0 ]; then - echo "Start the tcpdump failed!!!" - exit 1 -fi - -cd ${PWDDIR} diff --git a/resources/libraries/python/TLDK/UdpTest.py b/resources/libraries/python/TLDK/UdpTest.py index adf0888724..adc8aa0ed0 100644 --- a/resources/libraries/python/TLDK/UdpTest.py +++ b/resources/libraries/python/TLDK/UdpTest.py @@ -1,126 +1,126 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -""" -This module exists to provide the UDP test for TLDK on topology nodes. -""" - -from scapy.utils import rdpcap -from scapy.layers.inet import IP -from scapy.layers.inet6 import IPv6 - -from robot.libraries.BuiltIn import BuiltIn - -from resources.libraries.python.ssh import SSH -from resources.libraries.python.TLDK.TLDKConstants import TLDKConstants as con -from resources.libraries.python.topology import Topology - -class UdpTest(object): - """Test the TLDK UDP function.""" - - @staticmethod - def get_pcap_info(file_prefix): - """Get the Dest IP from the RX pcap file - - :param file_prefix: the test case pcap file prefix - :type file_prefix: str - :returns: packet counts, dest ip, is or not ipv4 - :rtype: tuple(int, str, bool). - """ - exec_dir = BuiltIn().get_variable_value("${EXECDIR}") - - rx_pcapfile = '{0}/{1}/{2}_rx.pcap' \ - .format(exec_dir, con.TLDK_TESTCONFIG, file_prefix) - packets = rdpcap(rx_pcapfile) - count = len(packets) - - ### the first packet - pkt = packets[0] - if pkt.type == 0x0800: - ### this is a IPv4 packet - dest_ip = pkt[IP].dst - is_ipv4 = True - elif pkt.type == 0x86dd: - ### this is a IPv6 packet - dest_ip = pkt[IPv6].dst - is_ipv4 = False - - return count, dest_ip, is_ipv4 - - @staticmethod - def exec_the_udpfwd_test(dut_node, dut_if, file_prefix, \ - dest_ip, is_ipv4=True): - """Execute the udpfwd on the dut_node. - - :param dut_node: Will execute the udpfwd on this node. - :param dut_if: DUT interface name. - :param file_prefix: The test case config file prefix. - :param dest_ip: The UDP packet dest IP. - :param is_ipv4: Execute the IPv4 or IPv6 test. - :type dut_node: dict - :type dut_if: str - :type file_prefix: str - :type dest_ip: str - :type is_ipv4: bool - :returns: none. - :raises RuntimeError: If failed to execute udpfwd test on the dut node. - """ - pci_address = Topology.get_interface_pci_addr(dut_node, dut_if) - ssh = SSH() - ssh.connect(dut_node) - if is_ipv4: - cmd = 'cd {0}/{4} && ./run_tldk.sh {0}/{5}/{2}_rx.pcap ' \ - '{0}/{5}/{2}_tx.pcap {1} {0}/{5}/{2}_fe.cfg ' \ - '{0}/{5}/{2}_be.cfg {3} NONE' \ - .format(con.REMOTE_FW_DIR, pci_address, file_prefix, \ - dest_ip, con.TLDK_SCRIPTS, con.TLDK_TESTCONFIG) - else: - cmd = 'cd {0}/{4} && ./run_tldk.sh {0}/{5}/{2}_rx.pcap ' \ - '{0}/{5}/{2}_tx.pcap {1} {0}/{5}/{2}_fe.cfg ' \ - '{0}/{5}/{2}_be.cfg NONE {3}' \ - .format(con.REMOTE_FW_DIR, pci_address, file_prefix, \ - dest_ip, con.TLDK_SCRIPTS, con.TLDK_TESTCONFIG) - - (ret_code, _, _) = ssh.exec_command(cmd, timeout=600) - if ret_code != 0: - raise RuntimeError('Failed to execute udpfwd test at node {0}' - .format(dut_node['host'])) - - @staticmethod - def get_the_test_result(dut_node, file_prefix): - """ - After execute the udpfwd cmd, use this to get the test result. - - :param dut_node: will get the test result in this dut node - :param dut_if: the dut interface name - :param file_prefix: the test case output file prefix - :type dut_node: dice - :type dut_if: str - :type file_prefix: str - :returns: str. - :rtype: str - :raises RuntimeError: If failed to get the test result. - """ - ssh = SSH() - ssh.connect(dut_node) - cmd = 'cd {0}; tcpdump -nnnn -vvv -r ./{2}/{1}_tx.pcap | ' \ - 'grep \'udp sum ok\' | wc -l' \ - .format(con.REMOTE_FW_DIR, file_prefix, con.TLDK_TESTCONFIG) - - (ret_code, stdout, _) = ssh.exec_command(cmd, timeout=100) - if ret_code != 0: - raise RuntimeError('Failed to get test result at node {0}' - .format(dut_node['host'])) - - return stdout +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +""" +This module exists to provide the UDP test for TLDK on topology nodes. +""" + +from scapy.utils import rdpcap +from scapy.layers.inet import IP +from scapy.layers.inet6 import IPv6 + +from robot.libraries.BuiltIn import BuiltIn + +from resources.libraries.python.ssh import SSH +from resources.libraries.python.TLDK.TLDKConstants import TLDKConstants as con +from resources.libraries.python.topology import Topology + +class UdpTest(object): + """Test the TLDK UDP function.""" + + @staticmethod + def get_pcap_info(file_prefix): + """Get the Dest IP from the RX pcap file + + :param file_prefix: the test case pcap file prefix + :type file_prefix: str + :returns: packet counts, dest ip, is or not ipv4 + :rtype: tuple(int, str, bool). + """ + exec_dir = BuiltIn().get_variable_value("${EXECDIR}") + + rx_pcapfile = '{0}/{1}/{2}_rx.pcap' \ + .format(exec_dir, con.TLDK_TESTCONFIG, file_prefix) + packets = rdpcap(rx_pcapfile) + count = len(packets) + + ### the first packet + pkt = packets[0] + if pkt.type == 0x0800: + ### this is a IPv4 packet + dest_ip = pkt[IP].dst + is_ipv4 = True + elif pkt.type == 0x86dd: + ### this is a IPv6 packet + dest_ip = pkt[IPv6].dst + is_ipv4 = False + + return count, dest_ip, is_ipv4 + + @staticmethod + def exec_the_udpfwd_test(dut_node, dut_if, file_prefix, \ + dest_ip, is_ipv4=True): + """Execute the udpfwd on the dut_node. + + :param dut_node: Will execute the udpfwd on this node. + :param dut_if: DUT interface name. + :param file_prefix: The test case config file prefix. + :param dest_ip: The UDP packet dest IP. + :param is_ipv4: Execute the IPv4 or IPv6 test. + :type dut_node: dict + :type dut_if: str + :type file_prefix: str + :type dest_ip: str + :type is_ipv4: bool + :returns: none. + :raises RuntimeError: If failed to execute udpfwd test on the dut node. + """ + pci_address = Topology.get_interface_pci_addr(dut_node, dut_if) + ssh = SSH() + ssh.connect(dut_node) + if is_ipv4: + cmd = 'cd {0}/{4} && ./run_tldk.sh {0}/{5}/{2}_rx.pcap ' \ + '{0}/{5}/{2}_tx.pcap {1} {0}/{5}/{2}_fe.cfg ' \ + '{0}/{5}/{2}_be.cfg {3} NONE' \ + .format(con.REMOTE_FW_DIR, pci_address, file_prefix, \ + dest_ip, con.TLDK_SCRIPTS, con.TLDK_TESTCONFIG) + else: + cmd = 'cd {0}/{4} && ./run_tldk.sh {0}/{5}/{2}_rx.pcap ' \ + '{0}/{5}/{2}_tx.pcap {1} {0}/{5}/{2}_fe.cfg ' \ + '{0}/{5}/{2}_be.cfg NONE {3}' \ + .format(con.REMOTE_FW_DIR, pci_address, file_prefix, \ + dest_ip, con.TLDK_SCRIPTS, con.TLDK_TESTCONFIG) + + (ret_code, _, _) = ssh.exec_command(cmd, timeout=600) + if ret_code != 0: + raise RuntimeError('Failed to execute udpfwd test at node {0}' + .format(dut_node['host'])) + + @staticmethod + def get_the_test_result(dut_node, file_prefix): + """ + After execute the udpfwd cmd, use this to get the test result. + + :param dut_node: will get the test result in this dut node + :param dut_if: the dut interface name + :param file_prefix: the test case output file prefix + :type dut_node: dice + :type dut_if: str + :type file_prefix: str + :returns: str. + :rtype: str + :raises RuntimeError: If failed to get the test result. + """ + ssh = SSH() + ssh.connect(dut_node) + cmd = 'cd {0}; tcpdump -nnnn -vvv -r ./{2}/{1}_tx.pcap | ' \ + 'grep \'udp sum ok\' | wc -l' \ + .format(con.REMOTE_FW_DIR, file_prefix, con.TLDK_TESTCONFIG) + + (ret_code, stdout, _) = ssh.exec_command(cmd, timeout=100) + if ret_code != 0: + raise RuntimeError('Failed to get test result at node {0}' + .format(dut_node['host'])) + + return stdout diff --git a/resources/libraries/python/TrafficGenerator.py b/resources/libraries/python/TrafficGenerator.py index 0f25ebe42e..ca63efef56 100644 --- a/resources/libraries/python/TrafficGenerator.py +++ b/resources/libraries/python/TrafficGenerator.py @@ -190,11 +190,11 @@ class TrafficGenerator(object): ssh.connect(tg_node) (ret, stdout, stderr) = ssh.exec_command( - "sudo -E sh -c '{}/resources/tools/t-rex/" - "t-rex-installer.sh'".format(Constants.REMOTE_FW_DIR), + "sudo -E sh -c '{}/resources/tools/trex/" + "trex_installer.sh'".format(Constants.REMOTE_FW_DIR), timeout=1800) if int(ret) != 0: - logger.error('trex installation failed: {0}'.format( + logger.error('TRex installation failed: {0}'.format( stdout + stderr)) raise RuntimeError('Installation of TG failed') @@ -274,7 +274,7 @@ class TrafficGenerator(object): # get T-rex server info (ret, _, _) = ssh.exec_command( "sh -c 'sleep 3; " - "{0}/resources/tools/t-rex/t-rex-server-info.py'"\ + "{0}/resources/tools/trex/trex_server_info.py'"\ .format(Constants.REMOTE_FW_DIR), timeout=120) if int(ret) == 0: @@ -320,8 +320,8 @@ class TrafficGenerator(object): ssh.connect(node) (ret, _, _) = ssh.exec_command( - "sh -c '{}/resources/tools/t-rex/" - "t-rex-stateless-stop.py'".format(Constants.REMOTE_FW_DIR)) + "sh -c '{}/resources/tools/trex/" + "trex_stateless_stop.py'".format(Constants.REMOTE_FW_DIR)) if int(ret) != 0: raise RuntimeError('T-rex stateless runtime error') @@ -355,12 +355,12 @@ class TrafficGenerator(object): _latency = "--latency" if latency else "" _p0, _p1 = (2, 1) if self._ifaces_reordered else (1, 2) - profile_path = ("{0}/resources/tools/t-rex/stream_profiles/" + profile_path = ("{0}/resources/traffic_profiles/trex/" "{1}.py".format(Constants.REMOTE_FW_DIR, traffic_type)) (ret, stdout, _) = ssh.exec_command( "sh -c " - "'{0}/resources/tools/t-rex/t-rex-stateless-profile.py " + "'{0}/resources/tools/trex/trex_stateless_profile.py " "--profile {1} " "--duration {2} " "--frame_size {3} " diff --git a/resources/libraries/robot/DPDK/default.robot b/resources/libraries/robot/DPDK/default.robot deleted file mode 100644 index e6921c9b27..0000000000 --- a/resources/libraries/robot/DPDK/default.robot +++ /dev/null @@ -1,110 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Variables | resources/libraries/python/topology.py -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.CpuUtils -| Library | resources.libraries.python.DUTSetup -| Library | resources.libraries.python.TGSetup -| Library | resources.libraries.python.DPDK.L2fwdTest -| Library | resources.libraries.python.DPDK.L3fwdTest -| Library | Collections - -*** Keywords *** -| Start L2FWD '${m}' worker threads and '${n}' rxqueues with jumbo frames '${b}' -| | [Documentation] | Start the l2fwd with M worker threads without SMT -| | ... | and rxqueues N and B (yes or no) jumbo frames in all DUTs. -| | ... -| | ${m_int}= | Convert To Integer | ${m} -| | ${cpu_cnt}= | Evaluate | ${m_int}+1 -| | ${nb_cores}= | Convert to String | ${m} -| | ${rxqueues}= | Convert to String | ${n} -| | ${jumbo_frames}= | Convert to String | ${b} -| | ${dut1_numa}= | Get interfaces numa node | ${dut1} -| | ... | ${dut1_if1} | ${dut1_if2} -| | ${dut2_numa}= | Get interfaces numa node | ${dut2} -| | ... | ${dut2_if1} | ${dut2_if2} -| | ${dut1_cpus}= | Cpu Range Per Node Str | ${dut1} | ${dut1_numa} -| | ... | skip_cnt=${1} | cpu_cnt=${cpu_cnt} -| | ${dut2_cpus}= | Cpu Range Per Node Str | ${dut2} | ${dut2_numa} -| | ... | skip_cnt=${1} | cpu_cnt=${cpu_cnt} -| | Start the l2fwd test | ${dut1} | ${dut1_cpus} | ${nb_cores} | ${rxqueues} -| | ... | ${jumbo_frames} -| | Start the l2fwd test | ${dut2} | ${dut2_cpus} | ${nb_cores} | ${rxqueues} -| | ... | ${jumbo_frames} - -| Start L2FWD '${m}' worker threads using SMT and '${n}' rxqueues with jumbo frames '${b}' -| | [Documentation] | Start the l2fwd with M worker threads with SMT -| | ... | and rxqueues N and B (yes or no) jumbo frames in all DUTs. -| | ... -| | ${m_int}= | Convert To Integer | ${m} -| | ${cpu_cnt}= | Evaluate | ${m_int}+1 -| | ${nb_cores_int}= | Evaluate | ${m_int}*2 -| | ${nb_cores}= | Convert to String | ${nb_cores_int} -| | ${rxqueues}= | Convert to String | ${n} -| | ${jumbo_frames}= | Convert to String | ${b} -| | ${dut1_numa}= | Get interfaces numa node | ${dut1} -| | ... | ${dut1_if1} | ${dut1_if2} -| | ${dut2_numa}= | Get interfaces numa node | ${dut2} -| | ... | ${dut2_if1} | ${dut2_if2} -| | ${dut1_cpus}= | Cpu Range Per Node Str | ${dut1} | ${dut1_numa} -| | ... | skip_cnt=${1} | cpu_cnt=${cpu_cnt} | smt_used=${True} -| | ${dut2_cpus}= | Cpu Range Per Node Str | ${dut2} | ${dut2_numa} -| | ... | skip_cnt=${1} | cpu_cnt=${cpu_cnt} | smt_used=${True} -| | Start the l2fwd test | ${dut1} | ${dut1_cpus} | ${nb_cores} | ${rxqueues} -| | ... | ${jumbo_frames} -| | Start the l2fwd test | ${dut2} | ${dut2_cpus} | ${nb_cores} | ${rxqueues} -| | ... | ${jumbo_frames} - -| Start L3FWD '${m}' worker threads and '${n}' rxqueues with jumbo frames '${b}' -| | [Documentation] | Start the l3fwd with M worker threads without SMT -| | ... | and rxqueues N and B(yes or no) jumbo frames in all DUTs. -| | ${cpu_cnt}= | Convert To Integer | ${m} -| | ${nb_cores}= | Convert to String | ${m} -| | ${rxqueues}= | Convert to String | ${n} -| | ${jumbo_frames}= | Convert to String | ${b} -| | ${dut1_numa}= | Get interfaces numa node | ${dut1} -| | ... | ${dut1_if1} | ${dut1_if2} -| | ${dut2_numa}= | Get interfaces numa node | ${dut2} -| | ... | ${dut2_if1} | ${dut2_if2} -| | ${dut1_cpus}= | Cpu List Per Node Str | ${dut1} | ${dut1_numa} -| | ... | cpu_cnt=${cpu_cnt} -| | ${dut2_cpus}= | Cpu List Per Node Str | ${dut2} | ${dut2_numa} -| | ... | cpu_cnt=${cpu_cnt} -| | Start the l3fwd test | ${nodes} | ${dut1} | ${dut1_if1} | ${dut1_if2} -| | ... | ${nb_cores} | ${dut1_cpus} | ${rxqueues} | ${jumbo_frames} -| | Start the l3fwd test | ${nodes} | ${dut2} | ${dut2_if1} | ${dut2_if2} -| | ... | ${nb_cores} | ${dut2_cpus} | ${rxqueues} | ${jumbo_frames} - -| Start L3FWD '${m}' worker threads using SMT and '${n}' rxqueues with jumbo frames '${b}' -| | [Documentation] | Start the l3fwd with M worker threads with SMT -| | ... | and rxqueues N and B(yes or no) jumbo frames in all DUTs. -| | ${cpu_cnt}= | Convert To Integer | ${m} -| | ${nb_cores_int}= | Evaluate | ${cpu_cnt}*2 -| | ${nb_cores}= | Convert to String | ${nb_cores_int} -| | ${rxqueues}= | Convert to String | ${n} -| | ${jumbo_frames}= | Convert to String | ${b} -| | ${dut1_numa}= | Get interfaces numa node | ${dut1} -| | ... | ${dut1_if1} | ${dut1_if2} -| | ${dut2_numa}= | Get interfaces numa node | ${dut2} -| | ... | ${dut2_if1} | ${dut2_if2} -| | ${dut1_cpus}= | Cpu List Per Node Str | ${dut1} | ${dut1_numa} -| | ... | cpu_cnt=${cpu_cnt} | smt_used=${True} -| | ${dut2_cpus}= | Cpu List Per Node Str | ${dut2} | ${dut2_numa} -| | ... | cpu_cnt=${cpu_cnt} | smt_used=${True} -| | Start the l3fwd test | ${nodes} | ${dut1} | ${dut1_if1} | ${dut1_if2} -| | ... | ${nb_cores} | ${dut1_cpus} | ${rxqueues} | ${jumbo_frames} -| | Start the l3fwd test | ${nodes} | ${dut2} | ${dut2_if1} | ${dut2_if2} -| | ... | ${nb_cores} | ${dut2_cpus} | ${rxqueues} | ${jumbo_frames} - diff --git a/resources/libraries/robot/TLDK/TLDKUtils.robot b/resources/libraries/robot/TLDK/TLDKUtils.robot deleted file mode 100644 index 75e982252c..0000000000 --- a/resources/libraries/robot/TLDK/TLDKUtils.robot +++ /dev/null @@ -1,80 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.NodePath -| Documentation | *Utilities for the path computing, pcap reading* -| ... -| ... | Utilities for the path computing, pcap file reading and also the port -| ... | selection. - -*** Keywords *** -| Path for 2-node testing is set -| | [Documentation] | Compute the path for the 2 node testing. -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - TG node. Type: dictionary -| | ... | - dut_node - DUT node. Type: dictionary -| | ... -| | ... | *Return:* -| | ... | - No value returned. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Path for 2-node testing is set \| ${nodes['TG']} \ -| | ... | \| ${nodes['DUT1'] \| -| | ... -| | [Arguments] | ${tg_node} | ${dut_node} -| | Append Nodes | ${tg_node} | ${dut_node} -| | Compute Path - -| Pick out the port used to execute test -| | [Documentation] | Pick out the port used to execute the test. -| | ... -| | ... | *Arguments:* -| | ... | - No arguments. -| | ... -| | ... | *Return:* -| | ... | - No value returned. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Pick out the port used to execute test \| -| | ... -| | ${tg_port} | ${tg_node}= | First Interface -| | ${dut_port} | ${dut_node}= | Last Interface -| | set suite variable | ${tg_node} -| | set suite variable | ${dut_node} -| | set suite variable | ${tg_port} -| | set suite variable | ${dut_port} - -| Get the pcap data -| | [Documentation] | Get the pcap file detailed data. -| | ... -| | ... | *Arguments:* -| | ... | - file_prefix - file prefix. Type: dictionary -| | ... -| | ... | *Return:* -| | ... | - packet_num, dest_ip, is_ipv4 - a tuple of packet_num -| | ... | dest_ip, is_ipv4. Type: tuple(int, str, bool) -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Get the pcap data \| ${tc01_file_prefix} \| -| | ... -| | [Arguments] | ${file_prefix} -| | ${packet_num} | ${dest_ip} | ${is_ipv4}= | Get Pcap Info -| | ... | ${file_prefix} -| | set suite variable | ${packet_num} -| | set suite variable | ${dest_ip} -| | set suite variable | ${is_ipv4} diff --git a/resources/libraries/robot/bridge_domain.robot b/resources/libraries/robot/bridge_domain.robot deleted file mode 100644 index 22e46a02cb..0000000000 --- a/resources/libraries/robot/bridge_domain.robot +++ /dev/null @@ -1,279 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.L2Util -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.VhostUser -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/l2_traffic.robot - -*** Keywords *** -| Configure L2BD forwarding -| | [Documentation] | Setup BD between 2 interfaces on VPP node and if learning -| | ... | is off set static L2FIB entry on second interface -| | [Arguments] | ${node} | ${if1} | ${if2} | ${learn}=${TRUE} | ${mac}=${EMPTY} -| | Set Interface State | ${node} | ${if1} | up -| | Set Interface State | ${node} | ${if2} | up -| | Vpp Add L2 Bridge Domain | ${node} | ${1} | ${if1} | ${if2} | ${learn} -| | Run Keyword If | ${learn} == ${FALSE} -| | ... | Vpp Add L2fib Entry | ${node} | ${mac} | ${if2} | ${1} -| | All Vpp Interfaces Ready Wait | ${nodes} - -| Configure path for 3-node BD-SHG test -| | [Documentation] | Compute path for bridge domain split-horizon group testing -| | ... | on three given nodes with following interconnections -| | ... | TG - (2 links) - DUT1 - (1 link) - DUT2 - (2 links) - TG -| | ... | and set corresponding test case variables. -| | ... -| | ... | *Arguments:* -| | ... | - ${tg_node} - TG node. Type: dictionary -| | ... | - ${dut1_node} - DUT1 node. Type: dictionary -| | ... | - ${dut2_node} - DUT2 node. Type: dictionary -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | _NOTE:_ This KW sets following test case variables: -| | ... | - ${tg_node} - TG node. -| | ... | - ${tg_to_dut1_if1} - TG interface 1 towards DUT1. -| | ... | - ${tg_to_dut1_if2} - TG interface 2 towards DUT1. -| | ... | - ${tg_to_dut2_if1} - TG interface 1 towards DUT2. -| | ... | - ${tg_to_dut2_if2} - TG interface 2 towards DUT2. -| | ... | - ${dut1_node} - DUT1 node. -| | ... | - ${dut1_to_tg_if1} - DUT1 interface 1 towards TG. -| | ... | - ${dut1_to_tg_if2} - DUT1 interface 2 towards TG. -| | ... | - ${dut1_to_dut2} - DUT1 interface towards DUT2. -| | ... | - ${dut2_node} - DUT2 node. -| | ... | - ${dut2_to_tg_if1} - DUT2 interface 1 towards TG. -| | ... | - ${dut2_to_tg_if2} - DUT2 interface 2 towards TG. -| | ... | - ${dut2_to_dut1} - DUT2 interface towards DUT1. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Given Configure path for 3-node BD-SHG test \| ${nodes['TG']} \ -| | ... | \| ${nodes['DUT1']} \| ${nodes['DUT2']} \| -| | [Arguments] | ${tg_node} | ${dut1_node} | ${dut2_node} -| | # Compute path TG - DUT1 with two links in between -| | Append Nodes | ${tg_node} | ${dut1_node} | ${tg_node} -| | Compute Path | always_same_link=${FALSE} -| | ${tg_to_dut1_if1} | ${tmp}= | First Interface -| | ${tg_to_dut1_if2} | ${tmp}= | Last Interface -| | ${dut1_to_tg_if1} | ${tmp}= | First Ingress Interface -| | ${dut1_to_tg_if2} | ${tmp}= | Last Egress Interface -| | # Compute path TG - DUT2 with two links in between -| | Clear Path -| | Append Nodes | ${tg_node} | ${dut2_node} | ${tg_node} -| | Compute Path | always_same_link=${FALSE} -| | ${tg_to_dut2_if1} | ${tmp}= | First Interface -| | ${tg_to_dut2_if2} | ${tmp}= | Last Interface -| | ${dut2_to_tg_if1} | ${tmp}= | First Ingress Interface -| | ${dut2_to_tg_if2} | ${tmp}= | Last Egress Interface -| | # Compute path DUT1 - DUT2 with one link in between -| | Clear Path -| | Append Nodes | ${dut1_node} | ${dut2_node} -| | Compute Path -| | ${dut1_to_dut2} | ${tmp}= | Next Interface -| | ${dut2_to_dut1} | ${tmp}= | Next Interface -| | # Set test variables -| | Set Test Variable | ${tg_to_dut1_if1} -| | Set Test Variable | ${tg_to_dut1_if2} -| | Set Test Variable | ${tg_to_dut2_if1} -| | Set Test Variable | ${tg_to_dut2_if2} -| | Set Test Variable | ${dut1_to_tg_if1} -| | Set Test Variable | ${dut1_to_tg_if2} -| | Set Test Variable | ${dut2_to_tg_if1} -| | Set Test Variable | ${dut2_to_tg_if2} -| | Set Test Variable | ${dut1_to_dut2} -| | Set Test Variable | ${dut2_to_dut1} -| | Set Test Variable | ${tg_node} -| | Set Test Variable | ${dut1_node} -| | Set Test Variable | ${dut2_node} - -| Set interfaces in 3-node BD-SHG test up -| | [Documentation] | Set UP state on interfaces in 3-node path on nodes and -| | ... | wait for all interfaces are ready. -| | ... -| | ... | *Arguments:* -| | ... | - No arguments. -| | ... -| | ... | *Return:* -| | ... | - No value returned. -| | ... -| | ... | _NOTE:_ This KW uses test variables sets in -| | ... | "Configure path for 3-node BD-SHG test" KW. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Configure path for 3-node BD-SHG test \| ${nodes['TG']} \ -| | ... | \| ${nodes['DUT1']} \| ${nodes['DUT2']} \| -| | ... | \| Set interfaces in 3-node BD-SHG test up \| -| | ... -| | Set Interface State | ${tg_node} | ${tg_to_dut1_if1} | up -| | Set Interface State | ${tg_node} | ${tg_to_dut1_if2} | up -| | Set Interface State | ${tg_node} | ${tg_to_dut2_if1} | up -| | Set Interface State | ${tg_node} | ${tg_to_dut2_if2} | up -| | Set Interface State | ${dut1_node} | ${dut1_to_tg_if1} | up -| | Set Interface State | ${dut1_node} | ${dut1_to_tg_if2} | up -| | Set Interface State | ${dut2_node} | ${dut2_to_tg_if1} | up -| | Set Interface State | ${dut2_node} | ${dut2_to_tg_if2} | up -| | Set Interface State | ${dut1_node} | ${dut1_to_dut2} | up -| | Set Interface State | ${dut2_node} | ${dut2_to_dut1} | up -| | Vpp Node Interfaces Ready Wait | ${dut1_node} -| | Vpp Node Interfaces Ready Wait | ${dut2_node} - -| Create bridge domain -| | [Documentation] | Create bridge domain on given VPP node with defined -| | ... | learning status. -| | ... -| | ... | *Arguments:* -| | ... | - ${dut_node} - DUT node. Type: dictionary -| | ... | - ${bd_id} - Bridge domain ID. Type: integer -| | ... | - ${learn} - Enable/disable MAC learn. Type: boolean, \ -| | ... | default value: ${TRUE} -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Create bridge domain \| ${nodes['DUT1']} \| 2 \| -| | ... | \| Create bridge domain \| ${nodes['DUT1']} \| 5 \ -| | ... | \| learn=${FALSE} \| -| | [Arguments] | ${dut_node} | ${bd_id} | ${learn}=${TRUE} -| | ${learn} = | Set Variable If | ${learn} == ${TRUE} | ${1} | ${0} -| | Create L2 BD | ${dut_node} | ${bd_id} | learn=${learn} - -| Add interface to bridge domain -| | [Documentation] | Set given interface admin state to up and add this -| | ... | interface to required L2 bridge domain on defined -| | ... | VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - ${dut_node} - DUT node. Type: dictionary -| | ... | - ${dut_if} - DUT node interface name. Type: string -| | ... | - ${bd_id} - Bridge domain ID. Type: integer -| | ... | - ${shg} - Split-horizon group ID. Type: integer, default value: 0 -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Add interface to bridge domain \| ${nodes['DUT2']} \ -| | ... | \| GigabitEthernet0/8/0 \| 3 \| -| | [Arguments] | ${dut_node} | ${dut_if} | ${bd_id} | ${shg}=0 -| | Set Interface State | ${dut_node} | ${dut_if} | up -| | Add Interface To L2 BD | ${dut_node} | ${dut_if} | ${bd_id} | ${shg} - -| Add destination port to L2FIB -| | [Documentation] | Create a static L2FIB entry for required destination port -| | ... | on defined interface and bridge domain ID -| | ... | of the given VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - ${dest_node} - Destination node. Type: dictionary -| | ... | - ${dest_node_if} - Destination node interface name. Type: string -| | ... | - ${vpp_node} - DUT node to add L2FIB entry on. Type: dictionary -| | ... | - ${vpp_node_if} - DUT node interface name. Type: string -| | ... | - ${bd_id} - Bridge domain ID. Type: integer -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Add destination port to L2FIB \| ${nodes['TG']} \ -| | ... | \| eth1 \| ${nodes['DUT2']} \| GigabitEthernet0/8/0 \| 3 \| -| | [Arguments] | ${dest_node} | ${dest_node_if} | ${vpp_node} -| | ... | ${vpp_node_if} | ${bd_id} -| | ${mac}= | Get Interface Mac | ${dest_node} | ${dest_node_if} -| | Vpp Add L2fib Entry | ${vpp_node} | ${mac} | ${vpp_node_if} | ${bd_id} - -| Configure VM for vhost L2BD forwarding -| | [Documentation] | Setup QEMU and start VM with two vhost interfaces. -| | ... -| | ... | *Arguments:* -| | ... | - ${dut_node} - DUT node to start VM on. Type: dictionary -| | ... | - ${sock1} - Socket path for first Vhost-User interface. Type: string -| | ... | - ${sock2} - Socket path for second Vhost-User interface. Type: string -| | ... | - ${qemu_name} - Qemu instance name by which the object will be -| | ... | accessed (Optional). Type: string -| | ... -| | ... | _NOTE:_ This KW sets following test case variable: -| | ... | - ${${qemu_name}} - VM node info. Type: dictionary -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Configure VM for vhost L2BD forwarding \| ${nodes['DUT1']} \ -| | ... | \| /tmp/sock1 \| /tmp/sock2 \| -| | ... | \| Configure VM for vhost L2BD forwarding \| ${nodes['DUT2']} \ -| | ... | \| /tmp/sock1 \| /tmp/sock2 \| qemu_instance_2 \| -| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${qemu_name}=vm_node -| | Run Keyword Unless | "${qemu_name}" == "vm_node" | Import Library -| | ... | resources.libraries.python.QemuUtils | WITH NAME | ${qemu_name} -| | Set Test Variable | ${${qemu_name}} | ${None} -| | ${qemu_set_node}= | Run Keyword If | "${qemu_name}" == "vm_node" -| | | ... | Set Variable | Qemu Set Node -| | ... | ELSE | Replace Variables | ${qemu_name}.Qemu Set Node -| | Run keyword | ${qemu_set_node} | ${dut_node} -| | ${qemu_add_vhost}= | Run Keyword If | "${qemu_name}" == "vm_node" -| | | ... | Set Variable | Qemu Add Vhost User If -| | ... | ELSE | Replace Variables | ${qemu_name}.Qemu Add Vhost User If -| | Run keyword | ${qemu_add_vhost} | ${sock1} -| | Run keyword | ${qemu_add_vhost} | ${sock2} -| | ${qemu_start}= | Run Keyword If | "${qemu_name}" == "vm_node" -| | | ... | Set Variable | Qemu Start -| | ... | ELSE | Replace Variables | ${qemu_name}.Qemu Start -| | ${vm}= | Run keyword | ${qemu_start} -| | ${br}= | Set Variable | br0 -| | ${vhost1}= | Get Vhost User If Name By Sock | ${vm} | ${sock1} -| | ${vhost2}= | Get Vhost User If Name By Sock | ${vm} | ${sock2} -| | Linux Add Bridge | ${vm} | ${br} | ${vhost1} | ${vhost2} -| | Set Interface State | ${vm} | ${vhost1} | up | if_type=name -| | Set Interface State | ${vm} | ${vhost2} | up | if_type=name -| | Set Interface State | ${vm} | ${br} | up | if_type=name -| | Set Test Variable | ${${qemu_name}} | ${vm} - -| Configure vhost interfaces for L2BD forwarding -| | [Documentation] | Create two Vhost-User interfaces on defined VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - ${dut_node} - DUT node. Type: dictionary -| | ... | - ${sock1} - Socket path for first Vhost-User interface. Type: string -| | ... | - ${sock2} - Socket path for second Vhost-User interface. Type: string -| | ... | - ${vhost_if1} - Name of the first Vhost-User interface (Optional). -| | ... | Type: string -| | ... | - ${vhost_if2} - Name of the second Vhost-User interface (Optional). -| | ... | Type: string -| | ... -| | ... | _NOTE:_ This KW sets following test case variable: -| | ... | - ${${vhost_if1}} - First Vhost-User interface. -| | ... | - ${${vhost_if2}} - Second Vhost-User interface. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Configure vhost interfaces for L2BD forwarding \ -| | ... | \| ${nodes['DUT1']} \| /tmp/sock1 \| /tmp/sock2 \| -| | ... | \| Configure vhost interfaces for L2BD forwarding \ -| | ... | \| ${nodes['DUT2']} \| /tmp/sock1 \| /tmp/sock2 \| dut2_vhost_if1 \ -| | ... | \| dut2_vhost_if2 \| -| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vhost_if1}=vhost_if1 -| | ... | ${vhost_if2}=vhost_if2 -| | ${vhost_1}= | Vpp Create Vhost User Interface | ${dut_node} | ${sock1} -| | ${vhost_2}= | Vpp Create Vhost User Interface | ${dut_node} | ${sock2} -| | Set Interface State | ${dut_node} | ${vhost_1} | up -| | Set Interface State | ${dut_node} | ${vhost_2} | up -| | Set Test Variable | ${${vhost_if1}} | ${vhost_1} -| | Set Test Variable | ${${vhost_if2}} | ${vhost_2} diff --git a/resources/libraries/robot/counters.robot b/resources/libraries/robot/counters.robot deleted file mode 100644 index 3591dd5fe7..0000000000 --- a/resources/libraries/robot/counters.robot +++ /dev/null @@ -1,91 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Documentation | VPP counters keywords -| Library | resources/libraries/python/VppCounters.py - -*** Keywords *** -| Clear interface counters on all vpp nodes in topology -| | [Documentation] | Clear interface counters on all VPP nodes in topology -| | [Arguments] | ${nodes} -| | Vpp Nodes Clear Interface Counters | ${nodes} - -| Get interface statistics -| | [Documentation] | Dump stats table on VPP node -| | [Arguments] | ${node} -| | Vpp Dump Stats Table | ${node} - -| Get interface ipv6 counter -| | [Documentation] | Return IPv6 statistics for node interface -| | [Arguments] | ${node} | ${interface} -| | ${ipv6_counter}= | Vpp Get Ipv6 Interface Counter | ${node} | ${interface} -| | [Return] | ${ipv6_counter} - -| Check ipv4 interface counter -| | [Documentation] | Check that ipv4 interface counter has right value -| | [Arguments] | ${node} | ${interface} | ${value} -| | ${ipv4_counter}= | Vpp get ipv4 interface counter | ${node} | ${interface} -| | Should Be Equal | ${ipv4_counter} | ${value} - -| Show statistics on all DUTs -| | [Documentation] | Show VPP statistics on all DUTs -| | Sleep | 10 | Waiting for statistics to be collected -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Show vpp statistics | ${nodes['${dut}']} - -| Show vpp statistics -| | [Documentation] | Show [error, hardware, interface] stats -| | [Arguments] | ${node} -| | Vpp Show Errors | ${node} -| | Vpp Show Hardware Detail | ${node} -| | Vpp Show Runtime | ${node} - -| Clear all counters on all DUTs -| | [Documentation] | Clear runtime, interface, hardware and error counters -| | ... | on all DUTs with VPP instance -| | Clear runtime counters on all DUTs -| | Clear interface counters on all DUTs -| | Clear hardware counters on all DUTs -| | Clear error counters on all DUTs - -| Clear runtime counters on all DUTs -| | [Documentation] | Clear VPP runtime counters on all DUTs -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Vpp clear runtime | ${nodes['${dut}']} - -| Clear interface counters on all DUTs -| | [Documentation] | Clear VPP interface counters on all DUTs -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Vpp clear interface counters | ${nodes['${dut}']} - -| Clear hardware counters on all DUTs -| | [Documentation] | Clear VPP hardware counters on all DUTs -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Vpp clear hardware counters | ${nodes['${dut}']} - -| Clear error counters on all DUTs -| | [Documentation] | Clear VPP errors counters on all DUTs -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Vpp clear errors counters | ${nodes['${dut}']} - -| Show runtime counters on all DUTs -| | [Documentation] | Show VPP runtime counters on all DUTs -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Vpp show runtime | ${nodes['${dut}']} diff --git a/resources/libraries/robot/crypto/ipsec.robot b/resources/libraries/robot/crypto/ipsec.robot new file mode 100644 index 0000000000..74a1a53f25 --- /dev/null +++ b/resources/libraries/robot/crypto/ipsec.robot @@ -0,0 +1,280 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Library | resources.libraries.python.IPsecUtil +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.TrafficScriptExecutor +| Library | resources.libraries.python.IPv4Util.IPv4Util +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.Routing +| Library | String +| Library | resources.libraries.python.IPv6Util +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} +| ... | WITH NAME | dut1_v4 +| Documentation | *IPsec keywords.* + +*** Keywords *** +| Generate keys for IPSec +| | [Documentation] | Generate keys for IPsec. +| | ... +| | ... | *Arguments:* +| | ... | - crypto_alg - Encryption algorithm. Type: enum +| | ... | - integ_alg - Integrity algorithm. Type: enum +| | ... +| | ... | _NOTE:_ This KW sets following test case variable: +| | ... | - encr_key - Encryption key. Type: string +| | ... | - auth_key - Integrity key. Type: string +| | ... +| | ... | *Example:* +| | ... | \| ${encr_alg}= \| Crypto Alg AES CBC 128 \| +| | ... | \| ${auth_alg}= \| Integ Alg SHA1 96 \| +| | ... | \| Generate keys for IPSec \| ${encr_alg} \| ${auth_alg} \| +| | [Arguments] | ${crypto_alg} | ${integ_alg} +| | ${encr_key_len}= | Get Crypto Alg Key Len | ${crypto_alg} +| | ${encr_key}= | Generate Random String | ${encr_key_len} +| | ${auth_key_len}= | Get Integ Alg Key Len | ${integ_alg} +| | ${auth_key}= | Generate Random String | ${auth_key_len} +| | Set Test Variable | ${encr_key} +| | Set Test Variable | ${auth_key} + +| Configure path for IPSec test +| | [Documentation] | Setup path for IPsec testing TG<-->DUT1. +| | ... +| | ... | _NOTE:_ This KW sets following test case variable: +| | ... | - tg_node - TG node. Type: dictionary +| | ... | - tg_if - TG interface connected to DUT. Type: string +| | ... | - tg_if_mac - TG interface MAC. Type: string +| | ... | - dut_node - DUT node. Type: dictionary +| | ... | - dut_if - DUT interface connected to TG. Type: string +| | ... | - dut_if_mac - DUT interface MAC. Type: string +| | ... | - dut_lo - DUT loopback interface. Type: string +| | ... +| | ... | *Example:* +| | ... | \| Configure path for IPSec test \| +| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} +| | Compute Path +| | ${tg_if} | ${tg_node}= | Next Interface +| | ${dut_if} | ${dut_node}= | Next Interface +| | ${dut_if_mac}= | Get Interface Mac | ${dut_node} | ${dut_if} +| | ${tg_if_mac}= | Get Interface Mac | ${tg_node} | ${tg_if} +| | ${dut_lo}= | Vpp Create Loopback | ${dut_node} +| | Set Interface State | ${dut_node} | ${dut_if} | up +| | Set Interface State | ${dut_node} | ${dut_lo} | up +| | Vpp Node Interfaces Ready Wait | ${dut_node} +| | Set Test Variable | ${tg_node} +| | Set Test Variable | ${tg_if} +| | Set Test Variable | ${tg_if_mac} +| | Set Test Variable | ${dut_node} +| | Set Test Variable | ${dut_if} +| | Set Test Variable | ${dut_if_mac} +| | Set Test Variable | ${dut_lo} + +| Configure topology for IPv4 IPsec testing +| | [Documentation] | Setup topology for IPv4 IPsec testing. +| | ... +| | ... | _NOTE:_ This KW sets following test case variable: +| | ... | - dut_tun_ip - DUT tunnel IP address. Type: string +| | ... | - dut_src_ip - DUT source IP address. Type: string +| | ... | - tg_tun_ip - TG tunnel IP address. Type: string +| | ... | - tg_src_ip - TG source IP address. Type: string +| | ... +| | ... | *Example:* +| | ... | \| Configure topology for IPv4 IPsec testing \| +| | Configure path for IPSec test +| | Set Interface Address | ${dut_node} | ${dut_if} | ${dut_if_ip4} +| | ... | ${ip4_plen} +| | Set Interface Address | ${dut_node} | ${dut_lo} | ${dut_lo_ip4} +| | ... | ${ip4_plen} +| | dut1_v4.Set Arp | ${dut_if} | ${tg_if_ip4} | ${tg_if_mac} +| | Vpp Route Add | ${dut_node} | ${tg_lo_ip4} | ${ip4_plen} | ${tg_if_ip4} +| | ... | ${dut_if} +| | Set Test Variable | ${dut_tun_ip} | ${dut_if_ip4} +| | Set Test Variable | ${dut_src_ip} | ${dut_lo_ip4} +| | Set Test Variable | ${tg_tun_ip} | ${tg_if_ip4} +| | Set Test Variable | ${tg_src_ip} | ${tg_lo_ip4} + +| Configure topology for IPv6 IPsec testing +| | [Documentation] | Setup topology fo IPv6 IPsec testing. +| | ... +| | ... | _NOTE:_ This KW sets following test case variable: +| | ... | - dut_tun_ip - DUT tunnel IP address. Type: string +| | ... | - dut_src_ip - DUT source IP address. Type: string +| | ... | - tg_tun_ip - TG tunnel IP address. Type: string +| | ... | - tg_src_ip - TG source IP address. Type: string +| | ... +| | ... | *Example:* +| | ... | \| Configure topology for IPv6 IPsec testing \| +| | Configure path for IPSec test +| | VPP Set If IPv6 Addr | ${dut_node} | ${dut_if} | ${dut_if_ip6} | ${ip6_plen} +| | VPP Set If IPv6 Addr | ${dut_node} | ${dut_lo} | ${dut_lo_ip6} | ${ip6_plen} +| | Add IP Neighbor | ${dut_node} | ${dut_if} | ${tg_if_ip6} | ${tg_if_mac} +| | Vpp All RA Suppress Link Layer | ${nodes} +| | Vpp Route Add | ${dut_node} | ${tg_lo_ip6} | ${ip6_plen_rt} | ${tg_if_ip6} +| | ... | ${dut_if} +| | Set Test Variable | ${dut_tun_ip} | ${dut_if_ip6} +| | Set Test Variable | ${dut_src_ip} | ${dut_lo_ip6} +| | Set Test Variable | ${tg_tun_ip} | ${tg_if_ip6} +| | Set Test Variable | ${tg_src_ip} | ${tg_lo_ip6} + +| Configure manual keyed connection for IPSec +| | [Documentation] | Setup IPsec manual keyed connection on VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - node - VPP node to setup IPsec on. Type: dictionary +| | ... | - interface - Interface to enable IPsec on. Type: string +| | ... | - crypto_alg - Encrytion algorithm. Type: enum +| | ... | - crypto_key - Encryption key. Type: string +| | ... | - integ_alg - Integrity algorithm. Type: enum +| | ... | - integ_key - Integrity key. Type: string +| | ... | - l_spi - Local SPI. Type: integer +| | ... | - r_spi - Remote SPI. Type: integer +| | ... | - l_ip - Local IP address. Type: string +| | ... | - r_ip - Remote IP address. Type: string +| | ... | - l_tunnel - Local tunnel IP address (optional). Type: string +| | ... | - r_tunnel - Remote tunnel IP address (optional). Type: string +| | ... +| | ... | _NOTE:_ This KW sets following test case variables: +| | ... | - l_sa_id +| | ... | - r_sa_id +| | ... +| | ... | *Example:* +| | ... | \| ${encr_alg}= \| Crypto Alg AES CBC 128 \| +| | ... | \| ${auth_alg}= \| Integ Alg SHA1 96 \| +| | ... | \| Configure manual keyed connection for IPSec \| ${nodes['DUT1']} \ +| | ... | \| GigabitEthernet0/8/0 \| ${encr_alg} \| sixteenbytes_key \ +| | ... | \| ${auth_alg} \| twentybytessecretkey \| ${1000} \| ${1001} \ +| | ... | \| 192.168.4.4 \| 192.168.3.3 \| 192.168.100.3 \| 192.168.100.2 \| +| | [Arguments] | ${node} | ${interface} | ${crypto_alg} | ${crypto_key} +| | ... | ${integ_alg} | ${integ_key} | ${l_spi} | ${r_spi} | ${l_ip} +| | ... | ${r_ip} | ${l_tunnel}=${None} | ${r_tunnel}=${None} +| | Set Test Variable | ${l_sa_id} | ${10} +| | Set Test Variable | ${r_sa_id} | ${20} +| | ${spd_id}= | Set Variable | ${1} +| | ${p_hi}= | Set Variable | ${100} +| | ${p_lo}= | Set Variable | ${10} +| | VPP IPsec Add SAD Entry | ${node} | ${l_sa_id} | ${l_spi} | ${crypto_alg} +| | ... | ${crypto_key} | ${integ_alg} | ${integ_key} +| | ... | ${l_tunnel} | ${r_tunnel} +| | VPP IPsec Add SAD Entry | ${node} | ${r_sa_id} | ${r_spi} | ${crypto_alg} +| | ... | ${crypto_key} | ${integ_alg} | ${integ_key} +| | ... | ${r_tunnel} | ${l_tunnel} +| | VPP IPsec Add SPD | ${node} | ${spd_id} +| | VPP IPsec SPD Add If | ${node} | ${spd_id} | ${interface} +| | ${action}= | Policy Action Bypass +| | VPP IPsec SPD Add Entry | ${node} | ${spd_id} | ${p_hi} | ${action} +| | ... | inbound=${TRUE} | proto=${ESP_PROTO} +| | VPP IPsec SPD Add Entry | ${node} | ${spd_id} | ${p_hi} | ${action} +| | ... | inbound=${FALSE} | proto=${ESP_PROTO} +| | ${action}= | Policy Action Protect +| | VPP IPsec SPD Add Entry | ${node} | ${spd_id} | ${p_lo} | ${action} +| | ... | sa_id=${r_sa_id} | laddr_range=${l_ip} +| | ... | raddr_range=${r_ip} | inbound=${TRUE} +| | VPP IPsec SPD Add Entry | ${node} | ${spd_id} | ${p_lo} | ${action} +| | ... | sa_id=${l_sa_id} | laddr_range=${l_ip} +| | ... | raddr_range=${r_ip} | inbound=${FALSE} + +| Update IPSec SA keys +| | [Documentation] | Update IPsec SA keys on VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - node - VPP node to update SA keys. Type: dictionary +| | ... | - l_sa_id - Local SA ID. Type: string +| | ... | - r_sa_id - Remote SA ID. Type: string +| | ... | - crypto_key - Encryption key. Type: string +| | ... | - integ_key - Integrity key. Type: string +| | ... +| | ... | *Example:* +| | ... | \| Update IPSec SA keys \| ${nodes['DUT1']} \ +| | ... | \| 10 \| 20 \| sixteenbytes_key \| twentybytessecretkey \| +| | [Arguments] | ${node} | ${l_sa_id} | ${r_sa_id} | ${crypto_key} +| | ... | ${integ_key} +| | VPP IPsec SA Set Key | ${dut_node} | ${l_sa_id} | ${crypto_key} +| | ... | ${integ_key} +| | VPP IPsec SA Set Key | ${dut_node} | ${r_sa_id} | ${crypto_key} +| | ... | ${integ_key} + +| Send IPsec Packet and verify ESP encapsulation in received packet +| | [Documentation] | Send IPsec packet from TG to DUT. Receive IPsec packet\ +| | ... | from DUT on TG and verify ESP encapsulation. +| | ... +| | ... | *Arguments:* +| | ... | - node - TG node. Type: dictionary +| | ... | - interface - TG Interface. Type: string +| | ... | - dst_mac - Destination MAC. Type: string +| | ... | - crypto_alg - Encrytion algorithm. Type: enum +| | ... | - crypto_key - Encryption key. Type: string +| | ... | - integ_alg - Integrity algorithm. Type: enum +| | ... | - integ_key - Integrity key. Type: string +| | ... | - l_spi - Local SPI. Type: integer +| | ... | - r_spi - Remote SPI. Type: integer +| | ... | - l_ip - Local IP address. Type: string +| | ... | - r_ip - Remote IP address. Type: string +| | ... | - l_tunnel - Local tunnel IP address (optional). Type: string +| | ... | - r_tunnel - Remote tunnel IP address (optional). Type: string +| | ... +| | ... | *Example:* +| | ... | \| ${encr_alg}= \| Crypto Alg AES CBC 128 \| +| | ... | \| ${auth_alg}= \| Integ Alg SHA1 96 \| +| | ... | \| Send IPsec Packet and verify ESP encapsulation in received packet\ +| | ... | \| ${nodes['TG']} \| eth1 \ +| | ... | \| 52:54:00:d4:d8:22 \| ${encr_alg} \| sixteenbytes_key \ +| | ... | \| ${auth_alg} \| twentybytessecretkey \| ${1001} \| ${1000} \ +| | ... | \| 192.168.3.3 \| 192.168.4.4 \| 192.168.100.2 \| 192.168.100.3 \| +| | [Arguments] | ${node} | ${interface} | ${dst_mac} | ${crypto_alg} +| | ... | ${crypto_key} | ${integ_alg} | ${integ_key} | ${l_spi} +| | ... | ${r_spi} | ${l_ip} | ${r_ip} | ${l_tunnel}=${None} +| | ... | ${r_tunnel}=${None} +| | ${src_mac}= | Get Interface Mac | ${node} | ${interface} +| | ${if_name}= | Get Interface Name | ${node} | ${interface} +| | ${args}= | Traffic Script Gen Arg | ${if_name} | ${if_name} | ${src_mac} +| | ... | ${dst_mac} | ${l_ip} | ${r_ip} +| | ${crypto_alg_str}= | Get Crypto Alg Scapy Name | ${crypto_alg} +| | ${integ_alg_str}= | Get Integ Alg Scapy Name | ${integ_alg} +| | ${args}= | Catenate | ${args} | --crypto_alg ${crypto_alg_str} +| | ... | --crypto_key ${crypto_key} | --integ_alg ${integ_alg_str} +| | ... | --integ_key ${integ_key} | --l_spi ${l_spi} | --r_spi ${r_spi} +| | ${args}= | Set Variable If | "${l_tunnel}" == "${None}" | ${args} +| | ... | ${args} --src_tun ${l_tunnel} +| | ${args}= | Set Variable If | "${r_tunnel}" == "${None}" | ${args} +| | ... | ${args} --dst_tun ${r_tunnel} +| | Run Traffic Script On Node | ipsec.py | ${node} | ${args} + +| Set up IPv4 IPSec functional test +| | [Documentation] +| | ... | Set up IPv4 IPSec functional test +| | ... +| | Set up functional test +| | Configure topology for IPv4 IPsec testing + +| Set up IPv6 IPSec functional test +| | [Documentation] +| | ... | Set up IPv6 IPSec functional test +| | ... +| | Set up functional test +| | Configure topology for IPv6 IPsec testing + +| Tear down IPSec functional test +| | [Documentation] +| | ... | Tear down IPSec functional test +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Tear down IPSec functional test \| ${dut_node} \| +| | ... +| | [Arguments] | ${dut_node} +| | ... +| | VPP IPsec Show | ${dut_node} +| | Tear down functional test diff --git a/resources/libraries/robot/default.robot b/resources/libraries/robot/default.robot deleted file mode 100644 index 68d399702a..0000000000 --- a/resources/libraries/robot/default.robot +++ /dev/null @@ -1,357 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/qemu.robot -| Variables | resources/libraries/python/topology.py -| Variables | resources/libraries/python/VatHistory.py -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.VatHistory -| Library | resources.libraries.python.CpuUtils -| Library | resources.libraries.python.DUTSetup -| Library | resources.libraries.python.SchedUtils -| Library | resources.libraries.python.TGSetup -| Library | resources.libraries.python.L2Util -| Library | resources.libraries.python.Tap -| Library | resources/libraries/python/VppConfigGenerator.py -| Library | resources/libraries/python/VppCounters.py -| Library | Collections - -*** Keywords *** -| Configure all DUTs before test -| | [Documentation] | Setup all DUTs in topology before test execution. -| | ... -| | Setup All DUTs | ${nodes} - -| Configure all TGs for traffic script -| | [Documentation] | Prepare all TGs before traffic scripts execution. -| | ... -| | All TGs Set Interface Default Driver | ${nodes} - -| Show VPP version on all DUTs -| | [Documentation] | Show VPP version verbose on all DUTs. -| | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Vpp show version verbose | ${nodes['${dut}']} - -| Show Vpp Errors On All DUTs -| | [Documentation] | Show VPP errors verbose on all DUTs. -| | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Vpp Show Errors | ${nodes['${dut}']} - -| Show VPP trace dump on all DUTs -| | [Documentation] | Save API trace and dump output on all DUTs. -| | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Vpp api trace save | ${nodes['${dut}']} -| | | Vpp api trace dump | ${nodes['${dut}']} - -| Show VPP vhost on all DUTs -| | [Documentation] | Show Vhost User on all DUTs. -| | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Vpp Show Vhost | ${nodes['${dut}']} - -| Show Bridge Domain Data On All DUTs -| | [Documentation] | Show Bridge Domain data on all DUTs. -| | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Vpp Get Bridge Domain Data | ${nodes['${dut}']} - -| Setup Scheduler Policy for Vpp On All DUTs -| | [Documentation] | Set realtime scheduling policy (SCHED_RR) with priority 1 -| | ... | on all VPP worker threads on all DUTs. -| | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Set VPP Scheduling rr | ${nodes['${dut}']} - -| Configure crypto device on all DUTs -| | [Documentation] | Verify if Crypto QAT device virtual functions are -| | ... | initialized on all DUTs. If parameter force_init is set to True, then -| | ... | try to initialize. -| | ... -| | ... | *Arguments:* -| | ... | - ${force_init} - Try to initialize. Type: boolean -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Configure crypto device on all DUTs \| ${True} \| -| | ... -| | [Arguments] | ${force_init}=${False} -| | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Crypto Device Verify | ${nodes['${dut}']} | force_init=${force_init} - -| Configure kernel module on all DUTs -| | [Documentation] | Verify if specific kernel module is loaded on all DUTs. -| | ... | If parameter force_load is set to True, then try to initialize. -| | ... -| | ... | *Arguments:* -| | ... | - ${module} - Module to verify. Type: string -| | ... | - ${force_load} - Try to load module. Type: boolean -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Configure kernel module on all DUTs \| ${True} \| -| | ... -| | [Arguments] | ${module} | ${force_load}=${False} -| | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Kernel Module Verify | ${nodes['${dut}']} | ${module} -| | | ... | force_load=${force_load} - -| Create base startup configuration of VPP on all DUTs -| | [Documentation] | Create base startup configuration of VPP to all DUTs. -| | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Import Library | resources.libraries.python.VppConfigGenerator -| | | ... | WITH NAME | ${dut} -| | | Run keyword | ${dut}.Set Node | ${nodes['${dut}']} -| | | Run keyword | ${dut}.Add Unix Log -| | | Run keyword | ${dut}.Add Unix CLI Listen -| | | Run keyword | ${dut}.Add Unix Nodaemon -| | | Run keyword | ${dut}.Add DPDK Socketmem | "1024,1024" -| | | Run keyword | ${dut}.Add Heapsize | "3G" -| | | Run keyword | ${dut}.Add IP6 Hash Buckets | "2000000" -| | | Run keyword | ${dut}.Add IP6 Heap Size | "3G" - -| Add '${m}' worker threads and '${n}' rxqueues in 3-node single-link circular topology -| | [Documentation] | Setup M worker threads and N rxqueues in vpp startup\ -| | ... | configuration on all DUTs in 3-node single-link topology. -| | ... -| | ${m_int}= | Convert To Integer | ${m} -| | ${dut1_numa}= | Get interfaces numa node | ${dut1} -| | ... | ${dut1_if1} | ${dut1_if2} -| | ${dut2_numa}= | Get interfaces numa node | ${dut2} -| | ... | ${dut2_if1} | ${dut2_if2} -| | ${dut1_cpu_main}= | Cpu list per node str | ${dut1} | ${dut1_numa} -| | ... | skip_cnt=${1} | cpu_cnt=${1} -| | ${dut1_cpu_w}= | Cpu list per node str | ${dut1} | ${dut1_numa} -| | ... | skip_cnt=${2} | cpu_cnt=${m_int} -| | ${dut2_cpu_main}= | Cpu list per node str | ${dut2} | ${dut2_numa} -| | ... | skip_cnt=${1} | cpu_cnt=${1} -| | ${dut2_cpu_w}= | Cpu list per node str | ${dut2} | ${dut2_numa} -| | ... | skip_cnt=${2} | cpu_cnt=${m_int} -| | Run keyword | DUT1.Add CPU Main Core | ${dut1_cpu_main} -| | Run keyword | DUT2.Add CPU Main Core | ${dut2_cpu_main} -| | Run keyword | DUT1.Add CPU Corelist Workers | ${dut1_cpu_w} -| | Run keyword | DUT2.Add CPU Corelist Workers | ${dut2_cpu_w} -| | Run keyword | DUT1.Add DPDK Dev Default RXQ | ${n} -| | Run keyword | DUT2.Add DPDK Dev Default RXQ | ${n} - -| Add '${m}' worker threads and '${n}' rxqueues in 2-node single-link circular topology -| | [Documentation] | Setup M worker threads and N rxqueues in vpp startup\ -| | ... | configuration on all DUTs in 2-node single-link topology. -| | ... -| | ${m_int}= | Convert To Integer | ${m} -| | ${dut1_numa}= | Get interfaces numa node | ${dut1} -| | ... | ${dut1_if1} | ${dut1_if2} -| | ${dut1_cpu_main}= | Cpu list per node str | ${dut1} | ${dut1_numa} -| | ... | skip_cnt=${1} | cpu_cnt=${1} -| | ${dut1_cpu_w}= | Cpu list per node str | ${dut1} | ${dut1_numa} -| | ... | skip_cnt=${2} | cpu_cnt=${m_int} -| | Run keyword | DUT1.Add CPU Main Core | ${dut1_cpu_main} -| | Run keyword | DUT1.Add CPU Corelist Workers | ${dut1_cpu_w} -| | Run keyword | DUT1.Add DPDK Dev Default RXQ | ${n} - -| Add '${m}' worker threads using SMT and '${n}' rxqueues in 3-node single-link circular topology -| | [Documentation] | Setup M worker threads using SMT and N rxqueues in vpp\ -| | ... | startup configuration on all DUTs in 3-node single-link topology. -| | ... -| | ${m_int}= | Convert To Integer | ${m} -| | ${dut1_numa}= | Get interfaces numa node | ${dut1} -| | ... | ${dut1_if1} | ${dut1_if2} -| | ${dut2_numa}= | Get interfaces numa node | ${dut2} -| | ... | ${dut2_if1} | ${dut2_if2} -| | ${dut1_cpu_main}= | Cpu list per node str | ${dut1} | ${dut1_numa} -| | ... | skip_cnt=${1} | cpu_cnt=${1} | smt_used=${True} -| | ${dut1_cpu_w}= | Cpu list per node str | ${dut1} | ${dut1_numa} -| | ... | skip_cnt=${2} | cpu_cnt=${m_int} | smt_used=${True} -| | ${dut2_cpu_main}= | Cpu list per node str | ${dut2} | ${dut2_numa} -| | ... | skip_cnt=${1} | cpu_cnt=${1} | smt_used=${True} -| | ${dut2_cpu_w}= | Cpu list per node str | ${dut2} | ${dut2_numa} -| | ... | skip_cnt=${2} | cpu_cnt=${m_int} | smt_used=${True} -| | Run keyword | DUT1.Add CPU Main Core | ${dut1_cpu_main} -| | Run keyword | DUT2.Add CPU Main Core | ${dut2_cpu_main} -| | Run keyword | DUT1.Add CPU Corelist Workers | ${dut1_cpu_w} -| | Run keyword | DUT2.Add CPU Corelist Workers | ${dut2_cpu_w} -| | Run keyword | DUT1.Add DPDK Dev Default RXQ | ${n} -| | Run keyword | DUT2.Add DPDK Dev Default RXQ | ${n} - -| Add '${m}' worker threads using SMT and '${n}' rxqueues in 2-node single-link circular topology -| | [Documentation] | Setup M worker threads and N rxqueues in vpp startup\ -| | ... | configuration on all DUTs in 2-node single-link topology. -| | ... -| | ${m_int}= | Convert To Integer | ${m} -| | ${dut1_numa}= | Get interfaces numa node | ${dut1} -| | ... | ${dut1_if1} | ${dut1_if2} -| | ${dut1_cpu_main}= | Cpu list per node str | ${dut1} | ${dut1_numa} -| | ... | skip_cnt=${1} | cpu_cnt=${1} | smt_used=${True} -| | ${dut1_cpu_w}= | Cpu list per node str | ${dut1} | ${dut1_numa} -| | ... | skip_cnt=${2} | cpu_cnt=${m_int} | smt_used=${True} -| | Run keyword | DUT1.Add CPU Main Core | ${dut1_cpu_main} -| | Run keyword | DUT1.Add CPU Corelist Workers | ${dut1_cpu_w} -| | Run keyword | DUT1.Add DPDK Dev Default RXQ | ${n} - -| Add no multi seg to all DUTs -| | [Documentation] | Add No Multi Seg to VPP startup configuration to all DUTs. -| | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Run keyword | ${dut}.Add DPDK No Multi Seg - -| Add SNAT to all DUTs -| | [Documentation] | Add SNAT configuration to all DUTs. -| | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Run keyword | ${dut}.Add SNAT - -| Add cryptodev to all DUTs -| | [Documentation] | Add Cryptodev to VPP startup configuration to all DUTs. -| | ... -| | ... | *Arguments:* -| | ... | - ${count} - Number of QAT devices. Type: integer -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Add cryptodev to all DUTs \| ${4} \| -| | ... -| | [Arguments] | ${count} -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Run keyword | ${dut}.Add DPDK Cryptodev | ${count} - -| Apply startup configuration on all VPP DUTs -| | [Documentation] | Write startup configuration and restart VPP on all DUTs. -| | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Run keyword | ${dut}.Apply Config -| | Update All Interface Data On All Nodes | ${nodes} | skip_tg=${TRUE} - -| Save VPP PIDs -| | [Documentation] | Get PIDs of VPP processes from all DUTs in topology and\ -| | ... | set it as a test variable. The PIDs are stored as dictionary items\ -| | ... | where the key is the host and the value is the PID. -| | ... -| | ${setup_vpp_pids}= | Get VPP PIDs | ${nodes} -| | ${keys}= | Get Dictionary Keys | ${setup_vpp_pids} -| | :FOR | ${key} | IN | @{keys} -| | | ${pid}= | Get From Dictionary | ${setup_vpp_pids} | ${key} -| | | Run Keyword If | $pid is None | FAIL | No VPP PID found on node ${key} -| | | Run Keyword If | ',' in '${pid}' -| | | ... | FAIL | More then one VPP PID found on node ${key}: ${pid} -| | Set Test Variable | ${setup_vpp_pids} - -| Verify VPP PID in Teardown -| | [Documentation] | Check if the VPP PIDs on all DUTs are the same at the end\ -| | ... | of test as they were at the begining. If they are not, only a message\ -| | ... | is printed on console and to log. The test will not fail. -| | ... -| | ${teardown_vpp_pids}= | Get VPP PIDs | ${nodes} -| | ${err_msg}= | Catenate | ${SUITE NAME} - ${TEST NAME} -| | ... | \nThe VPP PIDs are not equal!\nTest Setup VPP PIDs: -| | ... | ${setup_vpp_pids}\nTest Teardown VPP PIDs: ${teardown_vpp_pids} -| | ${rc} | ${msg}= | Run keyword and ignore error -| | ... | Dictionaries Should Be Equal -| | ... | ${setup_vpp_pids} | ${teardown_vpp_pids} -| | Run Keyword And Return If | '${rc}'=='FAIL' | Log | ${err_msg} -| | ... | console=yes | level=WARN - -| Set up functional test -| | [Documentation] | Common test setup for functional tests. -| | ... -| | Configure all DUTs before test -| | Save VPP PIDs -| | Configure all TGs for traffic script -| | Update All Interface Data On All Nodes | ${nodes} -| | Reset VAT History On All DUTs | ${nodes} - -| Tear down functional test -| | [Documentation] | Common test teardown for functional tests. -| | ... -| | Show Packet Trace on All DUTs | ${nodes} -| | Show VAT History On All DUTs | ${nodes} -| | Vpp Show Errors On All DUTs | ${nodes} -| | Verify VPP PID in Teardown - -| Tear down LISP functional test -| | [Documentation] | Common test teardown for functional tests with LISP. -| | ... -| | Show Packet Trace on All DUTs | ${nodes} -| | Show VAT History On All DUTs | ${nodes} -| | Show Vpp Settings | ${nodes['DUT1']} -| | Show Vpp Settings | ${nodes['DUT2']} -| | Vpp Show Errors On All DUTs | ${nodes} -| | Verify VPP PID in Teardown - -| Tear down LISP functional test with QEMU -| | [Documentation] | Common test teardown for functional tests with LISP and\ -| | ... | QEMU. -| | ... -| | ... | *Arguments:* -| | ... | - vm_node - VM to stop. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Tear down LISP functional test with QEMU \| ${vm_node} \| -| | ... -| | [Arguments] | ${vm_node} -| | ... -| | Show Packet Trace on All DUTs | ${nodes} -| | Show VAT History On All DUTs | ${nodes} -| | Show Vpp Settings | ${nodes['DUT1']} -| | Show Vpp Settings | ${nodes['DUT2']} -| | Vpp Show Errors On All DUTs | ${nodes} -| | Stop and clear QEMU | ${nodes['DUT1']} | ${vm_node} -| | Verify VPP PID in Teardown - -| Set up TAP functional test -| | [Documentation] | Common test setup for functional tests with TAP. -| | ... -| | Set up functional test -| | Clean Up Namespaces | ${nodes['DUT1']} - -| Tear down TAP functional test -| | [Documentation] | Common test teardown for functional tests with TAP. -| | ... -| | Tear down functional test -| | Clean Up Namespaces | ${nodes['DUT1']} - -| Tear down TAP functional test with Linux bridge -| | [Documentation] | Common test teardown for functional tests with TAP and -| | ... | a Linux bridge. -| | ... -| | ... | *Arguments:* -| | ... | - bid_TAP - Bridge name. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Tear down TAP functional test with Linux bridge \| ${bid_TAP} \| -| | ... -| | [Arguments] | ${bid_TAP} -| | ... -| | Tear down functional test -| | Linux Del Bridge | ${nodes['DUT1']} | ${bid_TAP} -| | Clean Up Namespaces | ${nodes['DUT1']} diff --git a/resources/libraries/robot/dhcp_client.robot b/resources/libraries/robot/dhcp_client.robot deleted file mode 100644 index 192ab2b729..0000000000 --- a/resources/libraries/robot/dhcp_client.robot +++ /dev/null @@ -1,141 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | Collections -| Resource | resources/libraries/robot/default.robot -| Library | resources.libraries.python.Dhcp.DhcpClient -| Library | resources.libraries.python.TrafficScriptExecutor -| Documentation | DHCP Client specific keywords. - -*** Keywords *** -| Verify DHCP DISCOVER header -| | [Documentation] | Check if DHCP DISCOVER message contains all required -| | ... | fields. -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - TG node. Type: dictionary -| | ... | - interface - TG interface where listen for DHCP DISCOVER message. -| | ... | Type: string -| | ... | - src_mac - DHCP client MAC address. Type: string -| | ... | - hostname - DHCP client hostname (Optional, Default="", if not -| | ... | specified, the hostname is not checked). Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Verify DHCP DISCOVER header \| ${nodes['TG']} \ -| | ... | \| eth2 \| 08:00:27:66:b8:57 \| -| | ... | \| Verify DHCP DISCOVER header \| ${nodes['TG']} \ -| | ... | \| eth2 \| 08:00:27:66:b8:57 \| client-hostname \| -| | ... -| | [Arguments] | ${tg_node} | ${interface} | ${src_mac} | ${hostname}=${EMPTY} -| | ${interface_name}= | Get interface name | ${tg_node} | ${interface} -| | ${args}= | Catenate | --rx_if | ${interface_name} | --rx_src_mac | ${src_mac} -| | ${args}= | Run Keyword If | "${hostname}" == "" | Set Variable | ${args} -| | ... | ELSE | Catenate | ${args} | --hostname | ${hostname} -| | Run Traffic Script On Node | dhcp/check_dhcp_discover.py -| | ... | ${tg_node} | ${args} - - -| Verify DHCP REQUEST after OFFER -| | [Documentation] | Check if DHCP REQUEST message contains all required -| | ... | fields. DHCP REQUEST should be send by a client after DHCP OFFER -| | ... | message sent by a server. -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - TG node. Type: dictionary -| | ... | - tg_interface - TG interface where listen for DHCP DISCOVER, -| | ... | send DHCP OFFER and listen for DHCP REQUEST messages. Type: string -| | ... | - server_mac - DHCP server MAC address. Type: string -| | ... | - server_ip - DHCP server IP address. Type: string -| | ... | - client_mac - DHCP client MAC address. Type: string -| | ... | - client_ip - IP address that should be offered to client. -| | ... | Type: string -| | ... | - client_mask - IP netmask that should be offered to client. -| | ... | Type: string -| | ... | - hostname - DHCP client hostname (Optional, Default="", if not -| | ... | specified, the hostname is not checked). Type: string -| | ... | - offer_xid - Transaction ID (Optional, Default="", if not specified -| | ... | xid field in DHCP OFFER is same as in DHCP DISCOVER message). -| | ... | Type: integer -| | ... -| | ... | *Return:* -| | ... | - No value returned. -| | ... -| | ... | *Raises:* -| | ... | - DHCP REQUEST Rx timeout - if no DHCP REQUEST is received. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Verify DHCP REQUEST after OFFER \| ${nodes['TG']} \ -| | ... | \| eth2 \| 08:00:27:66:b8:57 \| 192.168.23.1 \ -| | ... | \| 08:00:27:46:2b:4c \| 192.168.23.10 \| 255.255.255.0 \| -| | ... -| | ... | \| Run Keyword And Expect Error \| DHCP REQUEST Rx timeout \ -| | ... | \| Verify DHCP REQUEST after OFFER \ -| | ... | \| ${nodes['TG']} \| eth2 \| 08:00:27:66:b8:57 \| 192.168.23.1 \ -| | ... | \| 08:00:27:46:2b:4c \| 192.168.23.10 \| 255.255.255.0 \ -| | ... | \| offer_xid=11113333 \| -| | ... -| | [Arguments] | ${tg_node} | ${tg_interface} | ${server_mac} | ${server_ip} -| | ... | ${client_mac} | ${client_ip} | ${client_mask} -| | ... | ${hostname}=${EMPTY} | ${offer_xid}=${EMPTY} -| | ${tg_interface_name}= | Get interface name | ${tg_node} | ${tg_interface} -| | ${args}= | Catenate | --rx_if | ${tg_interface_name} | --server_mac -| | ... | ${server_mac} | --server_ip | ${server_ip} | --client_mac -| | ... | ${client_mac} | --client_ip | ${client_ip} | --client_mask -| | ... | ${client_mask} -| | ${args}= | Run Keyword If | "${hostname}" == "" | Set Variable | ${args} -| | ... | ELSE | Catenate | ${args} | --hostname | ${hostname} -| | ${args}= | Run Keyword If | "${offer_xid}" == "" | Set Variable | ${args} -| | ... | ELSE | Catenate | ${args} | --offer_xid | ${offer_xid} -| | Run Traffic Script On Node | dhcp/check_dhcp_request.py -| | ... | ${tg_node} | ${args} - - -| Configure IP on client via DHCP -| | [Documentation] | Run script that sends IP configuration to the DHCP client. -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - TG node. Type: dictionary -| | ... | - tg_interface - TG interface where listen for DHCP DISCOVER, -| | ... | send DHCP OFFER and DHCP ACK after DHCP REQUEST messages. -| | ... | Type: string -| | ... | - server_mac - DHCP server MAC address. Type: string -| | ... | - server_ip - DHCP server IP address. Type: string -| | ... | - client_ip - IP address that is offered to client. Type: string -| | ... | - client_mask - IP netmask that is offered to client. Type: string -| | ... | - lease_time - IP lease time in seconds. Type: integer -| | ... -| | ... | *Return:* -| | ... | - No value returned. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Configure IP on client via DHCP \| ${nodes['TG']} \ -| | ... | \| eth2 \| 08:00:27:66:b8:57 \| 192.168.23.1 \ -| | ... | \| 192.168.23.10 \| 255.255.255.0 \| 86400 \| -| | ... -| | [Arguments] | ${tg_node} | ${tg_interface} -| | ... | ${server_mac} | ${server_ip} | ${client_ip} | ${client_mask} -| | ... | ${lease_time} -| | ${tg_interface_name}= | Get interface name | ${tg_node} | ${tg_interface} -| | ${args}= | Catenate | --rx_if | ${tg_interface_name} -| | ... | --server_mac | ${server_mac} | --server_ip | ${server_ip} -| | ... | --client_ip | ${client_ip} | --client_mask | ${client_mask} -| | ... | --lease_time | ${lease_time} -| | Run Traffic Script On Node | dhcp/check_dhcp_request_ack.py -| | ... | ${tg_node} | ${args} diff --git a/resources/libraries/robot/dhcp_proxy.robot b/resources/libraries/robot/dhcp_proxy.robot deleted file mode 100644 index e2b16e5149..0000000000 --- a/resources/libraries/robot/dhcp_proxy.robot +++ /dev/null @@ -1,159 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | Collections -| Resource | resources/libraries/robot/default.robot -| Library | resources.libraries.python.Dhcp.DhcpProxy -| Library | resources.libraries.python.TrafficScriptExecutor -| Documentation | DHCP Proxy specific keywords. - -*** Keywords *** -| Send DHCP messages and check answer -| | [Documentation] | Send and receive DHCP messages between client -| | ... | and server through DHCP proxy. -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - TG node. Type: dictionary -| | ... | - tg_interface1 - TG interface. Type: string -| | ... | - tg_interface2 - TG interface. Type: string -| | ... | - server_ip - DHCP server IP address. Type: string -| | ... | - server_mac - DHCP server MAC address. Type: string -| | ... | - client_ip - Client IP address. Type: string -| | ... | - client_mac - Client MAC address. Type: string -| | ... | - proxy_ip - DHCP proxy IP address. Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send DHCP messages and check answer \| ${nodes['TG']} \ -| | ... | \| eth3 \| eth4 \| 192.168.0.100 \| 08:00:27:cc:4f:54 \ -| | ... | \| 172.16.0.2 \| 08:00:27:64:18:d2 \| 172.16.0.1 \| -| | ... -| | [Arguments] | ${tg_node} | ${tg_interface1} | ${tg_interface2} -| | ... | ${server_ip} | ${server_mac} | ${client_ip} | ${client_mac} -| | ... | ${proxy_ip} | -| | ${tg_interface_name1}= | Get interface name | ${tg_node} | ${tg_interface1} -| | ${tg_interface_name2}= | Get interface name | ${tg_node} | ${tg_interface2} -| | ${args}= | Catenate | --tx_if | ${tg_interface_name1} -| | ... | --rx_if | ${tg_interface_name2} -| | ... | --server_ip | ${server_ip} -| | ... | --server_mac | ${server_mac} -| | ... | --client_ip | ${client_ip} -| | ... | --client_mac | ${client_mac} -| | ... | --proxy_ip | ${proxy_ip} -| | Run Traffic Script On Node | dhcp/send_and_check_proxy_messages.py -| | ... | ${tg_node} | ${args} - -| Send DHCP DISCOVER and check answer -| | [Documentation] | Send and receive DHCP DISCOVER. -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - TG node. Type: dictionary -| | ... | - tg_interface1 - TG interface. Type: string -| | ... | - tg_interface2 - TG interface. Type: string -| | ... | - tx_src_ip - Source address of DHCP DISCOVER packet. Type: string -| | ... | - tx_dst_ip - Destination address of DHCP DISCOVER packet. Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send DHCP DISCOVER and check answer \| ${nodes['TG']} \ -| | ... | \| eth3 \| eth4 \| 0.0.0.0 \| 255.255.255.255 \| -| | ... -| | [Arguments] | ${tg_node} | ${tg_interface1} | ${tg_interface2} -| | ... | ${tx_src_ip} | ${tx_dst_ip} | -| | ${tg_interface_name1}= | Get interface name | ${tg_node} | ${tg_interface1} -| | ${tg_interface_name2}= | Get interface name | ${tg_node} | ${tg_interface2} -| | ${args}= | Catenate | --tx_if | ${tg_interface_name1} -| | ... | --rx_if | ${tg_interface_name2} -| | ... | --tx_src_ip | ${tx_src_ip} -| | ... | --tx_dst_ip | ${tx_dst_ip} -| | Run Traffic Script On Node | dhcp/send_and_check_proxy_discover.py -| | ... | ${tg_node} | ${args} - -| DHCP DISCOVER should fail -| | [Documentation] | Send and receive DHCP DISCOVER should fail. -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - TG node. Type: dictionary -| | ... | - tg_interface1 - TG interface. Type: string -| | ... | - tg_interface2 - TG interface. Type: string -| | ... | - tx_src_ip - Source address of DHCP DISCOVER packet. Type: string -| | ... | - tx_dst_ip - Destination address of DHCP DISCOVER packet. Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| DHCP DISCOVER should fail \| ${nodes['TG']} \ -| | ... | \| eth3 \| eth4 \| 0.0.0.0 \| 255.255.255.1 \| -| | ... -| | [Arguments] | ${tg_node} | ${tg_interface1} | ${tg_interface2} -| | ... | ${tx_src_ip} | ${tx_dst_ip} | -| | ${tg_interface_name1}= | Get interface name | ${tg_node} | ${tg_interface1} -| | ${tg_interface_name2}= | Get interface name | ${tg_node} | ${tg_interface2} -| | ${args}= | Catenate | --tx_if | ${tg_interface_name1} -| | ... | --rx_if | ${tg_interface_name2} -| | ... | --tx_src_ip | ${tx_src_ip} -| | ... | --tx_dst_ip | ${tx_dst_ip} -| | Run Keyword And Expect Error | DHCP DISCOVER Rx timeout -| | ... | Run Traffic Script On Node | dhcp/send_and_check_proxy_discover.py -| | ... | ${tg_node} | ${args} - -| Send DHCPv6 Messages -| | [Documentation] | Send and receive DHCPv6 messages between client -| | ... | and server through DHCPv6 proxy. -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - TG node. Type: dictionary -| | ... | - tg_interface1 - TG interface. Type: string -| | ... | - tg_interface2 - TG interface. Type: string -| | ... | - proxy_ip - DHCPv6 proxy IP address. Type: string -| | ... | - proxy_mac - Proxy MAC address. Type: string -| | ... | - server_ip - DHCPv6 server IP address. Type: string -| | ... | - server_mac - Server MAC address. Type: string -| | ... | - client_mac - Client MAC address. Type: string -| | ... | - proxy_to_server_mac - MAC address of proxy interface -| | ... | connected to server. Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send DHCPv6 Messages \| ${nodes['TG']} \ -| | ... | \| eth3 \| eth4 \| 3ffe:62::1 \| 08:00:27:54:59:f9 \ -| | ... | \| 3ffe:63::2 \| 08:00:27:cc:4f:54 \| -| | ... | \| 08:00:27:64:18:d2 \| 08:00:27:c9:6a:d5 \| -| | ... -| | [Arguments] | ${tg_node} | ${tg_interface1} | ${tg_interface2} | ${proxy_ip} -| | ... | ${proxy_mac} | ${server_ip} | ${server_mac} | ${client_mac} -| | ... | ${proxy_to_server_mac} -| | ${tg_interface_name1}= | Get interface name | ${tg_node} | ${tg_interface1} -| | ${tg_interface_name2}= | Get interface name | ${tg_node} | ${tg_interface2} -| | ${args}= | Catenate | --tx_if | ${tg_interface_name1} -| | ... | --rx_if | ${tg_interface_name2} -| | ... | --proxy_ip | ${proxy_ip} -| | ... | --proxy_mac | ${proxy_mac} -| | ... | --server_ip | ${server_ip} -| | ... | --server_mac | ${server_mac} -| | ... | --client_mac | ${client_mac} -| | ... | --proxy_to_server_mac | ${proxy_to_server_mac} -| | Run Traffic Script On Node | dhcp/send_dhcp_v6_messages.py -| | ... | ${tg_node} | ${args} diff --git a/resources/libraries/robot/double_qemu_setup.robot b/resources/libraries/robot/double_qemu_setup.robot deleted file mode 100644 index 377e222804..0000000000 --- a/resources/libraries/robot/double_qemu_setup.robot +++ /dev/null @@ -1,95 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -*** Settings *** -| Library | resources.libraries.python.IPUtil - -*** Keywords *** -| Configure QEMU vhost and run it -| | [Documentation] | Setup Qemu with 4 vhost-user interfaces and 4 namespaces. -| | ... | Each call will be different object instance. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - Node where to setup qemu. Type: dict -| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string -| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string -| | ... | - sock3 - Socket path for third Vhost-User interface. Type: string -| | ... | - sock4 - Socket path for forth Vhost-User interface. Type: string -| | ... | - ip1 - IP address for namespace 1. Type: string -| | ... | - ip2 - IP address for namespace 2. Type: string -| | ... | - ip3 - IP address for namespace 3. Type: string -| | ... | - ip4 - IP address for namespace 4. Type: string -| | ... | - prefix_length - IP prefix length. Type: int -| | ... | - qemu_name - Qemu instance name by which the object will be accessed. -| | ... | Type: string -| | ... | - mac_ID - MAC address ID used to differentiate qemu instances and -| | ... | namespaces assigned to them. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Setup QEMU Vhost And Run\| {nodes['DUT1']} \| /tmp/sock1 \ -| | ... | \| /tmp/sock2 \| /tmp/sock3 \| /tmp/sock4 \| 16.0.0.1 \| 16.0.0.2 \ -| | ... | \| 16.0.0.3 \| 16.0.0.4 \| 24 \| qemu_instance_1 \| 06 \| -| | ... -| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${sock3} | ${sock4} -| | ... | ${ip1} | ${ip2} | ${ip3} | ${ip4} | ${prefix_length} -| | ... | ${qemu_name} | ${mac_ID} -| | Import Library | resources.libraries.python.QemuUtils \ -| | ... | WITH NAME | ${qemu_name} -| | ${qemu_add_vhost}= | Replace Variables | ${qemu_name}.Qemu Add Vhost User If -| | ${qemu_set_node}= | Replace Variables | ${qemu_name}.Qemu Set Node -| | ${qemu_start}= | Replace Variables | ${qemu_name}.Qemu Start -| | Run keyword | ${qemu_add_vhost} | ${sock1} | mac=52:54:00:00:${mac_ID}:01 -| | Run keyword | ${qemu_add_vhost} | ${sock2} | mac=52:54:00:00:${mac_ID}:02 -| | Run keyword | ${qemu_add_vhost} | ${sock3} | mac=52:54:00:00:${mac_ID}:03 -| | Run keyword | ${qemu_add_vhost} | ${sock4} | mac=52:54:00:00:${mac_ID}:04 -| | Run keyword | ${qemu_set_node} | ${dut_node} -| | ${vm}= | Run keyword | ${qemu_start} -| | ${vhost1}= | Get Vhost User If Name By Sock | ${vm} | ${sock1} -| | ${vhost2}= | Get Vhost User If Name By Sock | ${vm} | ${sock2} -| | ${vhost3}= | Get Vhost User If Name By Sock | ${vm} | ${sock3} -| | ${vhost4}= | Get Vhost User If Name By Sock | ${vm} | ${sock4} -| | Set Interface State | ${vm} | ${vhost1} | up | if_type=name -| | Set Interface State | ${vm} | ${vhost2} | up | if_type=name -| | Set Interface State | ${vm} | ${vhost3} | up | if_type=name -| | Set Interface State | ${vm} | ${vhost4} | up | if_type=name -| | Setup Network Namespace -| | ... | ${vm} | nmspace1 | ${vhost1} | ${ip1} | ${prefix_length} -| | Setup Network Namespace -| | ... | ${vm} | nmspace2 | ${vhost2} | ${ip2} | ${prefix_length} -| | Setup Network Namespace -| | ... | ${vm} | nmspace3 | ${vhost3} | ${ip3} | ${prefix_length} -| | Setup Network Namespace -| | ... | ${vm} | nmspace4 | ${vhost4} | ${ip4} | ${prefix_length} -| | Set Test Variable | ${${qemu_name}} | ${vm} - -| Tear down QEMU -| | [Documentation] | Stop specific qemu instance -| | ... | running on ${dut_node}, ${vm} is VM node info dictionary -| | ... | returned by qemu_start or None. -| | ... | *Arguments:* -| | ... | - dut_node - Node where to clean qemu. Type: dict -| | ... | - vm - VM node info dictionary. Type: string -| | ... | - qemu_name - Qemu instance by name. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Tear down QEMU \| ${node['DUT1']} \| ${vm} \| qemu_node_1 \| -| | ... -| | [Arguments] | ${dut_node} | ${vm} | ${qemu_name} -| | ${set_node}= | Replace Variables | ${qemu_name}.Qemu Set Node -| | ${kill}= | Replace Variables | ${qemu_name}.Qemu Kill -| | ${clear_socks}= | Replace Variables | ${qemu_name}.Qemu Clear Socks -| | Run Keyword | ${set_node} | ${dut_node} -| | Run Keyword | ${kill} -| | Run Keyword | ${clear_socks} -| | Run Keyword If | ${vm} is not None | Disconnect | ${vm} diff --git a/resources/libraries/robot/dpdk/default.robot b/resources/libraries/robot/dpdk/default.robot new file mode 100644 index 0000000000..e6921c9b27 --- /dev/null +++ b/resources/libraries/robot/dpdk/default.robot @@ -0,0 +1,110 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Variables | resources/libraries/python/topology.py +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.CpuUtils +| Library | resources.libraries.python.DUTSetup +| Library | resources.libraries.python.TGSetup +| Library | resources.libraries.python.DPDK.L2fwdTest +| Library | resources.libraries.python.DPDK.L3fwdTest +| Library | Collections + +*** Keywords *** +| Start L2FWD '${m}' worker threads and '${n}' rxqueues with jumbo frames '${b}' +| | [Documentation] | Start the l2fwd with M worker threads without SMT +| | ... | and rxqueues N and B (yes or no) jumbo frames in all DUTs. +| | ... +| | ${m_int}= | Convert To Integer | ${m} +| | ${cpu_cnt}= | Evaluate | ${m_int}+1 +| | ${nb_cores}= | Convert to String | ${m} +| | ${rxqueues}= | Convert to String | ${n} +| | ${jumbo_frames}= | Convert to String | ${b} +| | ${dut1_numa}= | Get interfaces numa node | ${dut1} +| | ... | ${dut1_if1} | ${dut1_if2} +| | ${dut2_numa}= | Get interfaces numa node | ${dut2} +| | ... | ${dut2_if1} | ${dut2_if2} +| | ${dut1_cpus}= | Cpu Range Per Node Str | ${dut1} | ${dut1_numa} +| | ... | skip_cnt=${1} | cpu_cnt=${cpu_cnt} +| | ${dut2_cpus}= | Cpu Range Per Node Str | ${dut2} | ${dut2_numa} +| | ... | skip_cnt=${1} | cpu_cnt=${cpu_cnt} +| | Start the l2fwd test | ${dut1} | ${dut1_cpus} | ${nb_cores} | ${rxqueues} +| | ... | ${jumbo_frames} +| | Start the l2fwd test | ${dut2} | ${dut2_cpus} | ${nb_cores} | ${rxqueues} +| | ... | ${jumbo_frames} + +| Start L2FWD '${m}' worker threads using SMT and '${n}' rxqueues with jumbo frames '${b}' +| | [Documentation] | Start the l2fwd with M worker threads with SMT +| | ... | and rxqueues N and B (yes or no) jumbo frames in all DUTs. +| | ... +| | ${m_int}= | Convert To Integer | ${m} +| | ${cpu_cnt}= | Evaluate | ${m_int}+1 +| | ${nb_cores_int}= | Evaluate | ${m_int}*2 +| | ${nb_cores}= | Convert to String | ${nb_cores_int} +| | ${rxqueues}= | Convert to String | ${n} +| | ${jumbo_frames}= | Convert to String | ${b} +| | ${dut1_numa}= | Get interfaces numa node | ${dut1} +| | ... | ${dut1_if1} | ${dut1_if2} +| | ${dut2_numa}= | Get interfaces numa node | ${dut2} +| | ... | ${dut2_if1} | ${dut2_if2} +| | ${dut1_cpus}= | Cpu Range Per Node Str | ${dut1} | ${dut1_numa} +| | ... | skip_cnt=${1} | cpu_cnt=${cpu_cnt} | smt_used=${True} +| | ${dut2_cpus}= | Cpu Range Per Node Str | ${dut2} | ${dut2_numa} +| | ... | skip_cnt=${1} | cpu_cnt=${cpu_cnt} | smt_used=${True} +| | Start the l2fwd test | ${dut1} | ${dut1_cpus} | ${nb_cores} | ${rxqueues} +| | ... | ${jumbo_frames} +| | Start the l2fwd test | ${dut2} | ${dut2_cpus} | ${nb_cores} | ${rxqueues} +| | ... | ${jumbo_frames} + +| Start L3FWD '${m}' worker threads and '${n}' rxqueues with jumbo frames '${b}' +| | [Documentation] | Start the l3fwd with M worker threads without SMT +| | ... | and rxqueues N and B(yes or no) jumbo frames in all DUTs. +| | ${cpu_cnt}= | Convert To Integer | ${m} +| | ${nb_cores}= | Convert to String | ${m} +| | ${rxqueues}= | Convert to String | ${n} +| | ${jumbo_frames}= | Convert to String | ${b} +| | ${dut1_numa}= | Get interfaces numa node | ${dut1} +| | ... | ${dut1_if1} | ${dut1_if2} +| | ${dut2_numa}= | Get interfaces numa node | ${dut2} +| | ... | ${dut2_if1} | ${dut2_if2} +| | ${dut1_cpus}= | Cpu List Per Node Str | ${dut1} | ${dut1_numa} +| | ... | cpu_cnt=${cpu_cnt} +| | ${dut2_cpus}= | Cpu List Per Node Str | ${dut2} | ${dut2_numa} +| | ... | cpu_cnt=${cpu_cnt} +| | Start the l3fwd test | ${nodes} | ${dut1} | ${dut1_if1} | ${dut1_if2} +| | ... | ${nb_cores} | ${dut1_cpus} | ${rxqueues} | ${jumbo_frames} +| | Start the l3fwd test | ${nodes} | ${dut2} | ${dut2_if1} | ${dut2_if2} +| | ... | ${nb_cores} | ${dut2_cpus} | ${rxqueues} | ${jumbo_frames} + +| Start L3FWD '${m}' worker threads using SMT and '${n}' rxqueues with jumbo frames '${b}' +| | [Documentation] | Start the l3fwd with M worker threads with SMT +| | ... | and rxqueues N and B(yes or no) jumbo frames in all DUTs. +| | ${cpu_cnt}= | Convert To Integer | ${m} +| | ${nb_cores_int}= | Evaluate | ${cpu_cnt}*2 +| | ${nb_cores}= | Convert to String | ${nb_cores_int} +| | ${rxqueues}= | Convert to String | ${n} +| | ${jumbo_frames}= | Convert to String | ${b} +| | ${dut1_numa}= | Get interfaces numa node | ${dut1} +| | ... | ${dut1_if1} | ${dut1_if2} +| | ${dut2_numa}= | Get interfaces numa node | ${dut2} +| | ... | ${dut2_if1} | ${dut2_if2} +| | ${dut1_cpus}= | Cpu List Per Node Str | ${dut1} | ${dut1_numa} +| | ... | cpu_cnt=${cpu_cnt} | smt_used=${True} +| | ${dut2_cpus}= | Cpu List Per Node Str | ${dut2} | ${dut2_numa} +| | ... | cpu_cnt=${cpu_cnt} | smt_used=${True} +| | Start the l3fwd test | ${nodes} | ${dut1} | ${dut1_if1} | ${dut1_if2} +| | ... | ${nb_cores} | ${dut1_cpus} | ${rxqueues} | ${jumbo_frames} +| | Start the l3fwd test | ${nodes} | ${dut2} | ${dut2_if1} | ${dut2_if2} +| | ... | ${nb_cores} | ${dut2_cpus} | ${rxqueues} | ${jumbo_frames} + diff --git a/resources/libraries/robot/fds/default.robot b/resources/libraries/robot/fds/default.robot index 83657e9fb4..2808ec08db 100644 --- a/resources/libraries/robot/fds/default.robot +++ b/resources/libraries/robot/fds/default.robot @@ -12,8 +12,8 @@ # limitations under the License. *** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/double_qemu_setup.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/vm/double_qemu_setup.robot | Library | resources.libraries.python.VatHistory | Library | resources.libraries.python.Trace | ... diff --git a/resources/libraries/robot/features/dhcp_client.robot b/resources/libraries/robot/features/dhcp_client.robot new file mode 100644 index 0000000000..efc016741a --- /dev/null +++ b/resources/libraries/robot/features/dhcp_client.robot @@ -0,0 +1,141 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | Collections +| Resource | resources/libraries/robot/shared/default.robot +| Library | resources.libraries.python.Dhcp.DhcpClient +| Library | resources.libraries.python.TrafficScriptExecutor +| Documentation | DHCP Client specific keywords. + +*** Keywords *** +| Verify DHCP DISCOVER header +| | [Documentation] | Check if DHCP DISCOVER message contains all required +| | ... | fields. +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - TG node. Type: dictionary +| | ... | - interface - TG interface where listen for DHCP DISCOVER message. +| | ... | Type: string +| | ... | - src_mac - DHCP client MAC address. Type: string +| | ... | - hostname - DHCP client hostname (Optional, Default="", if not +| | ... | specified, the hostname is not checked). Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Verify DHCP DISCOVER header \| ${nodes['TG']} \ +| | ... | \| eth2 \| 08:00:27:66:b8:57 \| +| | ... | \| Verify DHCP DISCOVER header \| ${nodes['TG']} \ +| | ... | \| eth2 \| 08:00:27:66:b8:57 \| client-hostname \| +| | ... +| | [Arguments] | ${tg_node} | ${interface} | ${src_mac} | ${hostname}=${EMPTY} +| | ${interface_name}= | Get interface name | ${tg_node} | ${interface} +| | ${args}= | Catenate | --rx_if | ${interface_name} | --rx_src_mac | ${src_mac} +| | ${args}= | Run Keyword If | "${hostname}" == "" | Set Variable | ${args} +| | ... | ELSE | Catenate | ${args} | --hostname | ${hostname} +| | Run Traffic Script On Node | dhcp/check_dhcp_discover.py +| | ... | ${tg_node} | ${args} + + +| Verify DHCP REQUEST after OFFER +| | [Documentation] | Check if DHCP REQUEST message contains all required +| | ... | fields. DHCP REQUEST should be send by a client after DHCP OFFER +| | ... | message sent by a server. +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - TG node. Type: dictionary +| | ... | - tg_interface - TG interface where listen for DHCP DISCOVER, +| | ... | send DHCP OFFER and listen for DHCP REQUEST messages. Type: string +| | ... | - server_mac - DHCP server MAC address. Type: string +| | ... | - server_ip - DHCP server IP address. Type: string +| | ... | - client_mac - DHCP client MAC address. Type: string +| | ... | - client_ip - IP address that should be offered to client. +| | ... | Type: string +| | ... | - client_mask - IP netmask that should be offered to client. +| | ... | Type: string +| | ... | - hostname - DHCP client hostname (Optional, Default="", if not +| | ... | specified, the hostname is not checked). Type: string +| | ... | - offer_xid - Transaction ID (Optional, Default="", if not specified +| | ... | xid field in DHCP OFFER is same as in DHCP DISCOVER message). +| | ... | Type: integer +| | ... +| | ... | *Return:* +| | ... | - No value returned. +| | ... +| | ... | *Raises:* +| | ... | - DHCP REQUEST Rx timeout - if no DHCP REQUEST is received. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Verify DHCP REQUEST after OFFER \| ${nodes['TG']} \ +| | ... | \| eth2 \| 08:00:27:66:b8:57 \| 192.168.23.1 \ +| | ... | \| 08:00:27:46:2b:4c \| 192.168.23.10 \| 255.255.255.0 \| +| | ... +| | ... | \| Run Keyword And Expect Error \| DHCP REQUEST Rx timeout \ +| | ... | \| Verify DHCP REQUEST after OFFER \ +| | ... | \| ${nodes['TG']} \| eth2 \| 08:00:27:66:b8:57 \| 192.168.23.1 \ +| | ... | \| 08:00:27:46:2b:4c \| 192.168.23.10 \| 255.255.255.0 \ +| | ... | \| offer_xid=11113333 \| +| | ... +| | [Arguments] | ${tg_node} | ${tg_interface} | ${server_mac} | ${server_ip} +| | ... | ${client_mac} | ${client_ip} | ${client_mask} +| | ... | ${hostname}=${EMPTY} | ${offer_xid}=${EMPTY} +| | ${tg_interface_name}= | Get interface name | ${tg_node} | ${tg_interface} +| | ${args}= | Catenate | --rx_if | ${tg_interface_name} | --server_mac +| | ... | ${server_mac} | --server_ip | ${server_ip} | --client_mac +| | ... | ${client_mac} | --client_ip | ${client_ip} | --client_mask +| | ... | ${client_mask} +| | ${args}= | Run Keyword If | "${hostname}" == "" | Set Variable | ${args} +| | ... | ELSE | Catenate | ${args} | --hostname | ${hostname} +| | ${args}= | Run Keyword If | "${offer_xid}" == "" | Set Variable | ${args} +| | ... | ELSE | Catenate | ${args} | --offer_xid | ${offer_xid} +| | Run Traffic Script On Node | dhcp/check_dhcp_request.py +| | ... | ${tg_node} | ${args} + + +| Configure IP on client via DHCP +| | [Documentation] | Run script that sends IP configuration to the DHCP client. +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - TG node. Type: dictionary +| | ... | - tg_interface - TG interface where listen for DHCP DISCOVER, +| | ... | send DHCP OFFER and DHCP ACK after DHCP REQUEST messages. +| | ... | Type: string +| | ... | - server_mac - DHCP server MAC address. Type: string +| | ... | - server_ip - DHCP server IP address. Type: string +| | ... | - client_ip - IP address that is offered to client. Type: string +| | ... | - client_mask - IP netmask that is offered to client. Type: string +| | ... | - lease_time - IP lease time in seconds. Type: integer +| | ... +| | ... | *Return:* +| | ... | - No value returned. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure IP on client via DHCP \| ${nodes['TG']} \ +| | ... | \| eth2 \| 08:00:27:66:b8:57 \| 192.168.23.1 \ +| | ... | \| 192.168.23.10 \| 255.255.255.0 \| 86400 \| +| | ... +| | [Arguments] | ${tg_node} | ${tg_interface} +| | ... | ${server_mac} | ${server_ip} | ${client_ip} | ${client_mask} +| | ... | ${lease_time} +| | ${tg_interface_name}= | Get interface name | ${tg_node} | ${tg_interface} +| | ${args}= | Catenate | --rx_if | ${tg_interface_name} +| | ... | --server_mac | ${server_mac} | --server_ip | ${server_ip} +| | ... | --client_ip | ${client_ip} | --client_mask | ${client_mask} +| | ... | --lease_time | ${lease_time} +| | Run Traffic Script On Node | dhcp/check_dhcp_request_ack.py +| | ... | ${tg_node} | ${args} diff --git a/resources/libraries/robot/features/dhcp_proxy.robot b/resources/libraries/robot/features/dhcp_proxy.robot new file mode 100644 index 0000000000..e6ea69d5d0 --- /dev/null +++ b/resources/libraries/robot/features/dhcp_proxy.robot @@ -0,0 +1,159 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | Collections +| Resource | resources/libraries/robot/shared/default.robot +| Library | resources.libraries.python.Dhcp.DhcpProxy +| Library | resources.libraries.python.TrafficScriptExecutor +| Documentation | DHCP Proxy specific keywords. + +*** Keywords *** +| Send DHCP messages and check answer +| | [Documentation] | Send and receive DHCP messages between client +| | ... | and server through DHCP proxy. +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - TG node. Type: dictionary +| | ... | - tg_interface1 - TG interface. Type: string +| | ... | - tg_interface2 - TG interface. Type: string +| | ... | - server_ip - DHCP server IP address. Type: string +| | ... | - server_mac - DHCP server MAC address. Type: string +| | ... | - client_ip - Client IP address. Type: string +| | ... | - client_mac - Client MAC address. Type: string +| | ... | - proxy_ip - DHCP proxy IP address. Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send DHCP messages and check answer \| ${nodes['TG']} \ +| | ... | \| eth3 \| eth4 \| 192.168.0.100 \| 08:00:27:cc:4f:54 \ +| | ... | \| 172.16.0.2 \| 08:00:27:64:18:d2 \| 172.16.0.1 \| +| | ... +| | [Arguments] | ${tg_node} | ${tg_interface1} | ${tg_interface2} +| | ... | ${server_ip} | ${server_mac} | ${client_ip} | ${client_mac} +| | ... | ${proxy_ip} | +| | ${tg_interface_name1}= | Get interface name | ${tg_node} | ${tg_interface1} +| | ${tg_interface_name2}= | Get interface name | ${tg_node} | ${tg_interface2} +| | ${args}= | Catenate | --tx_if | ${tg_interface_name1} +| | ... | --rx_if | ${tg_interface_name2} +| | ... | --server_ip | ${server_ip} +| | ... | --server_mac | ${server_mac} +| | ... | --client_ip | ${client_ip} +| | ... | --client_mac | ${client_mac} +| | ... | --proxy_ip | ${proxy_ip} +| | Run Traffic Script On Node | dhcp/send_and_check_proxy_messages.py +| | ... | ${tg_node} | ${args} + +| Send DHCP DISCOVER and check answer +| | [Documentation] | Send and receive DHCP DISCOVER. +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - TG node. Type: dictionary +| | ... | - tg_interface1 - TG interface. Type: string +| | ... | - tg_interface2 - TG interface. Type: string +| | ... | - tx_src_ip - Source address of DHCP DISCOVER packet. Type: string +| | ... | - tx_dst_ip - Destination address of DHCP DISCOVER packet. Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send DHCP DISCOVER and check answer \| ${nodes['TG']} \ +| | ... | \| eth3 \| eth4 \| 0.0.0.0 \| 255.255.255.255 \| +| | ... +| | [Arguments] | ${tg_node} | ${tg_interface1} | ${tg_interface2} +| | ... | ${tx_src_ip} | ${tx_dst_ip} | +| | ${tg_interface_name1}= | Get interface name | ${tg_node} | ${tg_interface1} +| | ${tg_interface_name2}= | Get interface name | ${tg_node} | ${tg_interface2} +| | ${args}= | Catenate | --tx_if | ${tg_interface_name1} +| | ... | --rx_if | ${tg_interface_name2} +| | ... | --tx_src_ip | ${tx_src_ip} +| | ... | --tx_dst_ip | ${tx_dst_ip} +| | Run Traffic Script On Node | dhcp/send_and_check_proxy_discover.py +| | ... | ${tg_node} | ${args} + +| DHCP DISCOVER should fail +| | [Documentation] | Send and receive DHCP DISCOVER should fail. +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - TG node. Type: dictionary +| | ... | - tg_interface1 - TG interface. Type: string +| | ... | - tg_interface2 - TG interface. Type: string +| | ... | - tx_src_ip - Source address of DHCP DISCOVER packet. Type: string +| | ... | - tx_dst_ip - Destination address of DHCP DISCOVER packet. Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| DHCP DISCOVER should fail \| ${nodes['TG']} \ +| | ... | \| eth3 \| eth4 \| 0.0.0.0 \| 255.255.255.1 \| +| | ... +| | [Arguments] | ${tg_node} | ${tg_interface1} | ${tg_interface2} +| | ... | ${tx_src_ip} | ${tx_dst_ip} | +| | ${tg_interface_name1}= | Get interface name | ${tg_node} | ${tg_interface1} +| | ${tg_interface_name2}= | Get interface name | ${tg_node} | ${tg_interface2} +| | ${args}= | Catenate | --tx_if | ${tg_interface_name1} +| | ... | --rx_if | ${tg_interface_name2} +| | ... | --tx_src_ip | ${tx_src_ip} +| | ... | --tx_dst_ip | ${tx_dst_ip} +| | Run Keyword And Expect Error | DHCP DISCOVER Rx timeout +| | ... | Run Traffic Script On Node | dhcp/send_and_check_proxy_discover.py +| | ... | ${tg_node} | ${args} + +| Send DHCPv6 Messages +| | [Documentation] | Send and receive DHCPv6 messages between client +| | ... | and server through DHCPv6 proxy. +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - TG node. Type: dictionary +| | ... | - tg_interface1 - TG interface. Type: string +| | ... | - tg_interface2 - TG interface. Type: string +| | ... | - proxy_ip - DHCPv6 proxy IP address. Type: string +| | ... | - proxy_mac - Proxy MAC address. Type: string +| | ... | - server_ip - DHCPv6 server IP address. Type: string +| | ... | - server_mac - Server MAC address. Type: string +| | ... | - client_mac - Client MAC address. Type: string +| | ... | - proxy_to_server_mac - MAC address of proxy interface +| | ... | connected to server. Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send DHCPv6 Messages \| ${nodes['TG']} \ +| | ... | \| eth3 \| eth4 \| 3ffe:62::1 \| 08:00:27:54:59:f9 \ +| | ... | \| 3ffe:63::2 \| 08:00:27:cc:4f:54 \| +| | ... | \| 08:00:27:64:18:d2 \| 08:00:27:c9:6a:d5 \| +| | ... +| | [Arguments] | ${tg_node} | ${tg_interface1} | ${tg_interface2} | ${proxy_ip} +| | ... | ${proxy_mac} | ${server_ip} | ${server_mac} | ${client_mac} +| | ... | ${proxy_to_server_mac} +| | ${tg_interface_name1}= | Get interface name | ${tg_node} | ${tg_interface1} +| | ${tg_interface_name2}= | Get interface name | ${tg_node} | ${tg_interface2} +| | ${args}= | Catenate | --tx_if | ${tg_interface_name1} +| | ... | --rx_if | ${tg_interface_name2} +| | ... | --proxy_ip | ${proxy_ip} +| | ... | --proxy_mac | ${proxy_mac} +| | ... | --server_ip | ${server_ip} +| | ... | --server_mac | ${server_mac} +| | ... | --client_mac | ${client_mac} +| | ... | --proxy_to_server_mac | ${proxy_to_server_mac} +| | Run Traffic Script On Node | dhcp/send_dhcp_v6_messages.py +| | ... | ${tg_node} | ${args} diff --git a/resources/libraries/robot/features/policer.robot b/resources/libraries/robot/features/policer.robot new file mode 100644 index 0000000000..321488b8c5 --- /dev/null +++ b/resources/libraries/robot/features/policer.robot @@ -0,0 +1,99 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Library | resources.libraries.python.Policer +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.IPv4Util +| Library | resources.libraries.python.TrafficScriptExecutor +| Library | resources.libraries.python.IPv6Util +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} +| ... | WITH NAME | dut1_v4 +| Documentation | *Policer keywords* + +*** Keywords *** +| Configure topology for IPv4 policer test +| | [Documentation] | Setup topology for IPv4 policer testing. +| | ... +| | ... | _NOTE:_ This KW sets following test case variables: +| | ... | - dut_to_tg_if1_ip - DUT first interface IP address. Type: string +| | ... | - dut_to_tg_if2_ip - DUT second interface IP address. Type: string +| | ... | - tg_to_dut_if1_ip - TG first interface IP address. Type: string +| | ... | - tg_to_dut_if2_ip - TG second interface IP address. Type: string +| | Configure path in 2-node circular topology | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['TG']} +| | Set interfaces in 2-node circular topology up +| | Set Interface Address | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${dut_to_tg_if1_ip4} | ${ip4_plen} +| | Set Interface Address | ${dut_node} | ${dut_to_tg_if2} +| | ... | ${dut_to_tg_if2_ip4} | ${ip4_plen} +| | dut1_v4.Set ARP | ${dut_to_tg_if2} | ${tg_to_dut_if2_ip4} +| | ... | ${tg_to_dut_if2_mac} +| | Set Test Variable | ${dut_to_tg_if1_ip} | ${dut_to_tg_if1_ip4} +| | Set Test Variable | ${dut_to_tg_if2_ip} | ${dut_to_tg_if2_ip4} +| | Set Test Variable | ${tg_to_dut_if1_ip} | ${tg_to_dut_if1_ip4} +| | Set Test Variable | ${tg_to_dut_if2_ip} | ${tg_to_dut_if2_ip4} + +| Configure topology for IPv6 policer test +| | [Documentation] | Setup topology for IPv6 policer testing. +| | ... +| | ... | _NOTE:_ This KW sets following test case variables: +| | ... | - dut_to_tg_if1_ip - DUT first interface IP address. Type: string +| | ... | - dut_to_tg_if2_ip - DUT second interface IP address. Type: string +| | ... | - tg_to_dut_if1_ip - TG first interface IP address. Type: string +| | ... | - tg_to_dut_if2_ip - TG second interface IP address. Type: string +| | Configure path in 2-node circular topology | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['TG']} +| | Set interfaces in 2-node circular topology up +| | Vpp Set If IPv6 Addr | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${dut_to_tg_if1_ip6} | ${ip6_plen} +| | Vpp Set If IPv6 Addr | ${dut_node} | ${dut_to_tg_if2} +| | ... | ${dut_to_tg_if2_ip6} | ${ip6_plen} +| | Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${tg_to_dut_if2_ip6} +| | ... | ${tg_to_dut_if2_mac} +| | Vpp All RA Suppress Link Layer | ${nodes} +| | Set Test Variable | ${dut_to_tg_if1_ip} | ${dut_to_tg_if1_ip6} +| | Set Test Variable | ${dut_to_tg_if2_ip} | ${dut_to_tg_if2_ip6} +| | Set Test Variable | ${tg_to_dut_if1_ip} | ${tg_to_dut_if1_ip6} +| | Set Test Variable | ${tg_to_dut_if2_ip} | ${tg_to_dut_if2_ip6} + +| Send packet and verify marking +| | [Documentation] | Send packet and verify DSCP of the received packet. +| | ... +| | ... | *Arguments:* +| | ... | - node - TG node. Type: dictionary +| | ... | - tx_if - TG transmit interface. Type: string +| | ... | - rx_if - TG receive interface. Type: string +| | ... | - src_mac - Packet source MAC. Type: string +| | ... | - dst_mac - Packet destination MAC. Type: string +| | ... | - src_ip - Packet source IP address. Type: string +| | ... | - dst_ip - Packet destination IP address. Type: string +| | ... | - dscp - DSCP value to verify. Type: enum +| | ... +| | ... | *Example:* +| | ... | \| ${dscp}= \| DSCP AF22 \| +| | ... | \| Send packet and verify marking \| ${nodes['TG']} \| eth1 \| eth2 \ +| | ... | \| 08:00:27:87:4d:f7 \| 52:54:00:d4:d8:22 \| 192.168.122.2 \ +| | ... | \| 192.168.122.1 \| ${dscp} \| +| | [Arguments] | ${node} | ${tx_if} | ${rx_if} | ${src_mac} | ${dst_mac} +| | ... | ${src_ip} | ${dst_ip} | ${dscp} +| | ${tx_if_name}= | Get Interface Name | ${node} | ${tx_if} +| | ${rx_if_name}= | Get Interface Name | ${node} | ${rx_if} +| | ${args}= | Traffic Script Gen Arg | ${rx_if_name} | ${tx_if_name} +| | ... | ${src_mac} | ${dst_mac} | ${src_ip} | ${dst_ip} +| | ${dscp_num}= | Get DSCP Num Value | ${dscp} +| | ${args}= | Set Variable | ${args} --dscp ${dscp_num} +| | Run Traffic Script On Node | policer.py | ${node} | ${args} diff --git a/resources/libraries/robot/gre.robot b/resources/libraries/robot/gre.robot deleted file mode 100644 index c237e883a3..0000000000 --- a/resources/libraries/robot/gre.robot +++ /dev/null @@ -1,182 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/interfaces.robot - -*** Keywords *** -| Create GRE tunnel interface and set it up -| | [Documentation] | Create GRE tunnel interface and set it up on defined VPP node and put \ -| | ... | the interface to UP state. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node where to create GRE tunnel. Type: dictionary -| | ... | - source_ip_address - GRE tunnel source IP address. Type: string -| | ... | - destination_ip_address - GRE tunnel destination IP address. -| | ... | Type: string -| | ... -| | ... | *Return:* -| | ... | - name - Name of created GRE tunnel interface. Type: string -| | ... | - index - SW interface index of created GRE tunnel interface. -| | ... | Type: integer -| | ... -| | ... | *Example:* -| | ... -| | ... | \| ${gre_name} \| ${gre_index}= \ -| | ... | \| Create GRE tunnel interface and set it up \| ${dut} \ -| | ... | \| 192.0.1.1 \| 192.0.1.2 \| -| | ... -| | [Arguments] | ${dut_node} | ${source_ip_address} | ${destination_ip_address} -| | ${name} | ${index}= | Create GRE tunnel interface -| | ... | ${dut_node} | ${source_ip_address} | ${destination_ip_address} -| | Set Interface State | ${dut_node} | ${index} | up -| | [Return] | ${name} | ${index} - - -| Send ICMPv4 and check received GRE header -| | [Documentation] | Send ICMPv4 packet and check if received packed contains \ -| | ... | correct GRE, IP, MAC headers. -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - Node where to run traffic script. Type: dictionary -| | ... | - tx_if - Interface from where send ICPMv4 packet. Type: string -| | ... | - rx_if - Interface where to receive GRE packet. Type: string -| | ... | - tx_dst_mac - Destination MAC address of ICMP packet. Type: string -| | ... | - rx_dst_mac - Expected destination MAC address of GRE packet. -| | ... | Type: string -| | ... | - inner_src_ip - Source IP address of ICMP packet. Type: string -| | ... | - inner_dst_ip - Destination IP address of ICMP packet. -| | ... | Type: string -| | ... | - outer_src_ip - Source IP address of GRE packet. Type: string -| | ... | - outer_dst_ip - Destination IP address of GRE packet. -| | ... | Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send ICMPv4 and check received GRE header \ -| | ... | \| ${tg_node} \| ${tg_to_dut_if1} \| ${tg_to_dut_if2} \ -| | ... | \| ${tx_dst_mac} \| ${rx_dst_mac} \| ${net1_host_address} \ -| | ... | \| ${net2_host_address} \| ${dut1_ip_address} \| ${dut2_ip_address} \| -| | ... -| | [Arguments] | ${tg_node} | ${tx_if} | ${rx_if} -| | ... | ${tx_dst_mac} | ${rx_dst_mac} -| | ... | ${inner_src_ip} | ${inner_dst_ip} -| | ... | ${outer_src_ip} | ${outer_dst_ip} -| | ${tx_if_name}= | Get interface name | ${tg_node} | ${tx_if} -| | ${rx_if_name}= | Get interface name | ${tg_node} | ${rx_if} -| | ${args}= | Catenate | --tx_if | ${tx_if_name} | --rx_if | ${rx_if_name} -| | ... | --tx_dst_mac | ${tx_dst_mac} | --rx_dst_mac | ${rx_dst_mac} -| | ... | --inner_src_ip | ${inner_src_ip} | --inner_dst_ip | ${inner_dst_ip} -| | ... | --outer_src_ip | ${outer_src_ip} | --outer_dst_ip | ${outer_dst_ip} -| | Run Traffic Script On Node -| | ... | send_icmp_check_gre_headers.py | ${tg_node} | ${args} - - -| Send GRE and check received ICMPv4 header -| | [Documentation] | Send IPv4 ICMPv4 packet encapsulated into GRE and \ -| | ... | check IP, MAC headers on received packed. -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - Node where to run traffic script. Type: dictionary -| | ... | - tx_if - Interface from where send ICPMv4 packet. Type: string -| | ... | - rx_if - Interface where receive GRE packet. Type: string -| | ... | - tx_dst_mac - Destination MAC address of GRE packet. Type: string -| | ... | - rx_dst_mac - Expected destination MAC address of ICMP packet. -| | ... | Type: string -| | ... | - inner_src_ip - Source IP address of ICMP packet. Type: string -| | ... | - inner_dst_ip - Destination IP address of ICMP packet. -| | ... | Type: string -| | ... | - outer_src_ip - Source IP address of GRE packet. Type: string -| | ... | - outer_dst_ip - Destination IP address of GRE packet. -| | ... | Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send GRE and check received ICMPv4 header \| ${tg_node} \ -| | ... | \| ${tg_to_dut_if2} \| ${tg_to_dut_if1} \| ${tx_dst_mac} \ -| | ... | \| ${rx_dst_mac} \| ${net2_host_address} \| ${net1_host_address} \ -| | ... | \| ${dut2_ip_address} \| ${dut1_ip_address} \| -| | ... -| | [Arguments] | ${tg_node} | ${tx_if} | ${rx_if} -| | ... | ${tx_dst_mac} | ${rx_dst_mac} -| | ... | ${inner_src_ip} | ${inner_dst_ip} -| | ... | ${outer_src_ip} | ${outer_dst_ip} -| | ${tx_if_name}= | Get interface name | ${tg_node} | ${tx_if} -| | ${rx_if_name}= | Get interface name | ${tg_node} | ${rx_if} -| | ${args}= | Catenate | --tx_if | ${tx_if_name} | --rx_if | ${rx_if_name} -| | ... | --tx_dst_mac | ${tx_dst_mac} | --rx_dst_mac | ${rx_dst_mac} -| | ... | --inner_src_ip | ${inner_src_ip} | --inner_dst_ip | ${inner_dst_ip} -| | ... | --outer_src_ip | ${outer_src_ip} | --outer_dst_ip | ${outer_dst_ip} -| | Run Traffic Script On Node -| | ... | send_gre_check_icmp_headers.py | ${tg_node} | ${args} - -| Send GRE and check received GRE header -| | [Documentation] | Send IPv4 UDP packet encapsulated into GRE and \ -| | ... | check if received packed contains correct MAC GRE, IP, UDP headers. -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - Node where to run traffic script. Type: dictionary -| | ... | - tx_if - Interface from where send GRE packet. Type: string -| | ... | - rx_if - Interface where to receive GRE packet. Type: string -| | ... | - tx_dst_mac - Destination MAC address of transferred packet. -| | ... | Type: string -| | ... | - tx_src_mac - Source MAC address of transferred packet. Type: string -| | ... | - tx_outer_dst_ip - Destination IP address of GRE packet. Type: string -| | ... | - tx_outer_src_ip - Source IP address of GRE packet. Type: string -| | ... | - tx_inner_dst_ip - Destination IP address of UDP packet. Type: string -| | ... | - tx_inner_src_ip - Source IP address of UDP packet. Type: string -| | ... | - rx_dst_mac - Expected destination MAC address. Type: string -| | ... | - rx_src_mac - Expected source MAC address. Type: string -| | ... | - rx_outer_dst_ip - Expected destination IP address of received GRE -| | ... | packet. Type: string -| | ... | - rx_outer_src_ip - Expected source IP address of received GRE -| | ... | packet. Type: string -| | ... -| | ... | __Note:__ -| | ... | rx_inner_dst_ip and rx_inner_src_ip should be same as transferred -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| Send GRE and check received GRE header \| ${tg_node} \ -| | ... | \| port3 \| port3 \| 08:00:27:f3:be:f0 \| 08:00:27:46:2b:4c \ -| | ... | \| 10.0.0.1 \| 10.0.0.2 \| 192.168.3.100 \| 192.168.2.100 \ -| | ... | \| 08:00:27:46:2b:4c \| 08:00:27:f3:be:f0 \| 10.0.0.3 \| 10.0.0.1 \| -| | ... -| | [Arguments] | ${tg_node} | ${tx_if} | ${rx_if} -| | ... | ${tx_dst_mac} | ${tx_src_mac} -| | ... | ${tx_outer_dst_ip} | ${tx_outer_src_ip} -| | ... | ${tx_inner_dst_ip} | ${tx_inner_src_ip} -| | ... | ${rx_dst_mac} | ${rx_src_mac} -| | ... | ${rx_outer_dst_ip} | ${rx_outer_src_ip} -| | ${tx_if_name}= | Get interface name | ${tg_node} | ${tx_if} -| | ${rx_if_name}= | Get interface name | ${tg_node} | ${rx_if} -| | ${args}= | Catenate | --tx_if | ${tx_if_name} | --rx_if | ${rx_if_name} -| | ... | --tx_dst_mac | ${tx_dst_mac} | --tx_src_mac | ${tx_src_mac} -| | ... | --tx_outer_dst_ip | ${tx_outer_dst_ip} -| | ... | --tx_outer_src_ip | ${tx_outer_src_ip} -| | ... | --tx_inner_dst_ip | ${tx_inner_dst_ip} -| | ... | --tx_inner_src_ip | ${tx_inner_src_ip} -| | ... | --rx_dst_mac | ${rx_dst_mac} -| | ... | --rx_src_mac | ${rx_src_mac} -| | ... | --rx_outer_dst_ip | ${rx_outer_dst_ip} -| | ... | --rx_outer_src_ip | ${rx_outer_src_ip} -| | Run Traffic Script On Node -| | ... | send_gre_check_gre_headers.py | ${tg_node} | ${args} diff --git a/resources/libraries/robot/honeycomb/policer.robot b/resources/libraries/robot/honeycomb/policer.robot index 17191c5b37..87b97470ac 100644 --- a/resources/libraries/robot/honeycomb/policer.robot +++ b/resources/libraries/robot/honeycomb/policer.robot @@ -12,7 +12,7 @@ # limitations under the License. *** Settings *** -| Resource | resources/libraries/robot/traffic.robot +| Resource | resources/libraries/robot/shared/traffic.robot | Library | resources.libraries.python.honeycomb.Routing.RoutingKeywords | Variables | resources/test_data/honeycomb/policer_variables.py | Documentation | Keywords used to test Policer using Honeycomb. diff --git a/resources/libraries/robot/interfaces.robot b/resources/libraries/robot/interfaces.robot deleted file mode 100644 index c2b897d6a0..0000000000 --- a/resources/libraries/robot/interfaces.robot +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -*** Settings *** -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.VatExecutor - -*** Keywords *** -| VPP reports interfaces through VAT on '${node}' -| | Execute Script | dump_interfaces.vat | ${node} -| | Script Should Have Passed - -| Configure MTU on TG based on MTU on DUT -| | [Documentation] | Type of the tg_node must be TG and dut_node must be DUT -| | [Arguments] | ${tg_node} | ${dut_node} -| | Append Nodes | ${tg_node} | ${dut_node} -| | Compute Path -| | ${tg_port} | ${tg_node}= | First Interface -| | ${dut_port} | ${dut_node}= | Last Interface -| | # get physical layer MTU (max. size of Ethernet frame) -| | ${mtu}= | Get Interface MTU | ${dut_node} | ${dut_port} -| | # Ethernet MTU is physical layer MTU minus size of Ethernet header and FCS -| | ${eth_mtu}= | Evaluate | ${mtu} - 14 - 4 -| | Set Interface Ethernet MTU | ${tg_node} | ${tg_port} | ${eth_mtu} - diff --git a/resources/libraries/robot/ip/ip4.robot b/resources/libraries/robot/ip/ip4.robot new file mode 100644 index 0000000000..03964181b5 --- /dev/null +++ b/resources/libraries/robot/ip/ip4.robot @@ -0,0 +1,160 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/counters.robot +| Library | resources.libraries.python.IPv4Util.IPv4Util +| Library | resources.libraries.python.IPv4Setup.IPv4Setup +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Routing +| Library | resources.libraries.python.TrafficScriptExecutor +| Library | resources.libraries.python.InterfaceUtil +| Variables | resources/libraries/python/IPv4NodeAddress.py | ${nodes} + +*** Keywords *** + +| Configure IPv4 addresses on all DUTs +| | [Documentation] | Setup IPv4 address on all DUTs in topology +| | [Arguments] | ${nodes} | ${nodes_addr} +| | ${interfaces}= | VPP nodes set ipv4 addresses | ${nodes} | ${nodes_addr} +| | :FOR | ${interface} | IN | @{interfaces} +| | | Set Interface State | @{interface} | up | if_type=name + +| Configure routes for IPv4 test +| | [Documentation] | Setup routing on all VPP nodes required for IPv4 tests +| | [Arguments] | ${nodes} | ${nodes_addr} +| | Append Nodes | ${nodes['DUT1']} | ${nodes['DUT2']} +| | Compute Path +| | ${tg}= | Set Variable | ${nodes['TG']} +| | ${dut1_if} | ${dut1}= | First Interface +| | ${dut2_if} | ${dut2}= | Last Interface +| | ${dut1_if_addr}= | Get IPv4 address of node "${dut1}" interface "${dut1_if}" from "${nodes_addr}" +| | ${dut2_if_addr}= | Get IPv4 address of node "${dut2}" interface "${dut2_if}" from "${nodes_addr}" +| | @{tg_dut1_links}= | Get active links connecting "${tg}" and "${dut1}" +| | @{tg_dut2_links}= | Get active links connecting "${tg}" and "${dut2}" +| | :FOR | ${link} | IN | @{tg_dut1_links} +| | | ${net}= | Get Link Address | ${link} | ${nodes_addr} +| | | ${prefix}= | Get Link Prefix | ${link} | ${nodes_addr} +| | | Vpp Route Add | ${dut2} | ${net} | ${prefix} | ${dut1_if_addr} | ${dut2_if} +| | :FOR | ${link} | IN | @{tg_dut2_links} +| | | ${net}= | Get Link Address | ${link} | ${nodes_addr} +| | | ${prefix}= | Get Link Prefix | ${link} | ${nodes_addr} +| | | Vpp Route Add | ${dut1} | ${net} | ${prefix} | ${dut2_if_addr} | ${dut1_if} + +| Configure DUT nodes for IPv4 testing +| | Configure IPv4 addresses on all DUTs | ${nodes} | ${nodes_ipv4_addr} +| | Setup ARP on all DUTs | ${nodes} | ${nodes_ipv4_addr} +| | Configure routes for IPv4 test | ${nodes} | ${nodes_ipv4_addr} +| | All Vpp Interfaces Ready Wait | ${nodes} + +| Route traffic from interface '${from_port}' on node '${from_node}' to interface '${to_port}' on node '${to_node}' '${hops}' hops away using IPv4 +| | ${src_ip}= | Get IPv4 address of node "${from_node}" interface "${from_port}" from "${nodes_ipv4_addr}" +| | ${dst_ip}= | Get IPv4 address of node "${to_node}" interface "${to_port}" from "${nodes_ipv4_addr}" +| | ${src_mac}= | Get interface mac | ${from_node} | ${from_port} +| | ${dst_mac}= | Get interface mac | ${to_node} | ${to_port} +| | ${is_dst_tg}= | Is TG node | ${to_node} +| | ${adj_node} | ${adj_int}= | Get adjacent node and interface | ${nodes} | ${from_node} | ${from_port} +| | ${from_port_name}= | Get interface name | ${from_node} | ${from_port} +| | ${to_port_name}= | Get interface name | ${to_node} | ${to_port} +| | ${adj_int_mac}= | Get interface MAC | ${adj_node} | ${adj_int} +| | ${args}= | Traffic Script Gen Arg | ${to_port_name} | ${from_port_name} | ${src_mac} +| | | ... | ${dst_mac} | ${src_ip} | ${dst_ip} +| | ${args}= | Catenate | ${args} | --hops ${hops} | --first_hop_mac ${adj_int_mac} +| | | ... | --is_dst_tg ${is_dst_tg} +| | Run Traffic Script On Node | ipv4_ping_ttl_check.py | ${from_node} | ${args} + +| Execute IPv4 ICMP echo sweep +| | [Documentation] | Type of the src_node must be TG and dst_node must be DUT +| | [Arguments] | ${src_node} | ${dst_node} | ${start_size} | ${end_size} | ${step} +| | Append Nodes | ${src_node} | ${dst_node} +| | Compute Path +| | ${src_port} | ${src_node}= | First Interface +| | ${dst_port} | ${dst_node}= | Last Interface +| | ${src_ip}= | Get IPv4 address of node "${src_node}" interface "${src_port}" from "${nodes_ipv4_addr}" +| | ${dst_ip}= | Get IPv4 address of node "${dst_node}" interface "${dst_port}" from "${nodes_ipv4_addr}" +| | ${src_mac}= | Get Interface Mac | ${src_node} | ${src_port} +| | ${dst_mac}= | Get Interface Mac | ${dst_node} | ${dst_port} +| | ${src_port_name}= | Get interface name | ${src_node} | ${src_port} +| | ${args}= | Traffic Script Gen Arg | ${src_port_name} | ${src_port_name} +| | | ... | ${src_mac} | ${dst_mac} | ${src_ip} | ${dst_ip} +| | ${args}= | Set Variable +| | ... | ${args} --start_size ${start_size} --end_size ${end_size} --step ${step} +| | Run Traffic Script On Node | ipv4_sweep_ping.py | ${src_node} | ${args} +| | ... | timeout=${180} + +| Send ARP request and verify response +| | [Arguments] | ${tg_node} | ${vpp_node} +| | ${link_name}= | Get first active connecting link between node "${tg_node}" and "${vpp_node}" +| | ${src_if}= | Get interface by link name | ${tg_node} | ${link_name} +| | ${dst_if}= | Get interface by link name | ${vpp_node} | ${link_name} +| | ${src_ip}= | Get IPv4 address of node "${tg_node}" interface "${src_if}" from "${nodes_ipv4_addr}" +| | ${dst_ip}= | Get IPv4 address of node "${vpp_node}" interface "${dst_if}" from "${nodes_ipv4_addr}" +| | ${src_mac}= | Get node link mac | ${tg_node} | ${link_name} +| | ${dst_mac}= | Get node link mac | ${vpp_node} | ${link_name} +| | ${src_if_name}= | Get interface name | ${tg_node} | ${src_if} +| | ${args}= | Traffic Script Gen Arg | ${src_if_name} | ${src_if_name} | ${src_mac} +| | | ... | ${dst_mac} | ${src_ip} | ${dst_ip} +| | Run Traffic Script On Node | arp_request.py | ${tg_node} | ${args} + +| Configure IP addresses on interfaces +| | [Documentation] | Iterates through @{args} list and Set Interface Address +| | ... | for every (${dut_node}, ${interface}, ${address}, +| | ... | ${prefix}) tuple. +| | ... +| | ... | *Arguments:* +| | ... | - ${dut_node} - Node where IP address should be set to. +| | ... | Type: dictionary +| | ... | - ${interface} - Interface name. Type: string +| | ... | - ${address} - IP address. Type: string +| | ... | - ${prefix} - Prefix length. Type: integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure IP addresses on interfaces \ +| | ... | \| ${dut1_node} \| ${dut1_to_dut2} \| 192.168.1.1 \| 24 \| +| | ... | \| ... \| ${dut1_node} \| ${dut1_to_tg} \| 192.168.2.1 \| 24 \| +| | ... +| | [Arguments] | @{args} +| | :FOR | ${dut_node} | ${interface} | ${address} | ${prefix} | IN | @{args} +| | | Set Interface Address | ${dut_node} | ${interface} | ${address} +| | | ... | ${prefix} + +| Send ICMP echo request and verify answer +| | [Documentation] | Run traffic script that waits for ICMP reply and ignores +| | ... | all other packets. +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - TG node where run traffic script. Type: dictionary +| | ... | - tg_interface - TG interface where send ICMP echo request. +| | ... | Type: string +| | ... | - dst_mac - Destination MAC address. Type: string +| | ... | - src_mac - Source MAC address. Type: string +| | ... | - dst_ip - Destination IP address. Type: string +| | ... | - src_ip - Source IP address. Type: string +| | ... | - timeout - Wait timeout in seconds (Default: 10). Type: integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send ICMP echo request and verify answer \ +| | ... | \| ${nodes['TG']} \| eth2 \ +| | ... | \| 08:00:27:46:2b:4c \| 08:00:27:66:b8:57 \ +| | ... | \| 192.168.23.10 \| 192.168.23.1 \| 10 \| +| | ... +| | [Arguments] | ${tg_node} | ${tg_interface} +| | ... | ${dst_mac} | ${src_mac} | ${dst_ip} | ${src_ip} | ${timeout}=${10} +| | ${tg_interface_name}= | Get interface name | ${tg_node} | ${tg_interface} +| | ${args}= | Catenate | --rx_if | ${tg_interface_name} | --tx_if | ${tg_interface_name} +| | ... | --dst_mac | ${dst_mac} | --src_mac | ${src_mac} +| | ... | --dst_ip | ${dst_ip} | --src_ip | ${src_ip} | --timeout | ${timeout} +| | Run Traffic Script On Node | send_icmp_wait_for_reply.py +| | ... | ${tg_node} | ${args} diff --git a/resources/libraries/robot/ip/ip6.robot b/resources/libraries/robot/ip/ip6.robot new file mode 100644 index 0000000000..43b0b8c646 --- /dev/null +++ b/resources/libraries/robot/ip/ip6.robot @@ -0,0 +1,195 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""IPv6 keywords""" + +*** Settings *** +| Library | resources.libraries.python.IPv6Util +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.TrafficScriptExecutor +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Routing +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.topology.Topology +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/counters.robot +| Documentation | IPv6 keywords + +*** Keywords *** +| Send IPv6 icmp echo request to DUT1 ingress inteface and verify answer +| | [Documentation] | Type of the src_node must be TG and dst_node must be DUT +| | [Arguments] | ${tg_node} | ${dut_node} | ${nodes_addr} +| | Append Nodes | ${tg_node} | ${dut_node} +| | Compute Path +| | ${src_port} | ${src_node}= | First Interface +| | ${dst_port} | ${dst_node}= | Last Interface +| | ${src_ip}= | Get Node Port Ipv6 Address | ${src_node} | ${src_port} | ${nodes_addr} +| | ${dst_ip}= | Get Node Port Ipv6 Address | ${dst_node} | ${dst_port} | ${nodes_addr} +| | ${src_mac}= | Get Interface Mac | ${src_node} | ${src_port} +| | ${dst_mac}= | Get Interface Mac | ${dst_node} | ${dst_port} +| | ${src_port_name}= | Get interface name | ${src_node} | ${src_port} +| | ${args}= | Traffic Script Gen Arg | ${src_port_name} | ${src_port_name} | ${src_mac} +| | | ... | ${dst_mac} | ${src_ip} | ${dst_ip} +| | Run Traffic Script On Node | icmpv6_echo.py | ${tg_node} | ${args} +| | Get interface statistics | ${dst_node} +| | ${ipv6_counter}= | Get interface ipv6 counter | ${dst_node} | ${dst_port} +| | Should Be Equal | ${ipv6_counter} | ${2} | #ICMPv6 neighbor advertisement + ICMPv6 echo request + +| Execute IPv6 ICMP echo sweep +| | [Documentation] | Type of the src_node must be TG and dst_node must be DUT +| | [Arguments] | ${src_node} | ${dst_node} | ${start_size} | ${end_size} +| | ... | ${step} | ${nodes_addr} +| | Append Nodes | ${src_node} | ${dst_node} +| | Compute Path +| | ${src_port} | ${src_node}= | First Interface +| | ${dst_port} | ${dst_node}= | Last Interface +| | ${src_ip}= | Get Node Port Ipv6 Address | ${src_node} | ${src_port} +| | ... | ${nodes_addr} +| | ${dst_ip}= | Get Node Port Ipv6 Address | ${dst_node} | ${dst_port} +| | ... | ${nodes_addr} +| | ${src_mac}= | Get Interface Mac | ${src_node} | ${src_port} +| | ${dst_mac}= | Get Interface Mac | ${dst_node} | ${dst_port} +| | ${src_port_name}= | Get interface name | ${src_node} | ${src_port} +| | ${args}= | Traffic Script Gen Arg | ${src_port_name} | ${src_port_name} +| | | ... | ${src_mac} | ${dst_mac} | ${src_ip} | ${dst_ip} +| | ${args}= | Set Variable +| | ... | ${args} --start_size ${start_size} --end_size ${end_size} --step ${step} +| | Run Traffic Script On Node | ipv6_sweep_ping.py | ${src_node} | ${args} +| | ... | timeout=${180} + +| Send IPv6 ICMP echo request to DUT1 egress interface and verify answer +| | [Documentation] | Send traffic from TG to first DUT egress interface +| | [Arguments] | ${tg_node} | ${first_dut} | ${second_dut} | ${nodes_addr} +| | Append Nodes | ${tg_node} | ${first_dut} | ${second_dut} +| | Compute Path +| | ${src_port} | ${src_node}= | First Interface +| | ${dst_port} | ${dst_node}= | Last Egress Interface +| | ${hop_port} | ${hop_node}= | First Ingress Interface +| | ${src_ip}= | Get Node Port Ipv6 Address | ${src_node} | ${src_port} | ${nodes_addr} +| | ${dst_ip}= | Get Node Port Ipv6 Address | ${dst_node} | ${dst_port} | ${nodes_addr} +| | ${src_mac}= | Get Interface Mac | ${src_node} | ${src_port} +| | ${dst_mac}= | Get Interface Mac | ${hop_node} | ${hop_port} +| | ${src_port_name}= | Get interface name | ${src_node} | ${src_port} +| | ${args}= | Traffic Script Gen Arg | ${src_port_name} | ${src_port_name} | ${src_mac} +| | | ... | ${dst_mac} | ${src_ip} | ${dst_ip} +| | Run Traffic Script On Node | icmpv6_echo.py | ${tg_node} | ${args} + + +| Send IPv6 ICMP echo request to DUT2 via DUT1 and verify answer +| | [Documentation] | Send traffic from TG to second DUT through first DUT +| | [Arguments] | ${tg_node} | ${first_dut} | ${second_dut} | ${nodes_addr} +| | Append Nodes | ${tg_node} | ${first_dut} | ${second_dut} +| | Compute Path +| | ${src_port} | ${src_node}= | First Interface +| | ${dst_port} | ${dst_node}= | Last Interface +| | ${hop_port} | ${hop_node}= | First Ingress Interface +| | ${src_ip}= | Get Node Port Ipv6 Address | ${src_node} | ${src_port} | ${nodes_addr} +| | ${dst_ip}= | Get Node Port Ipv6 Address | ${dst_node} | ${dst_port} | ${nodes_addr} +| | ${src_mac}= | Get Interface Mac | ${src_node} | ${src_port} +| | ${dst_mac}= | Get Interface Mac | ${hop_node} | ${hop_port} +| | ${src_port_name}= | Get interface name | ${src_node} | ${src_port} +| | ${args}= | Traffic Script Gen Arg | ${src_port_name} | ${src_port_name} | ${src_mac} +| | | ... | ${dst_mac} | ${src_ip} | ${dst_ip} +| | Run Traffic Script On Node | icmpv6_echo.py | ${tg_node} | ${args} + +| Send IPv6 ICMP echo request to DUT2 egress interface via DUT1 and verify answer +| | [Documentation] | Send traffic from TG to second DUT egress interface through first DUT +| | [Arguments] | ${tg_node} | ${first_dut} | ${second_dut} | ${nodes_addr} +| | Append Nodes | ${tg_node} | ${first_dut} | ${second_dut} | ${tg_node} +| | Compute Path +| | ${src_port} | ${src_node}= | First Interface +| | ${dst_port} | ${dst_node}= | Last Egress Interface +| | ${hop_port} | ${hop_node}= | First Ingress Interface +| | ${src_ip}= | Get Node Port Ipv6 Address | ${src_node} | ${src_port} | ${nodes_addr} +| | ${dst_ip}= | Get Node Port Ipv6 Address | ${dst_node} | ${dst_port} | ${nodes_addr} +| | ${src_mac}= | Get Interface Mac | ${src_node} | ${src_port} +| | ${dst_mac}= | Get Interface Mac | ${hop_node} | ${hop_port} +| | ${src_port_name}= | Get interface name | ${src_node} | ${src_port} +| | ${args}= | Traffic Script Gen Arg | ${src_port_name} | ${src_port_name} | ${src_mac} +| | | ... | ${dst_mac} | ${src_ip} | ${dst_ip} +| | Run Traffic Script On Node | icmpv6_echo.py | ${tg_node} | ${args} + +| Ipv6 tg to tg routed +| | [Documentation] | Send traffic from one TG port to another through DUT nodes +| | ... | and send reply back, also verify hop limit processing +| | [Arguments] | ${tg_node} | ${first_dut} | ${second_dut} | ${nodes_addr} +| | Append Nodes | ${tg_node} | ${first_dut} | ${second_dut} | ${tg_node} +| | Compute Path +| | ${src_port} | ${src_node}= | First Interface +| | ${dst_port} | ${dst_node}= | Last Interface +| | ${src_nh_port} | ${src_nh_node}= | First Ingress Interface +| | ${dst_nh_port} | ${dst_nh_node}= | Last Egress Interface +| | ${src_ip}= | Get Node Port Ipv6 Address | ${src_node} | ${src_port} | ${nodes_addr} +| | ${dst_ip}= | Get Node Port Ipv6 Address | ${dst_node} | ${dst_port} | ${nodes_addr} +| | ${src_mac}= | Get Interface Mac | ${src_node} | ${src_port} +| | ${dst_mac}= | Get Interface Mac | ${src_node} | ${dst_port} +| | ${src_nh_mac}= | Get Interface Mac | ${src_nh_node} | ${src_nh_port} +| | ${dst_nh_mac}= | Get Interface Mac | ${dst_nh_node} | ${dst_nh_port} +| | ${src_port_name}= | Get interface name | ${src_node} | ${src_port} +| | ${dst_port_name}= | Get interface name | ${dst_node} | ${dst_port} +| | ${args}= | Traffic Script Gen Arg | ${src_port_name} | ${dst_port_name} | ${src_mac} +| | | ... | ${dst_mac} | ${src_ip} | ${dst_ip} +| | ${args}= | Catenate | ${args} | --src_nh_mac ${src_nh_mac} +| | | ... | --dst_nh_mac ${dst_nh_mac} | --h_num 2 +| | Run Traffic Script On Node | icmpv6_echo_req_resp.py | ${tg_node} | ${args} + +| Send IPv6 neighbor solicitation and verify answer +| | [Documentation] | Send IPv6 neighbor solicitation from TG to DUT +| | [Arguments] | ${tg_node} | ${dut_node} | ${nodes_addr} +| | Append Nodes | ${tg_node} | ${dut_node} +| | Compute Path +| | ${src_port} | ${src_node}= | First Interface +| | ${dst_port} | ${dst_node}= | Last Interface +| | ${src_ip}= | Get Node Port Ipv6 Address | ${src_node} | ${src_port} | ${nodes_addr} +| | ${dst_ip}= | Get Node Port Ipv6 Address | ${dst_node} | ${dst_port} | ${nodes_addr} +| | ${src_mac}= | Get Interface Mac | ${src_node} | ${src_port} +| | ${dst_mac}= | Get Interface Mac | ${dst_node} | ${dst_port} +| | ${src_port_name}= | Get interface name | ${src_node} | ${src_port} +| | ${args}= | Traffic Script Gen Arg | ${src_port_name} | ${src_port_name} | ${src_mac} +| | | ... | ${dst_mac} | ${src_ip} | ${dst_ip} +| | Run Traffic Script On Node | ipv6_ns.py | ${src_node} | ${args} + +| Configure IPv6 on all DUTs in topology +| | [Documentation] | Setup IPv6 address on all DUTs +| | [Arguments] | ${nodes} | ${nodes_addr} +| | Configure all DUTs before test +| | ${interfaces}= | Nodes Set Ipv6 Addresses | ${nodes} | ${nodes_addr} +| | :FOR | ${interface} | IN | @{interfaces} +| | | Set Interface State | @{interface} | up | if_type=name +| | All Vpp Interfaces Ready Wait | ${nodes} + +| Suppress ICMPv6 router advertisement message +| | [Documentation] | Suppress ICMPv6 router advertisement message for link scope address +| | [Arguments] | ${nodes} +| | Vpp All Ra Suppress Link Layer | ${nodes} + +| Configure IPv6 routing on all DUTs +| | [Documentation] | Setup routing on all VPP nodes required for IPv6 tests +| | [Arguments] | ${nodes} | ${nodes_addr} +| | Append Nodes | ${nodes['DUT1']} | ${nodes['DUT2']} +| | Compute Path +| | ${tg}= | Set Variable | ${nodes['TG']} +| | ${dut1_if} | ${dut1}= | First Interface +| | ${dut2_if} | ${dut2}= | Last Interface +| | ${dut1_if_addr}= | Get Node Port Ipv6 Address | ${dut1} | ${dut1_if} | ${nodes_addr} +| | ${dut2_if_addr}= | Get Node Port Ipv6 Address | ${dut2} | ${dut2_if} | ${nodes_addr} +| | @{tg_dut1_links}= | Get active links connecting "${tg}" and "${dut1}" +| | @{tg_dut2_links}= | Get active links connecting "${tg}" and "${dut2}" +| | :FOR | ${link} | IN | @{tg_dut1_links} +| | | ${net}= | Get Link Address | ${link} | ${nodes_addr} +| | | ${prefix}= | Get Link Prefix | ${link} | ${nodes_addr} +| | | Vpp Route Add | ${dut2} | ${net} | ${prefix} | ${dut1_if_addr} | ${dut2_if} +| | :FOR | ${link} | IN | @{tg_dut2_links} +| | | ${net}= | Get Link Address | ${link} | ${nodes_addr} +| | | ${prefix}= | Get Link Prefix | ${link} | ${nodes_addr} +| | | Vpp Route Add | ${dut1} | ${net} | ${prefix} | ${dut2_if_addr} | ${dut1_if} diff --git a/resources/libraries/robot/ip/map.robot b/resources/libraries/robot/ip/map.robot new file mode 100644 index 0000000000..ac086b4511 --- /dev/null +++ b/resources/libraries/robot/ip/map.robot @@ -0,0 +1,312 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Variables | resources/libraries/python/topology.py +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.DUTSetup +| Library | resources.libraries.python.TGSetup +| Library | resources.libraries.python.Map +| Documentation | Keywords for MAP feature in VPP. + +*** Keywords *** +| Send IPv4 UDP and check headers for lightweight 4over6 +| | [Documentation] +| | ... | Send empty UDP to given IPv4 dst and UDP port and check received \ +| | ... | packets headers (Ethernet, IPv6, IPv4, UDP). +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - Node where to run traffic script. Type: string +| | ... | - tx_if - Interface from where to send ICPMv4 packet. Type: string +| | ... | - rx_if - Interface where to receive IPinIP packet. Type: string +| | ... | - tx_dst_mac - Destination MAC address of IPv4 packet. Type: string +| | ... | - tx_dst_ipv4 - Destination IPv4 address. Type: string +| | ... | - tx_src_ipv4 - Source IPv4 address. Type: string +| | ... | - tx_dst_udp_port - Destination UDP port. Type: integer +| | ... | - rx_dst_mac - Expected destination MAC address. Type: string +| | ... | - rx_src_mac - Expected source MAC address. Type: string +| | ... | - dst_ipv6 - Expected destination IPv6 address. Type: string +| | ... | - src_ipv6 - Expected source IPv6 address. Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send IPv4 UDP and check headers for lightweight 4over6 \ +| | ... | \| ${tg_node} \| eth3 \| eth2 \| 08:00:27:66:b8:57 \| 20.0.0.1 \ +| | ... | \| 20.0.0.2 \| 1232 \| 08:00:27:46:2b:4c \| 08:00:27:f3:be:f0 \ +| | ... | \| 2001:1::2 \| 2001:1::1 \| +| | ... +| | [Arguments] +| | ... | ${tg_node} | ${tx_if} | ${rx_if} | ${tx_dst_mac} | ${tx_dst_ipv4} +| | ... | ${tx_src_ipv4} | ${tx_dst_udp_port} | ${rx_dst_mac} | ${rx_src_mac} +| | ... | ${dst_ipv6} | ${src_ipv6} +| | ... +| | ${tx_name}= | Get interface name | ${tg_node} | ${tx_if} +| | ${rx_name}= | Get interface name | ${tg_node} | ${rx_if} +| | ${args}= | Catenate +| | ... | --tx_if | ${tx_name} | --rx_if | ${rx_name} +| | ... | --tx_dst_mac | ${tx_dst_mac} | --tx_src_ipv4 | ${tx_src_ipv4} +| | ... | --tx_dst_ipv4 | ${tx_dst_ipv4} +| | ... | --tx_dst_udp_port | ${tx_dst_udp_port} +| | ... | --rx_dst_mac | ${rx_dst_mac} | --rx_src_mac | ${rx_src_mac} +| | ... | --src_ipv6 | ${src_ipv6} | --dst_ipv6 | ${dst_ipv6} +| | ... +| | Run Traffic Script On Node +| | ... | send_ipv4_udp_check_lw_4o6.py | ${tg_node} | ${args} + +| Send IPv4 ICMP and check headers for lightweight 4over6 +| | [Documentation] +| | ... | Send ICMP request with ID to given IPv4 destination and \ +| | ... | check received packets headers (Ethernet, IPv6, IPv4, ICMP). +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - Node where to run traffic script. Type: string +| | ... | - tx_if - Interface from where to send ICPMv4 packet. Type: string +| | ... | - rx_if - Interface where to receive IPinIP packet. Type: string +| | ... | - tx_dst_mac - Destination MAC address of IPv4 packet. Type: string +| | ... | - tx_dst_ipv4 - Destination IPv4 address. Type: string +| | ... | - tx_src_ipv4 - Source IPv4 address. Type: string +| | ... | - tx_icmp_id - ICMP ID. Type: integer +| | ... | - rx_dst_mac - Expected destination MAC address. Type: string +| | ... | - rx_src_mac - Expected source MAC address. Type: string +| | ... | - dst_ipv6 - Expected destination IPv6 address. Type: string +| | ... | - src_ipv6 - Expected source IPv6 address. Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send IPv4 ICMP and check headers for lightweight 4over6 \ +| | ... | \| ${tg_node} \| eth3 \| eth2 \| 08:00:27:66:b8:57 \| 20.0.0.1 \ +| | ... | \| 20.0.0.2 \| 1232 \| 08:00:27:46:2b:4c \| 08:00:27:f3:be:f0 \ +| | ... | \| 2001:1::2 \| 2001:1::1 \| +| | ... +| | [Arguments] +| | ... | ${tg_node} | ${tx_if} | ${rx_if} | ${tx_dst_mac} | ${tx_dst_ipv4} +| | ... | ${tx_src_ipv4} | ${tx_icmp_id} | ${rx_dst_mac} | ${rx_src_mac} +| | ... | ${dst_ipv6} | ${src_ipv6} +| | ... +| | ${tx_name}= | Get interface name | ${tg_node} | ${tx_if} +| | ${rx_name}= | Get interface name | ${tg_node} | ${rx_if} +| | ${args}= | Catenate +| | ... | --tx_if | ${tx_name} | --rx_if | ${rx_name} +| | ... | --tx_dst_mac | ${tx_dst_mac} | --tx_src_ipv4 | ${tx_src_ipv4} +| | ... | --tx_dst_ipv4 | ${tx_dst_ipv4} | --tx_icmp_id | ${tx_icmp_id} +| | ... | --rx_dst_mac | ${rx_dst_mac} | --rx_src_mac | ${rx_src_mac} +| | ... | --src_ipv6 | ${src_ipv6} | --dst_ipv6 | ${dst_ipv6} +| | ... +| | Run Traffic Script On Node +| | ... | send_ipv4_icmp_check_lw_4o6.py | ${tg_node} | ${args} + +| Send IPv4 UDP in IPv6 and check headers for lightweight 4over6 +| | [Documentation] +| | ... | Send empty UDP in IPv4 in IPv6 and check if IPv4 packet is correctly \ +| | ... | decapsulated from IPv6. +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - Node where to run traffic script. Type: string +| | ... | - tx_if - Interface from where to send ICPMv4 packet. Type: string +| | ... | - rx_if - Interface where to receive IPinIP packet. Type: string +| | ... | - tx_dst_mac - Destination MAC address of IPv4 packet. Type: string +| | ... | - tx_src_mac - Source MAC address of IPv4 packet. Type: string +| | ... | - tx_dst_ipv6 - Destination IPv6 address. Type: string +| | ... | - tx_src_ipv6 - Source IPv6 address. Type: string +| | ... | - tx_dst_ipv4 - Destination IPv4 address. Type: string +| | ... | - tx_src_ipv4 - Source IPv4 address. Type: string +| | ... | - tx_src_udp_port - Source UDP port. Type: integer +| | ... | - rx_dst_mac - Expected destination MAC address. Type: string +| | ... | - rx_src_mac - Expected source MAC address. Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send IPv4 UDP in IPv6 and check headers for lightweight 4over6 \ +| | ... | \| ${tg_node} \| eth3 \| eth2 \ +| | ... | \| 08:00:27:66:b8:57 \| 08:00:27:33:54:21 \ +| | ... | \| 2001:1::2 \| 2001:1::1 \| 20.0.0.1 \| 20.0.0.2 \ +| | ... | \| 1232 \| 08:00:27:46:2b:4c \| 08:00:27:f3:be:f0 \| +| | ... +| | [Arguments] +| | ... | ${tg_node} | ${tx_if} | ${rx_if} | ${tx_dst_mac} | ${tx_src_mac} +| | ... | ${tx_dst_ipv6} | ${tx_src_ipv6} | ${tx_dst_ipv4} | ${tx_src_ipv4} +| | ... | ${tx_src_udp_port} | ${rx_dst_mac} | ${rx_src_mac} +| | ... +| | ${tx_name}= | Get interface name | ${tg_node} | ${tx_if} +| | ${rx_name}= | Get interface name | ${tg_node} | ${rx_if} +| | ${args}= | Catenate +| | ... | --tx_if | ${tx_name} | --rx_if | ${rx_name} +| | ... | --tx_dst_mac | ${tx_dst_mac} | --tx_src_mac | ${tx_src_mac} +| | ... | --tx_dst_ipv6 | ${tx_dst_ipv6} | --tx_src_ipv6 | ${tx_src_ipv6} +| | ... | --tx_dst_ipv4 | ${tx_dst_ipv4} | --tx_src_ipv4 | ${tx_src_ipv4} +| | ... | --tx_src_udp_port | ${tx_src_udp_port} +| | ... | --rx_dst_mac | ${rx_dst_mac} | --rx_src_mac | ${rx_src_mac} +| | ... +| | Run Traffic Script On Node +| | ... | send_lw_4o6_check_ipv4_udp.py | ${tg_node} | ${args} + +| Send IPv4 UDP in IPv6 and check headers for lightweight hairpinning +| | [Documentation] +| | ... | Send empty UDP in IPv4 in IPv6 and check if IPv4 packet is correctly \ +| | ... | decapsulated and re-encapsulated to another lwB4. +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - Node where to run traffic script. Type: string +| | ... | - tx_if - Interface from where to send ICPMv4 packet. Type: string +| | ... | - rx_if - Interface where to receive IPinIP packet. Type: string +| | ... | - tx_dst_mac - Destination MAC address of send IPv6 packet. \ +| | ... | Type: string +| | ... | - tx_dst_ipv6 - Destination IPv6 address (lwAFTR). Type: string +| | ... | - tx_src_ipv6 - Source IPv6 address (lwB4_1). Type: string +| | ... | - tx_dst_ipv4 - Destination IPv4 address. Type: string +| | ... | - tx_src_ipv4 - Source IPv4 address. Type: string +| | ... | - tx_dst_udp_port - Destination UDP port (PSID_2 related). \ +| | ... | Type: integer +| | ... | - tx_src_udp_port - Source UDP port (PSID_1 related). Type: integer +| | ... | - rx_dst_mac - Expected destination MAC address. Type: string +| | ... | - rx_src_mac - Expected source MAC address. Type: string +| | ... | - rx_dst_ipv6 - Expected destination IPv6 address (lwB4_2). \ +| | ... | Type: string +| | ... | - rx_src_ipv6 - Expected source IPv6 address (lwAFTR). Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send IPv4 UDP in IPv6 and check headers for lightweight hairpinning \ +| | ... | \| ${tg_node} \| port3 \| port3 \| 08:00:27:f3:be:f0 \| 2001:1::1 \ +| | ... | \| 2001:1::2 \| 20.0.0.1 \| 20.0.0.1 \| ${6232} \| ${1232} \ +| | ... | \| 08:00:27:46:2b:4c \| 08:00:27:f3:be:f0 \| 2001:1::3 \| 2001:1::1 \| +| | ... +| | [Arguments] +| | ... | ${tg_node} | ${tx_if} | ${rx_if} +| | ... | ${tx_dst_mac} +| | ... | ${tx_dst_ipv6} | ${tx_src_ipv6} +| | ... | ${tx_dst_ipv4} | ${tx_src_ipv4} +| | ... | ${tx_dst_udp_port} | ${tx_src_udp_port} +| | ... | ${rx_dst_mac} | ${rx_src_mac} +| | ... | ${rx_dst_ipv6} | ${rx_src_ipv6} +| | ... +| | ${tx_name}= | Get interface name | ${tg_node} | ${tx_if} +| | ${rx_name}= | Get interface name | ${tg_node} | ${rx_if} +| | ${args}= | Catenate +| | ... | --tx_if | ${tx_name} | --rx_if | ${rx_name} +| | ... | --tx_dst_mac | ${tx_dst_mac} +| | ... | --tx_dst_ipv6 | ${tx_dst_ipv6} | --tx_src_ipv6 | ${tx_src_ipv6} +| | ... | --tx_dst_ipv4 | ${tx_dst_ipv4} | --tx_src_ipv4 | ${tx_src_ipv4} +| | ... | --tx_dst_udp_port | ${tx_dst_udp_port} +| | ... | --tx_src_udp_port | ${tx_src_udp_port} +| | ... | --rx_dst_mac | ${rx_dst_mac} | --rx_src_mac | ${rx_src_mac} +| | ... | --rx_dst_ipv6 | ${rx_dst_ipv6} | --rx_src_ipv6 | ${rx_src_ipv6} +| | ... +| | Run Traffic Script On Node +| | ... | send_lw_4o6_check_hairpinning_udp.py | ${tg_node} | ${args} + +| Send IPv4 UDP and check IPv6 headers for MAP-T +| | [Documentation] +| | ... | Send a UDP in IPv4 and check if IPv4 source and destination \ +| | ... | addresses are correctly translated into IPv6 addresses. +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - Node where to run traffic script. Type: string +| | ... | - tx_if - Interface from where to send IPv4 UDP packet. Type: string +| | ... | - rx_if - Interface where to receive IPv6 UDP packet. Type: string +| | ... | - tx_dst_mac - Destination MAC address of IPv4 packet. Type: string +| | ... | - tx_dst_ipv4 - Destination IPv4 address. Type: string +| | ... | - tx_src_ipv4 - Source IPv4 address. Type: string +| | ... | - tx_dst_udp_port - Destination UDP port. Type: integer +| | ... | - rx_dst_mac - Expected destination MAC address. Type: string +| | ... | - rx_src_mac - Expected source MAC address. Type: string +| | ... | - dst_ipv6 - Expected destination IPv6 address. Type: string +| | ... | - src_ipv6 - Expected source IPv6 address. Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send IPv4 UDP and check IPv6 headers for MAP-T \ +| | ... | \| ${tg_node} \| port3 \| port3 \| 08:00:27:66:b8:57 \ +| | ... | \| 20.169.201.219 \| 100.0.0.1 \| ${1232} \| 08:00:27:46:2b:4c \ +| | ... | \| 08:00:27:f3:be:f0 \| 2001:db8::14a9:c9db:0 \ +| | ... | \| 2001:db8:ffff::6400:1 \| +| | ... +| | [Arguments] +| | ... | ${tg_node} | ${tx_if} | ${rx_if} +| | ... | ${tx_dst_mac} | ${tx_dst_ipv4} | ${tx_src_ipv4} | ${tx_dst_udp_port} +| | ... | ${rx_dst_mac} | ${rx_src_mac} | ${dst_ipv6} | ${src_ipv6} +| | ... +| | ${tx_name}= | Get interface name | ${tg_node} | ${tx_if} +| | ${rx_name}= | Get interface name | ${tg_node} | ${rx_if} +| | ${args}= | Catenate +| | ... | --tx_if | ${tx_name} | --rx_if | ${rx_name} +| | ... | --tx_dst_mac | ${tx_dst_mac} +| | ... | --tx_src_ipv4 | ${tx_src_ipv4} | --tx_dst_ipv4 | ${tx_dst_ipv4} +| | ... | --tx_dst_udp_port | ${tx_dst_udp_port} +| | ... | --rx_dst_mac | ${rx_dst_mac} | --rx_src_mac | ${rx_src_mac} +| | ... | --rx_src_ipv6 | ${src_ipv6} | --rx_dst_ipv6 | ${dst_ipv6} +| | ... +| | Run Traffic Script On Node +| | ... | send_ipv4_udp_check_map_t.py | ${tg_node} | ${args} + +| Send IPv6 UDP and check IPv4 headers for MAP-T +| | [Documentation] +| | ... | Send a UDP in IPv6 and check if IPv6 source and destination \ +| | ... | addresses are correctly translated into IPv4 addresses. +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - Node where to run traffic script. Type: string +| | ... | - tx_if - Interface from where to send IPv4 UDP packet. Type: string +| | ... | - rx_if - Interface where to receive IPv6 UDP packet. Type: string +| | ... | - tx_dst_mac - Destination MAC address of IPv4 packet. Type: string +| | ... | - tx_src_mac - Source MAC address of IPv4 packet. Type: string +| | ... | - tx_dst_ipv6 - Destination IPv6 address. Type: string +| | ... | - tx_src_ipv6 - Source IPv6 address. Type: string +| | ... | - tx_src_udp_port - Source UDP port. Type: integer +| | ... | - rx_dst_mac - Expected destination MAC address. Type: string +| | ... | - rx_src_mac - Expected source MAC address. Type: string +| | ... | - dst_ipv4 - Expected destination IPv4 address. Type: string +| | ... | - src_ipv4 - Expected source IPv4 address. Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send IPv6 UDP and check IPv4 headers for MAP-T \ +| | ... | \| port3 \| port4 \| 08:00:27:f3:be:f0 \| 2001:db8:ffff::6400:1 \ +| | ... | \| 2001:db8::14a9:c9db:0 \| ${1232} \| 08:00:27:58:71:eb \ +| | ... | \| 08:00:27:66:b8:57 \| 100.0.0.1 \| 20.169.201.219 \| +| | ... +| | [Arguments] +| | ... | ${tg_node} | ${tx_if} | ${rx_if} | ${tx_dst_mac} | ${tx_src_mac} +| | ... | ${tx_dst_ipv6} | ${tx_src_ipv6} | ${tx_src_udp_port} +| | ... | ${rx_dst_mac} | ${rx_src_mac} | ${dst_ipv4} | ${src_ipv4} +| | ... +| | ${tx_name}= | Get interface name | ${tg_node} | ${tx_if} +| | ${rx_name}= | Get interface name | ${tg_node} | ${rx_if} +| | ${args}= | Catenate +| | ... | --tx_if | ${tx_name} | --rx_if | ${rx_name} +| | ... | --tx_dst_mac | ${tx_dst_mac} | --tx_src_mac | ${tx_src_mac} +| | ... | --tx_src_ipv6 | ${tx_src_ipv6} | --tx_dst_ipv6 | ${tx_dst_ipv6} +| | ... | --tx_src_udp_port | ${tx_src_udp_port} +| | ... | --rx_dst_mac | ${rx_dst_mac} | --rx_src_mac | ${rx_src_mac} +| | ... | --rx_src_ipv4 | ${src_ipv4} | --rx_dst_ipv4 | ${dst_ipv4} +| | ... +| | Run Traffic Script On Node +| | ... | send_ipv6_udp_check_map_t.py | ${tg_node} | ${args} diff --git a/resources/libraries/robot/ip/snat.robot b/resources/libraries/robot/ip/snat.robot new file mode 100644 index 0000000000..610a9150ee --- /dev/null +++ b/resources/libraries/robot/ip/snat.robot @@ -0,0 +1,150 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.SNATUtil +| Library | resources.libraries.python.NAT.NATUtil +| Documentation | Keywords for SNAT feature in VPP. + +*** Keywords *** +| Configure inside and outside interfaces +| | [Documentation] | Configure inside and outside interfaces for SNAT. +| | ... +| | ... | *Arguments:* +| | ... | - node - DUT node to set SNAT interfaces on. Type: dictionary +| | ... | - int_in - Inside interface. Type: string +| | ... | - int_out - Outside interface. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure inside and outside interfaces \| ${nodes['DUT1']} \ +| | ... | \| FortyGigabitEtherneta/0/0 \| FortyGigabitEtherneta/0/1 \| +| | ... +| | [Arguments] | ${node} | ${int_in} | ${int_out} +| | ... +| | ${int_in_name}= | Set variable | ${node['interfaces']['${int_in}']['name']} +| | ${int_out_name}= | Set variable | ${node['interfaces']['${int_out}']['name']} +| | Set SNAT Interfaces | ${node} | ${int_in_name} | ${int_out_name} + +| Configure deterministic mode for SNAT +| | [Documentation] | Set deterministic behaviour of SNAT. +| | ... +| | ... | *Arguments:* +| | ... | - node - DUT node to set deterministic mode for SNAT on. +| | ... | Type: dictionary +| | ... | - ip_in - Inside IP. Type: string +| | ... | - subnet_in - Inside IP subnet. Type: string +| | ... | - ip_out - Outside IP. Type: string +| | ... | - subnet_out - Outside IP subnet. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure deterministic mode for SNAT \| ${nodes['DUT1']} \ +| | ... | \| 100.0.0.0 \| 12 \| 12.1.1.0 \| 24 \| +| | ... +| | [Arguments] | ${node} | ${ip_in} | ${subnet_in} | ${ip_out} | ${subnet_out} +| | ... +| | Set SNAT deterministic | ${node} | ${ip_in} | ${subnet_in} | ${ip_out} +| | ... | ${subnet_out} + +| Configure workers for SNAT +| | [Documentation] | Configure workers for SNAT. +| | ... +| | ... | *Arguments:* +| | ... | - node - DUT node to set SNAT workers on. Type: dictionary +| | ... | - lcores - list of cores, format: range e.g. 1-5 or list of ranges \ +| | ... | e.g.: 1-5,18-22. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure workers for SNAT \| ${nodes['DUT1']} \| 12-23,36-47 \| +| | ... +| | [Arguments] | ${node} | ${lcores} +| | ... +| | Set SNAT workers | ${node} | ${lcores} + +| Show SNAT verbose +| | [Documentation] | Get the SNAT settings on the node. +| | ... +| | ... | *Arguments:* +| | ... | - node - DUT node to show SNAT. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Show SNAT verbose \| ${nodes['DUT1']} \| +| | ... +| | [Arguments] | ${node} +| | ... +| | Show SNAT | ${node} + +| Get SNAT deterministic forward +| | [Documentation] | Show forward IP address and port(s). +| | ... +| | ... | *Arguments:* +| | ... | - node - DUT node to get SNAT deterministic forward on. +| | ... | Type: dictionary +| | ... | - ip - IP address. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Get SNAT deterministic forward \| ${nodes['DUT1']} \| 10.0.0.2 \| +| | ... +| | [Arguments] | ${node} | ${ip} +| | ... +| | Show SNAT deterministic forward | ${node} | ${ip} + +| Get SNAT deterministic reverse +| | [Documentation] | Show reverse IP address. +| | ... +| | ... | *Arguments:* +| | ... | - node - DUT node to get SNAT deterministic reverse on. +| | ... | Type: dictionary +| | ... | - ip - IP address. Type: string +| | ... | - port - Port. Type: string or integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Get SNAT deterministic reverse \| ${nodes['DUT1']} \| 10.0.0.2 \ +| | ... | \| 1025 \| +| | ... +| | [Arguments] | ${node} | ${ip} | ${port} +| | ... +| | Show SNAT deterministic reverse | ${node} | ${ip} | ${port} + +| Get NAT interfaces +| | [Documentation] | Get list of interfaces configured with NAT from VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - node - DUT node to get SNAT interfaces on. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Get NAT interfaces \| ${nodes['DUT1']} \| +| | ... +| | [Arguments] | ${node} +| | ... +| | VPP get NAT interfaces | ${node} + +| Get NAT static mappings +| | [Documentation] | Get NAT static mappings from VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - node - DUT node to get SNAT static mappings on. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Get NAT static mappings \| ${nodes['DUT1']} \| +| | ... +| | [Arguments] | ${node} +| | ... +| | VPP get NAT static mappings | ${node} diff --git a/resources/libraries/robot/ipsec.robot b/resources/libraries/robot/ipsec.robot deleted file mode 100644 index 73f7179f30..0000000000 --- a/resources/libraries/robot/ipsec.robot +++ /dev/null @@ -1,280 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Library | resources.libraries.python.IPsecUtil -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.TrafficScriptExecutor -| Library | resources.libraries.python.IPv4Util.IPv4Util -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.Routing -| Library | String -| Library | resources.libraries.python.IPv6Util -| Library | resources.libraries.python.IPv6Setup -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} -| ... | WITH NAME | dut1_v4 -| Documentation | *IPsec keywords.* - -*** Keywords *** -| Generate keys for IPSec -| | [Documentation] | Generate keys for IPsec. -| | ... -| | ... | *Arguments:* -| | ... | - crypto_alg - Encryption algorithm. Type: enum -| | ... | - integ_alg - Integrity algorithm. Type: enum -| | ... -| | ... | _NOTE:_ This KW sets following test case variable: -| | ... | - encr_key - Encryption key. Type: string -| | ... | - auth_key - Integrity key. Type: string -| | ... -| | ... | *Example:* -| | ... | \| ${encr_alg}= \| Crypto Alg AES CBC 128 \| -| | ... | \| ${auth_alg}= \| Integ Alg SHA1 96 \| -| | ... | \| Generate keys for IPSec \| ${encr_alg} \| ${auth_alg} \| -| | [Arguments] | ${crypto_alg} | ${integ_alg} -| | ${encr_key_len}= | Get Crypto Alg Key Len | ${crypto_alg} -| | ${encr_key}= | Generate Random String | ${encr_key_len} -| | ${auth_key_len}= | Get Integ Alg Key Len | ${integ_alg} -| | ${auth_key}= | Generate Random String | ${auth_key_len} -| | Set Test Variable | ${encr_key} -| | Set Test Variable | ${auth_key} - -| Configure path for IPSec test -| | [Documentation] | Setup path for IPsec testing TG<-->DUT1. -| | ... -| | ... | _NOTE:_ This KW sets following test case variable: -| | ... | - tg_node - TG node. Type: dictionary -| | ... | - tg_if - TG interface connected to DUT. Type: string -| | ... | - tg_if_mac - TG interface MAC. Type: string -| | ... | - dut_node - DUT node. Type: dictionary -| | ... | - dut_if - DUT interface connected to TG. Type: string -| | ... | - dut_if_mac - DUT interface MAC. Type: string -| | ... | - dut_lo - DUT loopback interface. Type: string -| | ... -| | ... | *Example:* -| | ... | \| Configure path for IPSec test \| -| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} -| | Compute Path -| | ${tg_if} | ${tg_node}= | Next Interface -| | ${dut_if} | ${dut_node}= | Next Interface -| | ${dut_if_mac}= | Get Interface Mac | ${dut_node} | ${dut_if} -| | ${tg_if_mac}= | Get Interface Mac | ${tg_node} | ${tg_if} -| | ${dut_lo}= | Vpp Create Loopback | ${dut_node} -| | Set Interface State | ${dut_node} | ${dut_if} | up -| | Set Interface State | ${dut_node} | ${dut_lo} | up -| | Vpp Node Interfaces Ready Wait | ${dut_node} -| | Set Test Variable | ${tg_node} -| | Set Test Variable | ${tg_if} -| | Set Test Variable | ${tg_if_mac} -| | Set Test Variable | ${dut_node} -| | Set Test Variable | ${dut_if} -| | Set Test Variable | ${dut_if_mac} -| | Set Test Variable | ${dut_lo} - -| Configure topology for IPv4 IPsec testing -| | [Documentation] | Setup topology for IPv4 IPsec testing. -| | ... -| | ... | _NOTE:_ This KW sets following test case variable: -| | ... | - dut_tun_ip - DUT tunnel IP address. Type: string -| | ... | - dut_src_ip - DUT source IP address. Type: string -| | ... | - tg_tun_ip - TG tunnel IP address. Type: string -| | ... | - tg_src_ip - TG source IP address. Type: string -| | ... -| | ... | *Example:* -| | ... | \| Configure topology for IPv4 IPsec testing \| -| | Configure path for IPSec test -| | Set Interface Address | ${dut_node} | ${dut_if} | ${dut_if_ip4} -| | ... | ${ip4_plen} -| | Set Interface Address | ${dut_node} | ${dut_lo} | ${dut_lo_ip4} -| | ... | ${ip4_plen} -| | dut1_v4.Set Arp | ${dut_if} | ${tg_if_ip4} | ${tg_if_mac} -| | Vpp Route Add | ${dut_node} | ${tg_lo_ip4} | ${ip4_plen} | ${tg_if_ip4} -| | ... | ${dut_if} -| | Set Test Variable | ${dut_tun_ip} | ${dut_if_ip4} -| | Set Test Variable | ${dut_src_ip} | ${dut_lo_ip4} -| | Set Test Variable | ${tg_tun_ip} | ${tg_if_ip4} -| | Set Test Variable | ${tg_src_ip} | ${tg_lo_ip4} - -| Configure topology for IPv6 IPsec testing -| | [Documentation] | Setup topology fo IPv6 IPsec testing. -| | ... -| | ... | _NOTE:_ This KW sets following test case variable: -| | ... | - dut_tun_ip - DUT tunnel IP address. Type: string -| | ... | - dut_src_ip - DUT source IP address. Type: string -| | ... | - tg_tun_ip - TG tunnel IP address. Type: string -| | ... | - tg_src_ip - TG source IP address. Type: string -| | ... -| | ... | *Example:* -| | ... | \| Configure topology for IPv6 IPsec testing \| -| | Configure path for IPSec test -| | VPP Set If IPv6 Addr | ${dut_node} | ${dut_if} | ${dut_if_ip6} | ${ip6_plen} -| | VPP Set If IPv6 Addr | ${dut_node} | ${dut_lo} | ${dut_lo_ip6} | ${ip6_plen} -| | Add IP Neighbor | ${dut_node} | ${dut_if} | ${tg_if_ip6} | ${tg_if_mac} -| | Vpp All RA Suppress Link Layer | ${nodes} -| | Vpp Route Add | ${dut_node} | ${tg_lo_ip6} | ${ip6_plen_rt} | ${tg_if_ip6} -| | ... | ${dut_if} -| | Set Test Variable | ${dut_tun_ip} | ${dut_if_ip6} -| | Set Test Variable | ${dut_src_ip} | ${dut_lo_ip6} -| | Set Test Variable | ${tg_tun_ip} | ${tg_if_ip6} -| | Set Test Variable | ${tg_src_ip} | ${tg_lo_ip6} - -| Configure manual keyed connection for IPSec -| | [Documentation] | Setup IPsec manual keyed connection on VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - node - VPP node to setup IPsec on. Type: dictionary -| | ... | - interface - Interface to enable IPsec on. Type: string -| | ... | - crypto_alg - Encrytion algorithm. Type: enum -| | ... | - crypto_key - Encryption key. Type: string -| | ... | - integ_alg - Integrity algorithm. Type: enum -| | ... | - integ_key - Integrity key. Type: string -| | ... | - l_spi - Local SPI. Type: integer -| | ... | - r_spi - Remote SPI. Type: integer -| | ... | - l_ip - Local IP address. Type: string -| | ... | - r_ip - Remote IP address. Type: string -| | ... | - l_tunnel - Local tunnel IP address (optional). Type: string -| | ... | - r_tunnel - Remote tunnel IP address (optional). Type: string -| | ... -| | ... | _NOTE:_ This KW sets following test case variables: -| | ... | - l_sa_id -| | ... | - r_sa_id -| | ... -| | ... | *Example:* -| | ... | \| ${encr_alg}= \| Crypto Alg AES CBC 128 \| -| | ... | \| ${auth_alg}= \| Integ Alg SHA1 96 \| -| | ... | \| Configure manual keyed connection for IPSec \| ${nodes['DUT1']} \ -| | ... | \| GigabitEthernet0/8/0 \| ${encr_alg} \| sixteenbytes_key \ -| | ... | \| ${auth_alg} \| twentybytessecretkey \| ${1000} \| ${1001} \ -| | ... | \| 192.168.4.4 \| 192.168.3.3 \| 192.168.100.3 \| 192.168.100.2 \| -| | [Arguments] | ${node} | ${interface} | ${crypto_alg} | ${crypto_key} -| | ... | ${integ_alg} | ${integ_key} | ${l_spi} | ${r_spi} | ${l_ip} -| | ... | ${r_ip} | ${l_tunnel}=${None} | ${r_tunnel}=${None} -| | Set Test Variable | ${l_sa_id} | ${10} -| | Set Test Variable | ${r_sa_id} | ${20} -| | ${spd_id}= | Set Variable | ${1} -| | ${p_hi}= | Set Variable | ${100} -| | ${p_lo}= | Set Variable | ${10} -| | VPP IPsec Add SAD Entry | ${node} | ${l_sa_id} | ${l_spi} | ${crypto_alg} -| | ... | ${crypto_key} | ${integ_alg} | ${integ_key} -| | ... | ${l_tunnel} | ${r_tunnel} -| | VPP IPsec Add SAD Entry | ${node} | ${r_sa_id} | ${r_spi} | ${crypto_alg} -| | ... | ${crypto_key} | ${integ_alg} | ${integ_key} -| | ... | ${r_tunnel} | ${l_tunnel} -| | VPP IPsec Add SPD | ${node} | ${spd_id} -| | VPP IPsec SPD Add If | ${node} | ${spd_id} | ${interface} -| | ${action}= | Policy Action Bypass -| | VPP IPsec SPD Add Entry | ${node} | ${spd_id} | ${p_hi} | ${action} -| | ... | inbound=${TRUE} | proto=${ESP_PROTO} -| | VPP IPsec SPD Add Entry | ${node} | ${spd_id} | ${p_hi} | ${action} -| | ... | inbound=${FALSE} | proto=${ESP_PROTO} -| | ${action}= | Policy Action Protect -| | VPP IPsec SPD Add Entry | ${node} | ${spd_id} | ${p_lo} | ${action} -| | ... | sa_id=${r_sa_id} | laddr_range=${l_ip} -| | ... | raddr_range=${r_ip} | inbound=${TRUE} -| | VPP IPsec SPD Add Entry | ${node} | ${spd_id} | ${p_lo} | ${action} -| | ... | sa_id=${l_sa_id} | laddr_range=${l_ip} -| | ... | raddr_range=${r_ip} | inbound=${FALSE} - -| Update IPSec SA keys -| | [Documentation] | Update IPsec SA keys on VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - node - VPP node to update SA keys. Type: dictionary -| | ... | - l_sa_id - Local SA ID. Type: string -| | ... | - r_sa_id - Remote SA ID. Type: string -| | ... | - crypto_key - Encryption key. Type: string -| | ... | - integ_key - Integrity key. Type: string -| | ... -| | ... | *Example:* -| | ... | \| Update IPSec SA keys \| ${nodes['DUT1']} \ -| | ... | \| 10 \| 20 \| sixteenbytes_key \| twentybytessecretkey \| -| | [Arguments] | ${node} | ${l_sa_id} | ${r_sa_id} | ${crypto_key} -| | ... | ${integ_key} -| | VPP IPsec SA Set Key | ${dut_node} | ${l_sa_id} | ${crypto_key} -| | ... | ${integ_key} -| | VPP IPsec SA Set Key | ${dut_node} | ${r_sa_id} | ${crypto_key} -| | ... | ${integ_key} - -| Send IPsec Packet and verify ESP encapsulation in received packet -| | [Documentation] | Send IPsec packet from TG to DUT. Receive IPsec packet\ -| | ... | from DUT on TG and verify ESP encapsulation. -| | ... -| | ... | *Arguments:* -| | ... | - node - TG node. Type: dictionary -| | ... | - interface - TG Interface. Type: string -| | ... | - dst_mac - Destination MAC. Type: string -| | ... | - crypto_alg - Encrytion algorithm. Type: enum -| | ... | - crypto_key - Encryption key. Type: string -| | ... | - integ_alg - Integrity algorithm. Type: enum -| | ... | - integ_key - Integrity key. Type: string -| | ... | - l_spi - Local SPI. Type: integer -| | ... | - r_spi - Remote SPI. Type: integer -| | ... | - l_ip - Local IP address. Type: string -| | ... | - r_ip - Remote IP address. Type: string -| | ... | - l_tunnel - Local tunnel IP address (optional). Type: string -| | ... | - r_tunnel - Remote tunnel IP address (optional). Type: string -| | ... -| | ... | *Example:* -| | ... | \| ${encr_alg}= \| Crypto Alg AES CBC 128 \| -| | ... | \| ${auth_alg}= \| Integ Alg SHA1 96 \| -| | ... | \| Send IPsec Packet and verify ESP encapsulation in received packet\ -| | ... | \| ${nodes['TG']} \| eth1 \ -| | ... | \| 52:54:00:d4:d8:22 \| ${encr_alg} \| sixteenbytes_key \ -| | ... | \| ${auth_alg} \| twentybytessecretkey \| ${1001} \| ${1000} \ -| | ... | \| 192.168.3.3 \| 192.168.4.4 \| 192.168.100.2 \| 192.168.100.3 \| -| | [Arguments] | ${node} | ${interface} | ${dst_mac} | ${crypto_alg} -| | ... | ${crypto_key} | ${integ_alg} | ${integ_key} | ${l_spi} -| | ... | ${r_spi} | ${l_ip} | ${r_ip} | ${l_tunnel}=${None} -| | ... | ${r_tunnel}=${None} -| | ${src_mac}= | Get Interface Mac | ${node} | ${interface} -| | ${if_name}= | Get Interface Name | ${node} | ${interface} -| | ${args}= | Traffic Script Gen Arg | ${if_name} | ${if_name} | ${src_mac} -| | ... | ${dst_mac} | ${l_ip} | ${r_ip} -| | ${crypto_alg_str}= | Get Crypto Alg Scapy Name | ${crypto_alg} -| | ${integ_alg_str}= | Get Integ Alg Scapy Name | ${integ_alg} -| | ${args}= | Catenate | ${args} | --crypto_alg ${crypto_alg_str} -| | ... | --crypto_key ${crypto_key} | --integ_alg ${integ_alg_str} -| | ... | --integ_key ${integ_key} | --l_spi ${l_spi} | --r_spi ${r_spi} -| | ${args}= | Set Variable If | "${l_tunnel}" == "${None}" | ${args} -| | ... | ${args} --src_tun ${l_tunnel} -| | ${args}= | Set Variable If | "${r_tunnel}" == "${None}" | ${args} -| | ... | ${args} --dst_tun ${r_tunnel} -| | Run Traffic Script On Node | ipsec.py | ${node} | ${args} - -| Set up IPv4 IPSec functional test -| | [Documentation] -| | ... | Set up IPv4 IPSec functional test -| | ... -| | Set up functional test -| | Configure topology for IPv4 IPsec testing - -| Set up IPv6 IPSec functional test -| | [Documentation] -| | ... | Set up IPv6 IPSec functional test -| | ... -| | Set up functional test -| | Configure topology for IPv6 IPsec testing - -| Tear down IPSec functional test -| | [Documentation] -| | ... | Tear down IPSec functional test -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Tear down IPSec functional test \| ${dut_node} \| -| | ... -| | [Arguments] | ${dut_node} -| | ... -| | VPP IPsec Show | ${dut_node} -| | Tear down functional test diff --git a/resources/libraries/robot/ipv4.robot b/resources/libraries/robot/ipv4.robot deleted file mode 100644 index 3fa522f5c5..0000000000 --- a/resources/libraries/robot/ipv4.robot +++ /dev/null @@ -1,160 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/counters.robot -| Library | resources.libraries.python.IPv4Util.IPv4Util -| Library | resources.libraries.python.IPv4Setup.IPv4Setup -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Routing -| Library | resources.libraries.python.TrafficScriptExecutor -| Library | resources.libraries.python.InterfaceUtil -| Variables | resources/libraries/python/IPv4NodeAddress.py | ${nodes} - -*** Keywords *** - -| Configure IPv4 addresses on all DUTs -| | [Documentation] | Setup IPv4 address on all DUTs in topology -| | [Arguments] | ${nodes} | ${nodes_addr} -| | ${interfaces}= | VPP nodes set ipv4 addresses | ${nodes} | ${nodes_addr} -| | :FOR | ${interface} | IN | @{interfaces} -| | | Set Interface State | @{interface} | up | if_type=name - -| Configure routes for IPv4 test -| | [Documentation] | Setup routing on all VPP nodes required for IPv4 tests -| | [Arguments] | ${nodes} | ${nodes_addr} -| | Append Nodes | ${nodes['DUT1']} | ${nodes['DUT2']} -| | Compute Path -| | ${tg}= | Set Variable | ${nodes['TG']} -| | ${dut1_if} | ${dut1}= | First Interface -| | ${dut2_if} | ${dut2}= | Last Interface -| | ${dut1_if_addr}= | Get IPv4 address of node "${dut1}" interface "${dut1_if}" from "${nodes_addr}" -| | ${dut2_if_addr}= | Get IPv4 address of node "${dut2}" interface "${dut2_if}" from "${nodes_addr}" -| | @{tg_dut1_links}= | Get active links connecting "${tg}" and "${dut1}" -| | @{tg_dut2_links}= | Get active links connecting "${tg}" and "${dut2}" -| | :FOR | ${link} | IN | @{tg_dut1_links} -| | | ${net}= | Get Link Address | ${link} | ${nodes_addr} -| | | ${prefix}= | Get Link Prefix | ${link} | ${nodes_addr} -| | | Vpp Route Add | ${dut2} | ${net} | ${prefix} | ${dut1_if_addr} | ${dut2_if} -| | :FOR | ${link} | IN | @{tg_dut2_links} -| | | ${net}= | Get Link Address | ${link} | ${nodes_addr} -| | | ${prefix}= | Get Link Prefix | ${link} | ${nodes_addr} -| | | Vpp Route Add | ${dut1} | ${net} | ${prefix} | ${dut2_if_addr} | ${dut1_if} - -| Configure DUT nodes for IPv4 testing -| | Configure IPv4 addresses on all DUTs | ${nodes} | ${nodes_ipv4_addr} -| | Setup ARP on all DUTs | ${nodes} | ${nodes_ipv4_addr} -| | Configure routes for IPv4 test | ${nodes} | ${nodes_ipv4_addr} -| | All Vpp Interfaces Ready Wait | ${nodes} - -| Route traffic from interface '${from_port}' on node '${from_node}' to interface '${to_port}' on node '${to_node}' '${hops}' hops away using IPv4 -| | ${src_ip}= | Get IPv4 address of node "${from_node}" interface "${from_port}" from "${nodes_ipv4_addr}" -| | ${dst_ip}= | Get IPv4 address of node "${to_node}" interface "${to_port}" from "${nodes_ipv4_addr}" -| | ${src_mac}= | Get interface mac | ${from_node} | ${from_port} -| | ${dst_mac}= | Get interface mac | ${to_node} | ${to_port} -| | ${is_dst_tg}= | Is TG node | ${to_node} -| | ${adj_node} | ${adj_int}= | Get adjacent node and interface | ${nodes} | ${from_node} | ${from_port} -| | ${from_port_name}= | Get interface name | ${from_node} | ${from_port} -| | ${to_port_name}= | Get interface name | ${to_node} | ${to_port} -| | ${adj_int_mac}= | Get interface MAC | ${adj_node} | ${adj_int} -| | ${args}= | Traffic Script Gen Arg | ${to_port_name} | ${from_port_name} | ${src_mac} -| | | ... | ${dst_mac} | ${src_ip} | ${dst_ip} -| | ${args}= | Catenate | ${args} | --hops ${hops} | --first_hop_mac ${adj_int_mac} -| | | ... | --is_dst_tg ${is_dst_tg} -| | Run Traffic Script On Node | ipv4_ping_ttl_check.py | ${from_node} | ${args} - -| Execute IPv4 ICMP echo sweep -| | [Documentation] | Type of the src_node must be TG and dst_node must be DUT -| | [Arguments] | ${src_node} | ${dst_node} | ${start_size} | ${end_size} | ${step} -| | Append Nodes | ${src_node} | ${dst_node} -| | Compute Path -| | ${src_port} | ${src_node}= | First Interface -| | ${dst_port} | ${dst_node}= | Last Interface -| | ${src_ip}= | Get IPv4 address of node "${src_node}" interface "${src_port}" from "${nodes_ipv4_addr}" -| | ${dst_ip}= | Get IPv4 address of node "${dst_node}" interface "${dst_port}" from "${nodes_ipv4_addr}" -| | ${src_mac}= | Get Interface Mac | ${src_node} | ${src_port} -| | ${dst_mac}= | Get Interface Mac | ${dst_node} | ${dst_port} -| | ${src_port_name}= | Get interface name | ${src_node} | ${src_port} -| | ${args}= | Traffic Script Gen Arg | ${src_port_name} | ${src_port_name} -| | | ... | ${src_mac} | ${dst_mac} | ${src_ip} | ${dst_ip} -| | ${args}= | Set Variable -| | ... | ${args} --start_size ${start_size} --end_size ${end_size} --step ${step} -| | Run Traffic Script On Node | ipv4_sweep_ping.py | ${src_node} | ${args} -| | ... | timeout=${180} - -| Send ARP request and verify response -| | [Arguments] | ${tg_node} | ${vpp_node} -| | ${link_name}= | Get first active connecting link between node "${tg_node}" and "${vpp_node}" -| | ${src_if}= | Get interface by link name | ${tg_node} | ${link_name} -| | ${dst_if}= | Get interface by link name | ${vpp_node} | ${link_name} -| | ${src_ip}= | Get IPv4 address of node "${tg_node}" interface "${src_if}" from "${nodes_ipv4_addr}" -| | ${dst_ip}= | Get IPv4 address of node "${vpp_node}" interface "${dst_if}" from "${nodes_ipv4_addr}" -| | ${src_mac}= | Get node link mac | ${tg_node} | ${link_name} -| | ${dst_mac}= | Get node link mac | ${vpp_node} | ${link_name} -| | ${src_if_name}= | Get interface name | ${tg_node} | ${src_if} -| | ${args}= | Traffic Script Gen Arg | ${src_if_name} | ${src_if_name} | ${src_mac} -| | | ... | ${dst_mac} | ${src_ip} | ${dst_ip} -| | Run Traffic Script On Node | arp_request.py | ${tg_node} | ${args} - -| Configure IP addresses on interfaces -| | [Documentation] | Iterates through @{args} list and Set Interface Address -| | ... | for every (${dut_node}, ${interface}, ${address}, -| | ... | ${prefix}) tuple. -| | ... -| | ... | *Arguments:* -| | ... | - ${dut_node} - Node where IP address should be set to. -| | ... | Type: dictionary -| | ... | - ${interface} - Interface name. Type: string -| | ... | - ${address} - IP address. Type: string -| | ... | - ${prefix} - Prefix length. Type: integer -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Configure IP addresses on interfaces \ -| | ... | \| ${dut1_node} \| ${dut1_to_dut2} \| 192.168.1.1 \| 24 \| -| | ... | \| ... \| ${dut1_node} \| ${dut1_to_tg} \| 192.168.2.1 \| 24 \| -| | ... -| | [Arguments] | @{args} -| | :FOR | ${dut_node} | ${interface} | ${address} | ${prefix} | IN | @{args} -| | | Set Interface Address | ${dut_node} | ${interface} | ${address} -| | | ... | ${prefix} - -| Send ICMP echo request and verify answer -| | [Documentation] | Run traffic script that waits for ICMP reply and ignores -| | ... | all other packets. -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - TG node where run traffic script. Type: dictionary -| | ... | - tg_interface - TG interface where send ICMP echo request. -| | ... | Type: string -| | ... | - dst_mac - Destination MAC address. Type: string -| | ... | - src_mac - Source MAC address. Type: string -| | ... | - dst_ip - Destination IP address. Type: string -| | ... | - src_ip - Source IP address. Type: string -| | ... | - timeout - Wait timeout in seconds (Default: 10). Type: integer -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send ICMP echo request and verify answer \ -| | ... | \| ${nodes['TG']} \| eth2 \ -| | ... | \| 08:00:27:46:2b:4c \| 08:00:27:66:b8:57 \ -| | ... | \| 192.168.23.10 \| 192.168.23.1 \| 10 \| -| | ... -| | [Arguments] | ${tg_node} | ${tg_interface} -| | ... | ${dst_mac} | ${src_mac} | ${dst_ip} | ${src_ip} | ${timeout}=${10} -| | ${tg_interface_name}= | Get interface name | ${tg_node} | ${tg_interface} -| | ${args}= | Catenate | --rx_if | ${tg_interface_name} | --tx_if | ${tg_interface_name} -| | ... | --dst_mac | ${dst_mac} | --src_mac | ${src_mac} -| | ... | --dst_ip | ${dst_ip} | --src_ip | ${src_ip} | --timeout | ${timeout} -| | Run Traffic Script On Node | send_icmp_wait_for_reply.py -| | ... | ${tg_node} | ${args} diff --git a/resources/libraries/robot/ipv6.robot b/resources/libraries/robot/ipv6.robot deleted file mode 100644 index b82c995e3a..0000000000 --- a/resources/libraries/robot/ipv6.robot +++ /dev/null @@ -1,195 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""IPv6 keywords""" - -*** Settings *** -| Library | resources.libraries.python.IPv6Util -| Library | resources.libraries.python.IPv6Setup -| Library | resources.libraries.python.TrafficScriptExecutor -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Routing -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.topology.Topology -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/counters.robot -| Documentation | IPv6 keywords - -*** Keywords *** -| Send IPv6 icmp echo request to DUT1 ingress inteface and verify answer -| | [Documentation] | Type of the src_node must be TG and dst_node must be DUT -| | [Arguments] | ${tg_node} | ${dut_node} | ${nodes_addr} -| | Append Nodes | ${tg_node} | ${dut_node} -| | Compute Path -| | ${src_port} | ${src_node}= | First Interface -| | ${dst_port} | ${dst_node}= | Last Interface -| | ${src_ip}= | Get Node Port Ipv6 Address | ${src_node} | ${src_port} | ${nodes_addr} -| | ${dst_ip}= | Get Node Port Ipv6 Address | ${dst_node} | ${dst_port} | ${nodes_addr} -| | ${src_mac}= | Get Interface Mac | ${src_node} | ${src_port} -| | ${dst_mac}= | Get Interface Mac | ${dst_node} | ${dst_port} -| | ${src_port_name}= | Get interface name | ${src_node} | ${src_port} -| | ${args}= | Traffic Script Gen Arg | ${src_port_name} | ${src_port_name} | ${src_mac} -| | | ... | ${dst_mac} | ${src_ip} | ${dst_ip} -| | Run Traffic Script On Node | icmpv6_echo.py | ${tg_node} | ${args} -| | Get interface statistics | ${dst_node} -| | ${ipv6_counter}= | Get interface ipv6 counter | ${dst_node} | ${dst_port} -| | Should Be Equal | ${ipv6_counter} | ${2} | #ICMPv6 neighbor advertisement + ICMPv6 echo request - -| Execute IPv6 ICMP echo sweep -| | [Documentation] | Type of the src_node must be TG and dst_node must be DUT -| | [Arguments] | ${src_node} | ${dst_node} | ${start_size} | ${end_size} -| | ... | ${step} | ${nodes_addr} -| | Append Nodes | ${src_node} | ${dst_node} -| | Compute Path -| | ${src_port} | ${src_node}= | First Interface -| | ${dst_port} | ${dst_node}= | Last Interface -| | ${src_ip}= | Get Node Port Ipv6 Address | ${src_node} | ${src_port} -| | ... | ${nodes_addr} -| | ${dst_ip}= | Get Node Port Ipv6 Address | ${dst_node} | ${dst_port} -| | ... | ${nodes_addr} -| | ${src_mac}= | Get Interface Mac | ${src_node} | ${src_port} -| | ${dst_mac}= | Get Interface Mac | ${dst_node} | ${dst_port} -| | ${src_port_name}= | Get interface name | ${src_node} | ${src_port} -| | ${args}= | Traffic Script Gen Arg | ${src_port_name} | ${src_port_name} -| | | ... | ${src_mac} | ${dst_mac} | ${src_ip} | ${dst_ip} -| | ${args}= | Set Variable -| | ... | ${args} --start_size ${start_size} --end_size ${end_size} --step ${step} -| | Run Traffic Script On Node | ipv6_sweep_ping.py | ${src_node} | ${args} -| | ... | timeout=${180} - -| Send IPv6 ICMP echo request to DUT1 egress interface and verify answer -| | [Documentation] | Send traffic from TG to first DUT egress interface -| | [Arguments] | ${tg_node} | ${first_dut} | ${second_dut} | ${nodes_addr} -| | Append Nodes | ${tg_node} | ${first_dut} | ${second_dut} -| | Compute Path -| | ${src_port} | ${src_node}= | First Interface -| | ${dst_port} | ${dst_node}= | Last Egress Interface -| | ${hop_port} | ${hop_node}= | First Ingress Interface -| | ${src_ip}= | Get Node Port Ipv6 Address | ${src_node} | ${src_port} | ${nodes_addr} -| | ${dst_ip}= | Get Node Port Ipv6 Address | ${dst_node} | ${dst_port} | ${nodes_addr} -| | ${src_mac}= | Get Interface Mac | ${src_node} | ${src_port} -| | ${dst_mac}= | Get Interface Mac | ${hop_node} | ${hop_port} -| | ${src_port_name}= | Get interface name | ${src_node} | ${src_port} -| | ${args}= | Traffic Script Gen Arg | ${src_port_name} | ${src_port_name} | ${src_mac} -| | | ... | ${dst_mac} | ${src_ip} | ${dst_ip} -| | Run Traffic Script On Node | icmpv6_echo.py | ${tg_node} | ${args} - - -| Send IPv6 ICMP echo request to DUT2 via DUT1 and verify answer -| | [Documentation] | Send traffic from TG to second DUT through first DUT -| | [Arguments] | ${tg_node} | ${first_dut} | ${second_dut} | ${nodes_addr} -| | Append Nodes | ${tg_node} | ${first_dut} | ${second_dut} -| | Compute Path -| | ${src_port} | ${src_node}= | First Interface -| | ${dst_port} | ${dst_node}= | Last Interface -| | ${hop_port} | ${hop_node}= | First Ingress Interface -| | ${src_ip}= | Get Node Port Ipv6 Address | ${src_node} | ${src_port} | ${nodes_addr} -| | ${dst_ip}= | Get Node Port Ipv6 Address | ${dst_node} | ${dst_port} | ${nodes_addr} -| | ${src_mac}= | Get Interface Mac | ${src_node} | ${src_port} -| | ${dst_mac}= | Get Interface Mac | ${hop_node} | ${hop_port} -| | ${src_port_name}= | Get interface name | ${src_node} | ${src_port} -| | ${args}= | Traffic Script Gen Arg | ${src_port_name} | ${src_port_name} | ${src_mac} -| | | ... | ${dst_mac} | ${src_ip} | ${dst_ip} -| | Run Traffic Script On Node | icmpv6_echo.py | ${tg_node} | ${args} - -| Send IPv6 ICMP echo request to DUT2 egress interface via DUT1 and verify answer -| | [Documentation] | Send traffic from TG to second DUT egress interface through first DUT -| | [Arguments] | ${tg_node} | ${first_dut} | ${second_dut} | ${nodes_addr} -| | Append Nodes | ${tg_node} | ${first_dut} | ${second_dut} | ${tg_node} -| | Compute Path -| | ${src_port} | ${src_node}= | First Interface -| | ${dst_port} | ${dst_node}= | Last Egress Interface -| | ${hop_port} | ${hop_node}= | First Ingress Interface -| | ${src_ip}= | Get Node Port Ipv6 Address | ${src_node} | ${src_port} | ${nodes_addr} -| | ${dst_ip}= | Get Node Port Ipv6 Address | ${dst_node} | ${dst_port} | ${nodes_addr} -| | ${src_mac}= | Get Interface Mac | ${src_node} | ${src_port} -| | ${dst_mac}= | Get Interface Mac | ${hop_node} | ${hop_port} -| | ${src_port_name}= | Get interface name | ${src_node} | ${src_port} -| | ${args}= | Traffic Script Gen Arg | ${src_port_name} | ${src_port_name} | ${src_mac} -| | | ... | ${dst_mac} | ${src_ip} | ${dst_ip} -| | Run Traffic Script On Node | icmpv6_echo.py | ${tg_node} | ${args} - -| Ipv6 tg to tg routed -| | [Documentation] | Send traffic from one TG port to another through DUT nodes -| | ... | and send reply back, also verify hop limit processing -| | [Arguments] | ${tg_node} | ${first_dut} | ${second_dut} | ${nodes_addr} -| | Append Nodes | ${tg_node} | ${first_dut} | ${second_dut} | ${tg_node} -| | Compute Path -| | ${src_port} | ${src_node}= | First Interface -| | ${dst_port} | ${dst_node}= | Last Interface -| | ${src_nh_port} | ${src_nh_node}= | First Ingress Interface -| | ${dst_nh_port} | ${dst_nh_node}= | Last Egress Interface -| | ${src_ip}= | Get Node Port Ipv6 Address | ${src_node} | ${src_port} | ${nodes_addr} -| | ${dst_ip}= | Get Node Port Ipv6 Address | ${dst_node} | ${dst_port} | ${nodes_addr} -| | ${src_mac}= | Get Interface Mac | ${src_node} | ${src_port} -| | ${dst_mac}= | Get Interface Mac | ${src_node} | ${dst_port} -| | ${src_nh_mac}= | Get Interface Mac | ${src_nh_node} | ${src_nh_port} -| | ${dst_nh_mac}= | Get Interface Mac | ${dst_nh_node} | ${dst_nh_port} -| | ${src_port_name}= | Get interface name | ${src_node} | ${src_port} -| | ${dst_port_name}= | Get interface name | ${dst_node} | ${dst_port} -| | ${args}= | Traffic Script Gen Arg | ${src_port_name} | ${dst_port_name} | ${src_mac} -| | | ... | ${dst_mac} | ${src_ip} | ${dst_ip} -| | ${args}= | Catenate | ${args} | --src_nh_mac ${src_nh_mac} -| | | ... | --dst_nh_mac ${dst_nh_mac} | --h_num 2 -| | Run Traffic Script On Node | icmpv6_echo_req_resp.py | ${tg_node} | ${args} - -| Send IPv6 neighbor solicitation and verify answer -| | [Documentation] | Send IPv6 neighbor solicitation from TG to DUT -| | [Arguments] | ${tg_node} | ${dut_node} | ${nodes_addr} -| | Append Nodes | ${tg_node} | ${dut_node} -| | Compute Path -| | ${src_port} | ${src_node}= | First Interface -| | ${dst_port} | ${dst_node}= | Last Interface -| | ${src_ip}= | Get Node Port Ipv6 Address | ${src_node} | ${src_port} | ${nodes_addr} -| | ${dst_ip}= | Get Node Port Ipv6 Address | ${dst_node} | ${dst_port} | ${nodes_addr} -| | ${src_mac}= | Get Interface Mac | ${src_node} | ${src_port} -| | ${dst_mac}= | Get Interface Mac | ${dst_node} | ${dst_port} -| | ${src_port_name}= | Get interface name | ${src_node} | ${src_port} -| | ${args}= | Traffic Script Gen Arg | ${src_port_name} | ${src_port_name} | ${src_mac} -| | | ... | ${dst_mac} | ${src_ip} | ${dst_ip} -| | Run Traffic Script On Node | ipv6_ns.py | ${src_node} | ${args} - -| Configure IPv6 on all DUTs in topology -| | [Documentation] | Setup IPv6 address on all DUTs -| | [Arguments] | ${nodes} | ${nodes_addr} -| | Configure all DUTs before test -| | ${interfaces}= | Nodes Set Ipv6 Addresses | ${nodes} | ${nodes_addr} -| | :FOR | ${interface} | IN | @{interfaces} -| | | Set Interface State | @{interface} | up | if_type=name -| | All Vpp Interfaces Ready Wait | ${nodes} - -| Suppress ICMPv6 router advertisement message -| | [Documentation] | Suppress ICMPv6 router advertisement message for link scope address -| | [Arguments] | ${nodes} -| | Vpp All Ra Suppress Link Layer | ${nodes} - -| Configure IPv6 routing on all DUTs -| | [Documentation] | Setup routing on all VPP nodes required for IPv6 tests -| | [Arguments] | ${nodes} | ${nodes_addr} -| | Append Nodes | ${nodes['DUT1']} | ${nodes['DUT2']} -| | Compute Path -| | ${tg}= | Set Variable | ${nodes['TG']} -| | ${dut1_if} | ${dut1}= | First Interface -| | ${dut2_if} | ${dut2}= | Last Interface -| | ${dut1_if_addr}= | Get Node Port Ipv6 Address | ${dut1} | ${dut1_if} | ${nodes_addr} -| | ${dut2_if_addr}= | Get Node Port Ipv6 Address | ${dut2} | ${dut2_if} | ${nodes_addr} -| | @{tg_dut1_links}= | Get active links connecting "${tg}" and "${dut1}" -| | @{tg_dut2_links}= | Get active links connecting "${tg}" and "${dut2}" -| | :FOR | ${link} | IN | @{tg_dut1_links} -| | | ${net}= | Get Link Address | ${link} | ${nodes_addr} -| | | ${prefix}= | Get Link Prefix | ${link} | ${nodes_addr} -| | | Vpp Route Add | ${dut2} | ${net} | ${prefix} | ${dut1_if_addr} | ${dut2_if} -| | :FOR | ${link} | IN | @{tg_dut2_links} -| | | ${net}= | Get Link Address | ${link} | ${nodes_addr} -| | | ${prefix}= | Get Link Prefix | ${link} | ${nodes_addr} -| | | Vpp Route Add | ${dut1} | ${net} | ${prefix} | ${dut2_if_addr} | ${dut1_if} diff --git a/resources/libraries/robot/l2/l2_bridge_domain.robot b/resources/libraries/robot/l2/l2_bridge_domain.robot new file mode 100644 index 0000000000..9c6c29dc7d --- /dev/null +++ b/resources/libraries/robot/l2/l2_bridge_domain.robot @@ -0,0 +1,279 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.L2Util +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.VhostUser +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot + +*** Keywords *** +| Configure L2BD forwarding +| | [Documentation] | Setup BD between 2 interfaces on VPP node and if learning +| | ... | is off set static L2FIB entry on second interface +| | [Arguments] | ${node} | ${if1} | ${if2} | ${learn}=${TRUE} | ${mac}=${EMPTY} +| | Set Interface State | ${node} | ${if1} | up +| | Set Interface State | ${node} | ${if2} | up +| | Vpp Add L2 Bridge Domain | ${node} | ${1} | ${if1} | ${if2} | ${learn} +| | Run Keyword If | ${learn} == ${FALSE} +| | ... | Vpp Add L2fib Entry | ${node} | ${mac} | ${if2} | ${1} +| | All Vpp Interfaces Ready Wait | ${nodes} + +| Configure path for 3-node BD-SHG test +| | [Documentation] | Compute path for bridge domain split-horizon group testing +| | ... | on three given nodes with following interconnections +| | ... | TG - (2 links) - DUT1 - (1 link) - DUT2 - (2 links) - TG +| | ... | and set corresponding test case variables. +| | ... +| | ... | *Arguments:* +| | ... | - ${tg_node} - TG node. Type: dictionary +| | ... | - ${dut1_node} - DUT1 node. Type: dictionary +| | ... | - ${dut2_node} - DUT2 node. Type: dictionary +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | _NOTE:_ This KW sets following test case variables: +| | ... | - ${tg_node} - TG node. +| | ... | - ${tg_to_dut1_if1} - TG interface 1 towards DUT1. +| | ... | - ${tg_to_dut1_if2} - TG interface 2 towards DUT1. +| | ... | - ${tg_to_dut2_if1} - TG interface 1 towards DUT2. +| | ... | - ${tg_to_dut2_if2} - TG interface 2 towards DUT2. +| | ... | - ${dut1_node} - DUT1 node. +| | ... | - ${dut1_to_tg_if1} - DUT1 interface 1 towards TG. +| | ... | - ${dut1_to_tg_if2} - DUT1 interface 2 towards TG. +| | ... | - ${dut1_to_dut2} - DUT1 interface towards DUT2. +| | ... | - ${dut2_node} - DUT2 node. +| | ... | - ${dut2_to_tg_if1} - DUT2 interface 1 towards TG. +| | ... | - ${dut2_to_tg_if2} - DUT2 interface 2 towards TG. +| | ... | - ${dut2_to_dut1} - DUT2 interface towards DUT1. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Given Configure path for 3-node BD-SHG test \| ${nodes['TG']} \ +| | ... | \| ${nodes['DUT1']} \| ${nodes['DUT2']} \| +| | [Arguments] | ${tg_node} | ${dut1_node} | ${dut2_node} +| | # Compute path TG - DUT1 with two links in between +| | Append Nodes | ${tg_node} | ${dut1_node} | ${tg_node} +| | Compute Path | always_same_link=${FALSE} +| | ${tg_to_dut1_if1} | ${tmp}= | First Interface +| | ${tg_to_dut1_if2} | ${tmp}= | Last Interface +| | ${dut1_to_tg_if1} | ${tmp}= | First Ingress Interface +| | ${dut1_to_tg_if2} | ${tmp}= | Last Egress Interface +| | # Compute path TG - DUT2 with two links in between +| | Clear Path +| | Append Nodes | ${tg_node} | ${dut2_node} | ${tg_node} +| | Compute Path | always_same_link=${FALSE} +| | ${tg_to_dut2_if1} | ${tmp}= | First Interface +| | ${tg_to_dut2_if2} | ${tmp}= | Last Interface +| | ${dut2_to_tg_if1} | ${tmp}= | First Ingress Interface +| | ${dut2_to_tg_if2} | ${tmp}= | Last Egress Interface +| | # Compute path DUT1 - DUT2 with one link in between +| | Clear Path +| | Append Nodes | ${dut1_node} | ${dut2_node} +| | Compute Path +| | ${dut1_to_dut2} | ${tmp}= | Next Interface +| | ${dut2_to_dut1} | ${tmp}= | Next Interface +| | # Set test variables +| | Set Test Variable | ${tg_to_dut1_if1} +| | Set Test Variable | ${tg_to_dut1_if2} +| | Set Test Variable | ${tg_to_dut2_if1} +| | Set Test Variable | ${tg_to_dut2_if2} +| | Set Test Variable | ${dut1_to_tg_if1} +| | Set Test Variable | ${dut1_to_tg_if2} +| | Set Test Variable | ${dut2_to_tg_if1} +| | Set Test Variable | ${dut2_to_tg_if2} +| | Set Test Variable | ${dut1_to_dut2} +| | Set Test Variable | ${dut2_to_dut1} +| | Set Test Variable | ${tg_node} +| | Set Test Variable | ${dut1_node} +| | Set Test Variable | ${dut2_node} + +| Set interfaces in 3-node BD-SHG test up +| | [Documentation] | Set UP state on interfaces in 3-node path on nodes and +| | ... | wait for all interfaces are ready. +| | ... +| | ... | *Arguments:* +| | ... | - No arguments. +| | ... +| | ... | *Return:* +| | ... | - No value returned. +| | ... +| | ... | _NOTE:_ This KW uses test variables sets in +| | ... | "Configure path for 3-node BD-SHG test" KW. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure path for 3-node BD-SHG test \| ${nodes['TG']} \ +| | ... | \| ${nodes['DUT1']} \| ${nodes['DUT2']} \| +| | ... | \| Set interfaces in 3-node BD-SHG test up \| +| | ... +| | Set Interface State | ${tg_node} | ${tg_to_dut1_if1} | up +| | Set Interface State | ${tg_node} | ${tg_to_dut1_if2} | up +| | Set Interface State | ${tg_node} | ${tg_to_dut2_if1} | up +| | Set Interface State | ${tg_node} | ${tg_to_dut2_if2} | up +| | Set Interface State | ${dut1_node} | ${dut1_to_tg_if1} | up +| | Set Interface State | ${dut1_node} | ${dut1_to_tg_if2} | up +| | Set Interface State | ${dut2_node} | ${dut2_to_tg_if1} | up +| | Set Interface State | ${dut2_node} | ${dut2_to_tg_if2} | up +| | Set Interface State | ${dut1_node} | ${dut1_to_dut2} | up +| | Set Interface State | ${dut2_node} | ${dut2_to_dut1} | up +| | Vpp Node Interfaces Ready Wait | ${dut1_node} +| | Vpp Node Interfaces Ready Wait | ${dut2_node} + +| Create bridge domain +| | [Documentation] | Create bridge domain on given VPP node with defined +| | ... | learning status. +| | ... +| | ... | *Arguments:* +| | ... | - ${dut_node} - DUT node. Type: dictionary +| | ... | - ${bd_id} - Bridge domain ID. Type: integer +| | ... | - ${learn} - Enable/disable MAC learn. Type: boolean, \ +| | ... | default value: ${TRUE} +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Create bridge domain \| ${nodes['DUT1']} \| 2 \| +| | ... | \| Create bridge domain \| ${nodes['DUT1']} \| 5 \ +| | ... | \| learn=${FALSE} \| +| | [Arguments] | ${dut_node} | ${bd_id} | ${learn}=${TRUE} +| | ${learn} = | Set Variable If | ${learn} == ${TRUE} | ${1} | ${0} +| | Create L2 BD | ${dut_node} | ${bd_id} | learn=${learn} + +| Add interface to bridge domain +| | [Documentation] | Set given interface admin state to up and add this +| | ... | interface to required L2 bridge domain on defined +| | ... | VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - ${dut_node} - DUT node. Type: dictionary +| | ... | - ${dut_if} - DUT node interface name. Type: string +| | ... | - ${bd_id} - Bridge domain ID. Type: integer +| | ... | - ${shg} - Split-horizon group ID. Type: integer, default value: 0 +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Add interface to bridge domain \| ${nodes['DUT2']} \ +| | ... | \| GigabitEthernet0/8/0 \| 3 \| +| | [Arguments] | ${dut_node} | ${dut_if} | ${bd_id} | ${shg}=0 +| | Set Interface State | ${dut_node} | ${dut_if} | up +| | Add Interface To L2 BD | ${dut_node} | ${dut_if} | ${bd_id} | ${shg} + +| Add destination port to L2FIB +| | [Documentation] | Create a static L2FIB entry for required destination port +| | ... | on defined interface and bridge domain ID +| | ... | of the given VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - ${dest_node} - Destination node. Type: dictionary +| | ... | - ${dest_node_if} - Destination node interface name. Type: string +| | ... | - ${vpp_node} - DUT node to add L2FIB entry on. Type: dictionary +| | ... | - ${vpp_node_if} - DUT node interface name. Type: string +| | ... | - ${bd_id} - Bridge domain ID. Type: integer +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Add destination port to L2FIB \| ${nodes['TG']} \ +| | ... | \| eth1 \| ${nodes['DUT2']} \| GigabitEthernet0/8/0 \| 3 \| +| | [Arguments] | ${dest_node} | ${dest_node_if} | ${vpp_node} +| | ... | ${vpp_node_if} | ${bd_id} +| | ${mac}= | Get Interface Mac | ${dest_node} | ${dest_node_if} +| | Vpp Add L2fib Entry | ${vpp_node} | ${mac} | ${vpp_node_if} | ${bd_id} + +| Configure VM for vhost L2BD forwarding +| | [Documentation] | Setup QEMU and start VM with two vhost interfaces. +| | ... +| | ... | *Arguments:* +| | ... | - ${dut_node} - DUT node to start VM on. Type: dictionary +| | ... | - ${sock1} - Socket path for first Vhost-User interface. Type: string +| | ... | - ${sock2} - Socket path for second Vhost-User interface. Type: string +| | ... | - ${qemu_name} - Qemu instance name by which the object will be +| | ... | accessed (Optional). Type: string +| | ... +| | ... | _NOTE:_ This KW sets following test case variable: +| | ... | - ${${qemu_name}} - VM node info. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure VM for vhost L2BD forwarding \| ${nodes['DUT1']} \ +| | ... | \| /tmp/sock1 \| /tmp/sock2 \| +| | ... | \| Configure VM for vhost L2BD forwarding \| ${nodes['DUT2']} \ +| | ... | \| /tmp/sock1 \| /tmp/sock2 \| qemu_instance_2 \| +| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${qemu_name}=vm_node +| | Run Keyword Unless | "${qemu_name}" == "vm_node" | Import Library +| | ... | resources.libraries.python.QemuUtils | WITH NAME | ${qemu_name} +| | Set Test Variable | ${${qemu_name}} | ${None} +| | ${qemu_set_node}= | Run Keyword If | "${qemu_name}" == "vm_node" +| | | ... | Set Variable | Qemu Set Node +| | ... | ELSE | Replace Variables | ${qemu_name}.Qemu Set Node +| | Run keyword | ${qemu_set_node} | ${dut_node} +| | ${qemu_add_vhost}= | Run Keyword If | "${qemu_name}" == "vm_node" +| | | ... | Set Variable | Qemu Add Vhost User If +| | ... | ELSE | Replace Variables | ${qemu_name}.Qemu Add Vhost User If +| | Run keyword | ${qemu_add_vhost} | ${sock1} +| | Run keyword | ${qemu_add_vhost} | ${sock2} +| | ${qemu_start}= | Run Keyword If | "${qemu_name}" == "vm_node" +| | | ... | Set Variable | Qemu Start +| | ... | ELSE | Replace Variables | ${qemu_name}.Qemu Start +| | ${vm}= | Run keyword | ${qemu_start} +| | ${br}= | Set Variable | br0 +| | ${vhost1}= | Get Vhost User If Name By Sock | ${vm} | ${sock1} +| | ${vhost2}= | Get Vhost User If Name By Sock | ${vm} | ${sock2} +| | Linux Add Bridge | ${vm} | ${br} | ${vhost1} | ${vhost2} +| | Set Interface State | ${vm} | ${vhost1} | up | if_type=name +| | Set Interface State | ${vm} | ${vhost2} | up | if_type=name +| | Set Interface State | ${vm} | ${br} | up | if_type=name +| | Set Test Variable | ${${qemu_name}} | ${vm} + +| Configure vhost interfaces for L2BD forwarding +| | [Documentation] | Create two Vhost-User interfaces on defined VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - ${dut_node} - DUT node. Type: dictionary +| | ... | - ${sock1} - Socket path for first Vhost-User interface. Type: string +| | ... | - ${sock2} - Socket path for second Vhost-User interface. Type: string +| | ... | - ${vhost_if1} - Name of the first Vhost-User interface (Optional). +| | ... | Type: string +| | ... | - ${vhost_if2} - Name of the second Vhost-User interface (Optional). +| | ... | Type: string +| | ... +| | ... | _NOTE:_ This KW sets following test case variable: +| | ... | - ${${vhost_if1}} - First Vhost-User interface. +| | ... | - ${${vhost_if2}} - Second Vhost-User interface. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure vhost interfaces for L2BD forwarding \ +| | ... | \| ${nodes['DUT1']} \| /tmp/sock1 \| /tmp/sock2 \| +| | ... | \| Configure vhost interfaces for L2BD forwarding \ +| | ... | \| ${nodes['DUT2']} \| /tmp/sock1 \| /tmp/sock2 \| dut2_vhost_if1 \ +| | ... | \| dut2_vhost_if2 \| +| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vhost_if1}=vhost_if1 +| | ... | ${vhost_if2}=vhost_if2 +| | ${vhost_1}= | Vpp Create Vhost User Interface | ${dut_node} | ${sock1} +| | ${vhost_2}= | Vpp Create Vhost User Interface | ${dut_node} | ${sock2} +| | Set Interface State | ${dut_node} | ${vhost_1} | up +| | Set Interface State | ${dut_node} | ${vhost_2} | up +| | Set Test Variable | ${${vhost_if1}} | ${vhost_1} +| | Set Test Variable | ${${vhost_if2}} | ${vhost_2} diff --git a/resources/libraries/robot/l2/l2_traffic.robot b/resources/libraries/robot/l2/l2_traffic.robot new file mode 100644 index 0000000000..bca801778e --- /dev/null +++ b/resources/libraries/robot/l2/l2_traffic.robot @@ -0,0 +1,183 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.TrafficScriptExecutor +| Documentation | Keywords to send and receive different types of traffic \ +| ... | through L2 network. + +*** Keywords *** +| Send ICMP packet and verify received packet +| | [Documentation] | Send ICMPv4/ICMPv6 echo request from source interface to \ +| | ... | destination interface. Packet can be set with Dot1q or +| | ... | Dot1ad tag(s) when required. +| | ... +| | ... | *Arguments:* +| | ... +| | ... | - tg_node - TG node. Type: dictionary +| | ... | - src_int - Source interface. Type: string +| | ... | - dst_int - Destination interface. Type: string +| | ... | - src_ip - Source IP address (Optional). Type: string +| | ... | - dst_ip - Destination IP address (Optional). Type: string +| | ... | - encaps - Encapsulation: Dot1q or Dot1ad (Optional). Type: string +| | ... | - vlan1 - VLAN (outer) tag (Optional). Type: integer +| | ... | - vlan2 - VLAN inner tag (Optional). Type: integer +| | ... | - encaps_rx - Expected encapsulation on RX side: Dot1q or Dot1ad +| | ... | (Optional). Type: string +| | ... | - vlan1_rx - VLAN (outer) tag on RX side (Optional). Type: integer +| | ... | - vlan2_rx - VLAN inner tag on RX side (Optional). Type: integer +| | ... +| | ... | *Return:* +| | ... +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | _NOTE:_ Default IP is IPv4 +| | ... +| | ... | \| Send ICMP packet and verify received packet \| ${nodes['TG']} \ +| | ... | \| ${tg_to_dut_if1} \| ${tg_to_dut_if2} \| +| | ... | \| Send ICMP packet and verify received packet \| ${nodes['TG']} \ +| | ... | \| ${tg_to_dut1} \| ${tg_to_dut2} \| encaps=Dot1q \| vlan1=100 \| +| | ... | \| Send ICMP packet and verify received packet \| ${nodes['TG']} \ +| | ... | \| ${tg_to_dut1} \| ${tg_to_dut2} \| encaps=Dot1ad \| vlan1=110 \ +| | ... | \| vlan2=220 \| +| | ... | \| Send ICMP packet and verify received packet \| ${nodes['TG']} \ +| | ... | \| ${tg_to_dut1} \| ${tg_to_dut2} \| encaps=Dot1q \| vlan1=110 \ +| | ... | \| encaps_rx=Dot1q \| +| | ... | \| Send ICMP packet and verify received packet \| ${nodes['TG']} \ +| | ... | \| ${tg_to_dut1} \| ${tg_to_dut2} \| encaps=Dot1q \| vlan1=110 \ +| | ... | \| encaps_rx=Dot1q \| vlan1_rx=120 \| +| | ... +| | [Arguments] | ${tg_node} | ${src_int} | ${dst_int} +| | ... | ${src_ip}=192.168.100.1 | ${dst_ip}=192.168.100.2 | ${encaps}=${EMPTY} +| | ... | ${vlan1}=${EMPTY} | ${vlan2}=${EMPTY} | ${encaps_rx}=${EMPTY} +| | ... | ${vlan1_rx}=${EMPTY} | ${vlan2_rx}=${EMPTY} +| | ... +| | ${src_mac}= | Get Interface Mac | ${tg_node} | ${src_int} +| | ${dst_mac}= | Get Interface Mac | ${tg_node} | ${dst_int} +| | ${src_int_name}= | Get interface name | ${tg_node} | ${src_int} +| | ${dst_int_name}= | Get interface name | ${tg_node} | ${dst_int} +| | ${args}= | Traffic Script Gen Arg | ${dst_int_name} | ${src_int_name} +| | ... | ${src_mac} | ${dst_mac} | ${src_ip} | ${dst_ip} +| | ${args}= | Run Keyword If | '${encaps}' == '${EMPTY}' +| | | ... | Set Variable | ${args} +| | ... | ELSE | Catenate | ${args} | --encaps ${encaps} | --vlan1 ${vlan1} +| | ${args}= | Run Keyword If | '${vlan2}' == '${EMPTY}' +| | | ... | Set Variable | ${args} +| | ... | ELSE | Catenate | ${args} | --vlan2 ${vlan2} +| | ${args}= | Run Keyword If | '${encaps_rx}' == '${EMPTY}' +| | | ... | Set Variable | ${args} +| | ... | ELSE | Catenate | ${args} | --encaps_rx ${encaps_rx} +| | ${args}= | Run Keyword If | '${vlan1_rx}' == '${EMPTY}' +| | | ... | Set Variable | ${args} +| | ... | ELSE | Catenate | ${args} | --vlan1_rx ${vlan1_rx} +| | ${args}= | Run Keyword If | '${vlan2_rx}' == '${EMPTY}' +| | | ... | Set Variable | ${args} +| | ... | ELSE | Catenate | ${args} | --vlan2_rx ${vlan2_rx} +| | Run Traffic Script On Node | send_ip_icmp.py | ${tg_node} | ${args} + +| ICMP packet transmission should fail +| | [Documentation] | Send ICMPv4/ICMPv6 echo request from source interface to +| | ... | destination interface and expect failure with +| | ... | ICMP echo Rx timeout error message. +| | ... +| | ... | *Arguments:* +| | ... +| | ... | - tg_node - TG node. Type: dictionary +| | ... | - src_int - Source interface. Type: string +| | ... | - dst_int - Destination interface. Type: string +| | ... | - src_ip - Source IP address (Optional). Type: string +| | ... | - dst_ip - Destination IP address (Optional). Type: string +| | ... +| | ... | *Return:* +| | ... +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | _NOTE:_ Default IP is IPv4 +| | ... +| | ... | \| ICMP packet transmission should fail\| ${nodes['TG']} \ +| | ... | \| ${tg_to_dut_if1} \| ${tg_to_dut_if2} \| +| | ... +| | [Arguments] | ${tg_node} | ${src_int} | ${dst_int} | +| | ... | ${src_ip}=192.168.100.1 | ${dst_ip}=192.168.100.2 +| | ... +| | ${src_mac}= | Get Interface Mac | ${tg_node} | ${src_int} +| | ${dst_mac}= | Get Interface Mac | ${tg_node} | ${dst_int} +| | ${src_int_name}= | Get interface name | ${tg_node} | ${src_int} +| | ${dst_int_name}= | Get interface name | ${tg_node} | ${dst_int} +| | ${args}= | Traffic Script Gen Arg | ${dst_int_name} | ${src_int_name} +| | ... | ${src_mac} | ${dst_mac} | ${src_ip} | ${dst_ip} +| | Run Keyword And Expect Error | ICMP echo Rx timeout | +| | ... | Run Traffic Script On Node | send_ip_icmp.py | ${tg_node} | ${args} + +| Send ICMPv4 bidirectionally and verify received packets +| | [Documentation] | Send ICMPv4 echo request from both directions, +| | ... | from interface1 to interface2 and from interface2 to interface1. +| | ... +| | ... | *Arguments:* +| | ... +| | ... | - tg_node - TG node. Type: dictionary +| | ... | - src_int - Source interface. Type: string +| | ... | - dst_int - Destination interface. Type: string +| | ... | - src_ip - Source IP address (Optional). Type: string +| | ... | - dst_ip - Destination IP address (Optional). Type: string +| | ... +| | ... | *Return:* +| | ... +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send ICMPv4 bidirectionally and verify received packets \ +| | ... | \| ${nodes['TG']} \| ${tg_to_dut_if1} \| ${tg_to_dut_if2} \| +| | ... +| | [Arguments] | ${tg_node} | ${int1} | ${int2} | ${src_ip}=192.168.100.1 | +| | ... | ${dst_ip}=192.168.100.2 +| | ... +| | Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${int1} | ${int2} | ${src_ip} | ${dst_ip} +| | Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${int2} | ${int1} | ${dst_ip} | ${src_ip} + +| Send ICMPv6 bidirectionally and verify received packets +| | [Documentation] | Send ICMPv6 echo request from both directions, +| | ... | from interface1 to interface2 and from interface2 to interface1. +| | ... +| | ... | *Arguments:* +| | ... +| | ... | - tg_node - TG node. Type: dictionary +| | ... | - src_int - Source interface. Type: string +| | ... | - dst_int - Destination interface. Type: string +| | ... | - src_ip - Source IP address (Optional). Type: string +| | ... | - dst_ip - Destination IP address (Optional). Type: string +| | ... +| | ... | *Return:* +| | ... +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send ICMPv6 bidirectionally and verify received packets \ +| | ... | \| ${nodes['TG']} \| ${tg_to_dut_if1} \| ${tg_to_dut_if2} \| +| | ... +| | [Arguments] | ${tg_node} | ${int1} | ${int2} | ${src_ip}=3ffe:63::1 | +| | ... | ${dst_ip}=3ffe:63::2 +| | ... +| | Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${int1} | ${int2} | ${src_ip} | ${dst_ip} +| | Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${int2} | ${int1} | ${dst_ip} | ${src_ip} diff --git a/resources/libraries/robot/l2/l2_xconnect.robot b/resources/libraries/robot/l2/l2_xconnect.robot new file mode 100644 index 0000000000..00d33e867a --- /dev/null +++ b/resources/libraries/robot/l2/l2_xconnect.robot @@ -0,0 +1,24 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.L2Util +| Library | resources.libraries.python.InterfaceUtil + +*** Keywords *** +| Configure L2XC +| | [Documentation] | Setup Bidirectional Cross Connect on DUTs +| | [Arguments] | ${node} | ${if1} | ${if2} | +| | Set Interface State | ${node} | ${if1} | up +| | Set Interface State | ${node} | ${if2} | up +| | Vpp Setup Bidirectional Cross Connect | ${node} | ${if1} | ${if2} diff --git a/resources/libraries/robot/l2/tagging.robot b/resources/libraries/robot/l2/tagging.robot new file mode 100644 index 0000000000..7731ed193e --- /dev/null +++ b/resources/libraries/robot/l2/tagging.robot @@ -0,0 +1,219 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Documentation | Keywords for VLAN tests +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_xconnect.robot +| Library | resources.libraries.python.L2Util +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.NodePath + +*** Keywords *** + +| Initialize VLAN sub-interfaces in 3-node circular topology +| | [Arguments] | ${DUT1} | ${INT1} | ${DUT2} | ${INT2} | ${SUB_ID} +| | ... | ${OUTER_VLAN_ID} | ${INNER_VLAN_ID} | ${TYPE_SUBIF} +| | [Documentation] | *Create two subinterfaces on DUTs.* +| | ... +| | ... | *Arguments:* +| | ... | - DUT1 - Node to add sub-interface. +| | ... | - INT1 - Interface name on which create sub-interface. +| | ... | - DUT2 - Node to add sub-interface. +| | ... | - INT2 - Interface name on which create sub-interface. +| | ... | - SUB_ID - ID of the sub-interface to be created. +| | ... | - OUTER_VLAN_ID - Outer VLAN ID. +| | ... | - INNER_VLAN_ID - Inner VLAN ID. +| | ... | - TYPE_SUBIF - Type of sub-interface. +| | ... +| | ... | _Set testcase variables with name and index of created interfaces:_ +| | ... | - subif_name_1 +| | ... | - subif_index_1 +| | ... | - subif_name_2 +| | ... | - subif_index_2 +| | ... +| | ${INT1_name}= | Get interface name | ${DUT1} | ${INT1} +| | ${subif_name_1} | ${subif_index_1}= | Create subinterface | ${DUT1} +| | ... | ${INT1_name} | ${SUB_ID} +| | ... | ${OUTER_VLAN_ID} | ${INNER_VLAN_ID} +| | ... | ${TYPE_SUBIF} +| | ${INT2_name}= | Get interface name | ${DUT2} | ${INT2} +| | ${subif_name_2} | ${subif_index_2}= | Create subinterface | ${DUT2} +| | ... | ${INT2_name} | ${SUB_ID} +| | ... | ${OUTER_VLAN_ID} | ${INNER_VLAN_ID} +| | ... | ${TYPE_SUBIF} +| | Set Interface State | ${DUT1} | ${subif_index_1} | up +| | Set Interface State | ${DUT2} | ${subif_index_2} | up +| | Set Test Variable | ${subif_name_1} +| | Set Test Variable | ${subif_index_1} +| | Set Test Variable | ${subif_name_2} +| | Set Test Variable | ${subif_index_2} + +| Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | [Arguments] | ${DUT1} | ${INT1} | ${DUT2} | ${INT2} | ${SUB_ID} +| | [Documentation] | *Create two dot1q subinterfaces on DUTs.* +| | ... +| | ... | *Arguments:* +| | ... | - DUT1 - Node to add sub-interface. +| | ... | - INT1 - Interface name on which create VLAN sub-interface. +| | ... | - DUT2 - Node to add sub-interface. +| | ... | - INT2 - Interface name on which create VLAN sub-interface. +| | ... | - SUB_ID - ID of the sub-interface to be created. +| | ... +| | ... | _Set testcase variables with name and index of created interfaces:_ +| | ... | - subif_name_1 +| | ... | - subif_index_1 +| | ... | - subif_name_2 +| | ... | - subif_index_2 +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Initialize VLAN dot1q sub-interfaces in 3-node circular topology \ +| | ... | \| ${nodes['DUT1']} \| ${dut1_if2} \| ${nodes['DUT2']} \ +| | ... | \| ${dut1_if2} \| 10 \| +| | ... +| | ${INT1_NAME}= | Get interface name | ${DUT1} | ${INT1} +| | ${INT2_NAME}= | Get interface name | ${DUT2} | ${INT2} +| | ${subif_name_1} | ${subif_index_1}= | Create Vlan Subinterface +| | | ... | ${DUT1} | ${INT1_NAME} | ${SUB_ID} +| | ${subif_name_2} | ${subif_index_2}= | Create Vlan Subinterface +| | | ... | ${DUT2} | ${INT2_NAME} | ${SUB_ID} +| | Set Interface State | ${DUT1} | ${subif_index_1} | up +| | Set Interface State | ${DUT2} | ${subif_index_2} | up +| | Set Test Variable | ${subif_name_1} +| | Set Test Variable | ${subif_index_1} +| | Set Test Variable | ${subif_name_2} +| | Set Test Variable | ${subif_index_2} + +| Configure L2 tag rewrite method on interfaces +| | [Arguments] | ${DUT1} | ${SUB_INT1} | ${DUT2} | ${SUB_INT2} +| | ... | ${TAG_REWRITE_METHOD} +| | [Documentation] | *Setup tag rewrite on sub-interfaces on DUTs.* +| | ... +| | ... | *Arguments:* +| | ... | - DUT1 - Node to rewrite tags. +| | ... | - SUB_INT1 - Interface on which rewrite tags. +| | ... | - DUT2 - Node to rewrite tags. +| | ... | - SUB_INT2 - Interface on which rewrite tags. +| | ... | - TAG_REWRITE_METHOD - Method of tag rewrite. +| | ... +| | L2 Vlan tag rewrite | ${DUT1} | ${SUB_INT1} | ${TAG_REWRITE_METHOD} +| | L2 Vlan tag rewrite | ${DUT2} | ${SUB_INT2} | ${TAG_REWRITE_METHOD} + +| Connect interfaces and VLAN sub-interfaces using L2XC +| | [Arguments] | ${DUT1} | ${INT1} | ${SUB_INT1} +| | ... | ${DUT2} | ${INT2} | ${SUB_INT2} +| | [Documentation] | *Add interface and subinterface to bidirectional +| | ... | L2-xconnect on DUTs.* +| | ... +| | ... | *Arguments:* +| | ... | - DUT1 - Node to add bidirectional cross-connect. +| | ... | - INT1 - Interface to add to the cross-connect. +| | ... | - SUB_INT1 - Sub-interface to add to the cross-connect. +| | ... | - DUT2 - Node to add bidirectional cross-connect. +| | ... | - INT2 - Interface to add to the cross-connect. +| | ... | - SUB_INT2 - Sub-interface to add to the cross-connect. +| | ... +| | Configure L2XC | ${DUT1} | ${INT1} | ${SUB_INT1} +| | Configure L2XC | ${DUT2} | ${INT2} | ${SUB_INT2} + +| Create vlan sub-interface +| | [Documentation] | Create VLAN sub-interface on DUT and set admin status up. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - Node to add VLAN sub-intreface. Type: dictionary +| | ... | - interface - Interface to create VLAN sub-interface. Type: string +| | ... | - vlan_id - VLAN ID. Type: integer +| | ... +| | ... | *Return:* +| | ... | - vlan_name - VLAN sub-interface name. Type: string +| | ... | - vlan_index - VLAN sub-interface SW index. Type: integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Create vlan sub-interface \| ${nodes['DUT1']} \| port3 \| 100 \| +| | ... +| | [Arguments] | ${dut_node} | ${interface} | ${vlan_id} +| | [Return] | ${vlan_name} | ${vlan_index} +| | ${interface_name}= | Get interface name | ${dut_node} | ${interface} +| | ${vlan_name} | ${vlan_index}= | Create Vlan Subinterface +| | ... | ${dut_node} | ${interface_name} | ${vlan_id} +| | Set Interface State | ${dut_node} | ${vlan_index} | up + +| Create tagged sub-interface +| | [Documentation] | Create tagged sub-interface on DUT. Type of tagged \ +| | ... | sub-intreface depends on type_subif value: +| | ... | - one_tag -> VLAN +| | ... | - two_tags -> QinQ VLAN +| | ... | - two_tags dot1ad - DOT1AD +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - Node to add VLAN sub-intreface. Type: dictionary +| | ... | - interface - Interface to create tagged sub-interface. Type: string +| | ... | - subif_id - Sub-interface ID. Type: integer +| | ... | - outer_vlan_id - VLAN (outer) ID (Optional). Type: integer +| | ... | - inner_vlan_id - VLAN inner ID (Optional). Type: integer +| | ... | - type_subif - Sub-interface type (Optional). Type: string +| | ... +| | ... | *Return:* +| | ... | - subif_name - Sub-interface name. Type: string +| | ... | - subif_index - Sub-interface SW index. Type: integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Create tagged sub-interface \| ${nodes['DUT1']} \| port1 \| 10 \ +| | ... | \| outer_vlan_id=100 \| inner_vlan_id=200 \ +| | ... | \| type_subif=two_tags dot1ad \| +| | ... +| | [Arguments] | ${dut_node} | ${interface} | ${subif_id} +| | ... | ${outer_vlan_id}=${None} | ${inner_vlan_id}=${None} +| | ... | ${type_subif}=${None} +| | [Return] | ${subif_name} | ${subif_index} +| | ${interface_name}= | Get interface name | ${dut_node} | ${interface} +| | ${subif_name} | ${subif_index}= | Create Subinterface +| | ... | ${dut_node} | ${interface_name} | ${subif_id} +| | ... | outer_vlan_id=${outer_vlan_id} | inner_vlan_id=${inner_vlan_id} +| | ... | type_subif=${type_subif} + +| Configure L2 tag rewrite method on interface +| | [Documentation] | Set L2 tag rewrite on (sub-)interface on DUT +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - Node to set L2 tag rewrite method. Type: dictionary +| | ... | - interface - (Sub-)interface name or SW index to set L2 tag rewrite +| | ... | method. Type: string or integer +| | ... | - tag_rewrite_method - Tag rewrite method. Type: string +| | ... | - push_dot1q - True to push tags as Dot1q, False to push tags as +| | ... | Dot1ad (Optional). Type: boolean +| | ... | - tag1_id - VLAN tag1 ID (Optional). Type: integer +| | ... | - tag2_id - VLAN tag2 ID (Optional). Type: integer +| | ... +| | ... | *Return:* +| | ... +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure L2 tag rewrite method on interface \| ${nodes['DUT1']} \ +| | ... | \| 9 \| pop-1 \| +| | ... | \| Configure L2 tag rewrite method on interface \| ${nodes['DUT2']} \ +| | ... | \| 10 \| translate-1-2 \| push_dot1q=${False} \| tag1_id=10 \ +| | ... | \| tag1_id=20 \| +| | ... +| | [Arguments] | ${dut_node} | ${interface} | ${tag_rewrite_method} +| | ... | ${push_dot1q}=${True} | ${tag1_id}=${None} | ${tag2_id}=${None} +| | ${result}= | Evaluate | isinstance($interface, int) +| | ${interface_name}= | Run Keyword If | ${result} | Set Variable | ${interface} +| | ... | ELSE | Get interface name | ${dut_node} | ${interface} +| | L2 Vlan Tag Rewrite | ${dut_node} | ${interface_name} | ${tag_rewrite_method} +| | ... | push_dot1q=${push_dot1q} | tag1_id=${tag1_id} | tag2_id=${tag2_id} diff --git a/resources/libraries/robot/l2_traffic.robot b/resources/libraries/robot/l2_traffic.robot deleted file mode 100644 index bca801778e..0000000000 --- a/resources/libraries/robot/l2_traffic.robot +++ /dev/null @@ -1,183 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.TrafficScriptExecutor -| Documentation | Keywords to send and receive different types of traffic \ -| ... | through L2 network. - -*** Keywords *** -| Send ICMP packet and verify received packet -| | [Documentation] | Send ICMPv4/ICMPv6 echo request from source interface to \ -| | ... | destination interface. Packet can be set with Dot1q or -| | ... | Dot1ad tag(s) when required. -| | ... -| | ... | *Arguments:* -| | ... -| | ... | - tg_node - TG node. Type: dictionary -| | ... | - src_int - Source interface. Type: string -| | ... | - dst_int - Destination interface. Type: string -| | ... | - src_ip - Source IP address (Optional). Type: string -| | ... | - dst_ip - Destination IP address (Optional). Type: string -| | ... | - encaps - Encapsulation: Dot1q or Dot1ad (Optional). Type: string -| | ... | - vlan1 - VLAN (outer) tag (Optional). Type: integer -| | ... | - vlan2 - VLAN inner tag (Optional). Type: integer -| | ... | - encaps_rx - Expected encapsulation on RX side: Dot1q or Dot1ad -| | ... | (Optional). Type: string -| | ... | - vlan1_rx - VLAN (outer) tag on RX side (Optional). Type: integer -| | ... | - vlan2_rx - VLAN inner tag on RX side (Optional). Type: integer -| | ... -| | ... | *Return:* -| | ... -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | _NOTE:_ Default IP is IPv4 -| | ... -| | ... | \| Send ICMP packet and verify received packet \| ${nodes['TG']} \ -| | ... | \| ${tg_to_dut_if1} \| ${tg_to_dut_if2} \| -| | ... | \| Send ICMP packet and verify received packet \| ${nodes['TG']} \ -| | ... | \| ${tg_to_dut1} \| ${tg_to_dut2} \| encaps=Dot1q \| vlan1=100 \| -| | ... | \| Send ICMP packet and verify received packet \| ${nodes['TG']} \ -| | ... | \| ${tg_to_dut1} \| ${tg_to_dut2} \| encaps=Dot1ad \| vlan1=110 \ -| | ... | \| vlan2=220 \| -| | ... | \| Send ICMP packet and verify received packet \| ${nodes['TG']} \ -| | ... | \| ${tg_to_dut1} \| ${tg_to_dut2} \| encaps=Dot1q \| vlan1=110 \ -| | ... | \| encaps_rx=Dot1q \| -| | ... | \| Send ICMP packet and verify received packet \| ${nodes['TG']} \ -| | ... | \| ${tg_to_dut1} \| ${tg_to_dut2} \| encaps=Dot1q \| vlan1=110 \ -| | ... | \| encaps_rx=Dot1q \| vlan1_rx=120 \| -| | ... -| | [Arguments] | ${tg_node} | ${src_int} | ${dst_int} -| | ... | ${src_ip}=192.168.100.1 | ${dst_ip}=192.168.100.2 | ${encaps}=${EMPTY} -| | ... | ${vlan1}=${EMPTY} | ${vlan2}=${EMPTY} | ${encaps_rx}=${EMPTY} -| | ... | ${vlan1_rx}=${EMPTY} | ${vlan2_rx}=${EMPTY} -| | ... -| | ${src_mac}= | Get Interface Mac | ${tg_node} | ${src_int} -| | ${dst_mac}= | Get Interface Mac | ${tg_node} | ${dst_int} -| | ${src_int_name}= | Get interface name | ${tg_node} | ${src_int} -| | ${dst_int_name}= | Get interface name | ${tg_node} | ${dst_int} -| | ${args}= | Traffic Script Gen Arg | ${dst_int_name} | ${src_int_name} -| | ... | ${src_mac} | ${dst_mac} | ${src_ip} | ${dst_ip} -| | ${args}= | Run Keyword If | '${encaps}' == '${EMPTY}' -| | | ... | Set Variable | ${args} -| | ... | ELSE | Catenate | ${args} | --encaps ${encaps} | --vlan1 ${vlan1} -| | ${args}= | Run Keyword If | '${vlan2}' == '${EMPTY}' -| | | ... | Set Variable | ${args} -| | ... | ELSE | Catenate | ${args} | --vlan2 ${vlan2} -| | ${args}= | Run Keyword If | '${encaps_rx}' == '${EMPTY}' -| | | ... | Set Variable | ${args} -| | ... | ELSE | Catenate | ${args} | --encaps_rx ${encaps_rx} -| | ${args}= | Run Keyword If | '${vlan1_rx}' == '${EMPTY}' -| | | ... | Set Variable | ${args} -| | ... | ELSE | Catenate | ${args} | --vlan1_rx ${vlan1_rx} -| | ${args}= | Run Keyword If | '${vlan2_rx}' == '${EMPTY}' -| | | ... | Set Variable | ${args} -| | ... | ELSE | Catenate | ${args} | --vlan2_rx ${vlan2_rx} -| | Run Traffic Script On Node | send_ip_icmp.py | ${tg_node} | ${args} - -| ICMP packet transmission should fail -| | [Documentation] | Send ICMPv4/ICMPv6 echo request from source interface to -| | ... | destination interface and expect failure with -| | ... | ICMP echo Rx timeout error message. -| | ... -| | ... | *Arguments:* -| | ... -| | ... | - tg_node - TG node. Type: dictionary -| | ... | - src_int - Source interface. Type: string -| | ... | - dst_int - Destination interface. Type: string -| | ... | - src_ip - Source IP address (Optional). Type: string -| | ... | - dst_ip - Destination IP address (Optional). Type: string -| | ... -| | ... | *Return:* -| | ... -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | _NOTE:_ Default IP is IPv4 -| | ... -| | ... | \| ICMP packet transmission should fail\| ${nodes['TG']} \ -| | ... | \| ${tg_to_dut_if1} \| ${tg_to_dut_if2} \| -| | ... -| | [Arguments] | ${tg_node} | ${src_int} | ${dst_int} | -| | ... | ${src_ip}=192.168.100.1 | ${dst_ip}=192.168.100.2 -| | ... -| | ${src_mac}= | Get Interface Mac | ${tg_node} | ${src_int} -| | ${dst_mac}= | Get Interface Mac | ${tg_node} | ${dst_int} -| | ${src_int_name}= | Get interface name | ${tg_node} | ${src_int} -| | ${dst_int_name}= | Get interface name | ${tg_node} | ${dst_int} -| | ${args}= | Traffic Script Gen Arg | ${dst_int_name} | ${src_int_name} -| | ... | ${src_mac} | ${dst_mac} | ${src_ip} | ${dst_ip} -| | Run Keyword And Expect Error | ICMP echo Rx timeout | -| | ... | Run Traffic Script On Node | send_ip_icmp.py | ${tg_node} | ${args} - -| Send ICMPv4 bidirectionally and verify received packets -| | [Documentation] | Send ICMPv4 echo request from both directions, -| | ... | from interface1 to interface2 and from interface2 to interface1. -| | ... -| | ... | *Arguments:* -| | ... -| | ... | - tg_node - TG node. Type: dictionary -| | ... | - src_int - Source interface. Type: string -| | ... | - dst_int - Destination interface. Type: string -| | ... | - src_ip - Source IP address (Optional). Type: string -| | ... | - dst_ip - Destination IP address (Optional). Type: string -| | ... -| | ... | *Return:* -| | ... -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send ICMPv4 bidirectionally and verify received packets \ -| | ... | \| ${nodes['TG']} \| ${tg_to_dut_if1} \| ${tg_to_dut_if2} \| -| | ... -| | [Arguments] | ${tg_node} | ${int1} | ${int2} | ${src_ip}=192.168.100.1 | -| | ... | ${dst_ip}=192.168.100.2 -| | ... -| | Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${int1} | ${int2} | ${src_ip} | ${dst_ip} -| | Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${int2} | ${int1} | ${dst_ip} | ${src_ip} - -| Send ICMPv6 bidirectionally and verify received packets -| | [Documentation] | Send ICMPv6 echo request from both directions, -| | ... | from interface1 to interface2 and from interface2 to interface1. -| | ... -| | ... | *Arguments:* -| | ... -| | ... | - tg_node - TG node. Type: dictionary -| | ... | - src_int - Source interface. Type: string -| | ... | - dst_int - Destination interface. Type: string -| | ... | - src_ip - Source IP address (Optional). Type: string -| | ... | - dst_ip - Destination IP address (Optional). Type: string -| | ... -| | ... | *Return:* -| | ... -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send ICMPv6 bidirectionally and verify received packets \ -| | ... | \| ${nodes['TG']} \| ${tg_to_dut_if1} \| ${tg_to_dut_if2} \| -| | ... -| | [Arguments] | ${tg_node} | ${int1} | ${int2} | ${src_ip}=3ffe:63::1 | -| | ... | ${dst_ip}=3ffe:63::2 -| | ... -| | Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${int1} | ${int2} | ${src_ip} | ${dst_ip} -| | Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${int2} | ${int1} | ${dst_ip} | ${src_ip} diff --git a/resources/libraries/robot/l2_xconnect.robot b/resources/libraries/robot/l2_xconnect.robot deleted file mode 100644 index 00d33e867a..0000000000 --- a/resources/libraries/robot/l2_xconnect.robot +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.L2Util -| Library | resources.libraries.python.InterfaceUtil - -*** Keywords *** -| Configure L2XC -| | [Documentation] | Setup Bidirectional Cross Connect on DUTs -| | [Arguments] | ${node} | ${if1} | ${if2} | -| | Set Interface State | ${node} | ${if1} | up -| | Set Interface State | ${node} | ${if2} | up -| | Vpp Setup Bidirectional Cross Connect | ${node} | ${if1} | ${if2} diff --git a/resources/libraries/robot/lisp/l2lisp.robot b/resources/libraries/robot/lisp/l2lisp.robot deleted file mode 100644 index 3e908a2378..0000000000 --- a/resources/libraries/robot/lisp/l2lisp.robot +++ /dev/null @@ -1,77 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Documentation | LISP-gpe encapsulation suite keywords -| Library | resources.libraries.python.topology.Topology -| Resource | resources/libraries/robot/lisp/lisp_api.robot -| Library | resources.libraries.python.LispSetup.LispLocatorSet -| Library | resources.libraries.python.LispSetup.LispLocator -| Library | resources.libraries.python.LispSetup.LispLocalEid -| Library | resources.libraries.python.LispSetup.LispAdjacency -| Library | resources.libraries.python.LispSetup.LispRemoteMapping -| Library | resources.libraries.python.LispSetup.LispMapResolver -| Library | resources.libraries.python.LispSetup.LispEidTableMap - -*** Keywords *** -| Configure L2 LISP on DUT -| | [Documentation] | Set up LISP L2 topology. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... | - adjacency - DUT static adjacency settings. Type: dict -| | ... | - settings - DUT other LISP related settings. Type: dict -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| Configure LISP GPE topology in 3-node circular topology \| ${dut_node} \| ${adjacency} \ -| | ... | \| ${settings} \| -| | ... -| | [Arguments] -| | ... | ${dut_node} | ${adjacency} | ${settings} -| | ... -| | ${int_idx}= | Get Interface Sw Index | ${dut_node} | ${${adjacency['int']}} -| | Enable Lisp | ${dut_node} -| | Vpp Add Lisp Locator Set | ${dut_node} -| | ... | ${settings['locator_name']} -| | Vpp Add Lisp Locator | ${dut_node} -| | ... | ${settings['locator_name']} -| | ... | ${int_idx} -| | ... | ${settings['priority']} -| | ... | ${settings['weight']} -| | Vpp Lisp Eid Table Mapping | ${dut_node} -| | ... | ${settings['vni']} -| | ... | bd_id=${settings['bd']} -| | Vpp Add Lisp Local Eid | ${dut_node} -| | ... | ${settings['locator_name']} -| | ... | ${settings['vni']} -| | ... | ${adjacency['seid']} -| | Vpp Add Map Resolver | ${dut_node} -| | ... | ${adjacency['map_res']} -| | Vpp Add Lisp Remote Mapping | ${dut_node} -| | ... | ${settings['vni']} -| | ... | ${adjacency['eid']} -| | ... | 0 -| | ... | ${adjacency['seid']} -| | ... | 0 -| | ... | ${adjacency['rloc']} -| | ... | is_mac=${TRUE} -| | Vpp Add Lisp Adjacency | ${dut_node} -| | ... | ${settings['vni']} -| | ... | ${adjacency['eid']} -| | ... | 0 -| | ... | ${adjacency['seid']} -| | ... | 0 -| | ... | is_mac=${TRUE} diff --git a/resources/libraries/robot/lisp/lisp_api.robot b/resources/libraries/robot/lisp/lisp_api.robot deleted file mode 100644 index 1f431245be..0000000000 --- a/resources/libraries/robot/lisp/lisp_api.robot +++ /dev/null @@ -1,399 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/interfaces.robot -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.LispSetup.LispStatus -| Library | resources.libraries.python.LispSetup.LispSetup -| Library | resources.libraries.python.LispSetup.LispGpeStatus -| Library | resources.libraries.python.LispUtil - -*** Keywords *** - -| Generate LISP locator_set data -| | [Documentation] | Generate lisp locator_set data for test -| | ... | the lisp locator_set and locator API. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... | - locator_set_number - Number how many locator_set data -| | ... | will be generated. Type: integer -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | _NOTE:_ This KW sets following test case variables: -| | ... | - locator_set_values - New generated locator_set data. -| | ... | - locator_set_values_vat - New generated locator_set data expected\ -| | ... | from VAT. -| | ... -| | ... | *Example:* -| | ... | \| Given Generate LISP locator_set data \| ${nodes['DUT1']} \ -| | ... | \| ${locator_set_number} \| -| | ... -| | [Arguments] | ${dut_node} | ${locator_set_number} -| | ${locator_set_values} | ${locator_set_values_vat}= -| | ... | Generate Unique Lisp Locator Set Data -| | ... | ${dut_node} | ${locator_set_number} -| | Set Test Variable | ${locator_set_values} -| | Set Test Variable | ${locator_set_values_vat} - -| Configure LISP locator_set data -| | [Documentation] | Set the lisp locator_set and locator on the VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | _NOTE:_ This KW requires following test case variables: -| | ... | - locator_set_values - Generated locator_set data from -| | ... | KW locator_set data is prepared, which will be set on the VPP node. -| | ... -| | ... | *Example:* -| | ... | \| When Configure LISP locator_set data \| ${nodes['DUT1']} \| -| | ... -| | [Arguments] | ${dut_node} -| | Vpp Set Lisp Locator Set | ${dut_node} | ${locator_set_values} - -| LISP locator_set shpuld be configured correctly -| | [Documentation] | Test if the locator_set is set correctly on the VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | _NOTE:_ This KW requires following test case variables: -| | ... | - locator_set_values_vat - Generated locator_set data from -| | ... | KW locator_set data is prepared, which are expected from VPP via VAT. -| | ... -| | ... | *Example:* -| | ... | \| Then LISP locator_set shpuld be configured correctly \ -| | ... | \| ${nodes['DUT1']} \| -| | ... -| | [Arguments] | ${dut_node} -| | ${show_locator_set}= | Vpp Show Lisp Locator Set | ${dut_node} | local -| | Lisp Locator S Should Be Equal -| | ... | ${locator_set_values_vat} | ${show_locator_set} - -| Delete all LISP locator_set from VPP -| | [Documentation] | Delete all lisp locator_set on the VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | _NOTE:_ This KW requires following test case variables: -| | ... | - locator_set_values - Generated locator_set data from -| | ... | KW locator_set data is prepared, which was set on the VPP node. -| | ... -| | ... | *Example:* -| | ... | \| When Delete all LISP locator_set from VPP \ -| | ... | \| ${nodes['DUT1']} \| -| | ... -| | [Arguments] | ${dut_node} -| | Vpp Unset Lisp Locator Set | ${dut_node} | ${locator_set_values} - -| LISP locator_set should be unset -| | [Documentation] | Test if all locator_set are unset from VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| Then LISP locator_set should be unset \| ${nodes['DUT1']} \| -| | ... -| | [Arguments] | ${dut_node} -| | ${show_locator_set}= | Vpp Show Lisp Locator Set | ${dut_node} | ${EMPTY} -| | Lisp Is Empty | ${show_locator_set} - -| Lisp locator_set data use for test reset locator_set are prepared -| | [Documentation] | Generate lisp special type of locator_set data. -| | ... | This data will be use for test reset locator_set. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... | - locator_set_number - Number how many locator_set data -| | ... | it will generate. Type: integer -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | _NOTE:_ This KW sets following test case variables: -| | ... | - locator_set_values - New generate locator_set data. -| | ... | - locator_set_values_vat - New generated locator_set data expected\ -| | ... | from VAT. -| | ... -| | ... | *Example:* -| | ... | \| Given Lisp locator_set data use for test reset locator_set \ -| | ... | are prepared \| ${nodes['DUT1']} \| ${locator_set_number} \| -| | ... -| | [Arguments] | ${dut_node} | ${locator_set_number} -| | ${locator_set_values} | ${locator_set_values_vat}= -| | ... | Generate Duplicate Lisp Locator Set Data -| | ... | ${dut_node} | ${locator_set_number} -| | Set Test Variable | ${locator_set_values} -| | Set Test Variable | ${locator_set_values_vat} - -| Configure LISP eid address -| | [Documentation] | Set the lisp eid address on the VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... | - set_eid - Test eid data. Type: list -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| When Configure LISP eid address \| ${nodes['DUT1']} \ -| | ... | \| ${eid_table} \| -| | ... -| | [Arguments] | ${dut_node} | ${set_eid} -| | Vpp Set Lisp Eid Table | ${dut_node} | ${set_eid} - -| LISP eid address should be set correctly to eid table -| | [Documentation] | Test if the locator_set is set correctly on the VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... | - set_eid - Example eid data, which was set to the VPP node. -| | ... | Type: list -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | _NOTE:_ This KW requires following test case variables: -| | ... | - set_eid - Generated eid data, which will be set to the VPP node. -| | ... -| | ... | *Example:* -| | ... | \| Then LISP eid address should be set correctly to eid table \ -| | ... | \| ${nodes['DUT1']} \| ${eid_table} \| -| | ... -| | [Arguments] | ${dut_node} | ${set_eid} -| | ${show_eid}= | Vpp Show Lisp Eid Table | ${dut_node} -| | Lisp Should Be Equal | ${set_eid} | ${show_eid} - -| Delete all LISP eid address from VPP -| | [Documentation] | Delete all lisp eid address from the VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... | - set_eid - Eid data which will be removed from the VPP node. -| | ... | Type: list -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| When Delete all LISP eid address from VPP \ -| | ... | \| ${nodes['DUT1']} \| ${eid_table} \| -| | ... -| | [Arguments] | ${dut_node} | ${set_eid} -| | Vpp Unset Lisp Eid Table | ${dut_node} | ${set_eid} - -| LISP eid table should be empty -| | [Documentation] | Test if the eid table is empty. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| Then LISP eid table should be empty \| ${nodes['DUT1']} \| -| | ... -| | [Arguments] | ${dut_node} -| | ${show_eid}= | Vpp Show Lisp Eid Table | ${dut_node} -| | Lisp Is Empty | ${show_eid} - -| Configure LISP map resolver address -| | [Documentation] | Set the lisp map resolver address in the VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... | - set_map_resolver - Map resolver data, which will be set on -| | ... | the VPP node. Type: list -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| When Configure LISP map resolver address \| ${nodes['DUT1']} \ -| | ... | \| ${map_resolver} \| -| | ... -| | [Arguments] | ${dut_node} | ${set_map_resolver} -| | Vpp Set Lisp Map Resolver | ${dut_node} | ${set_map_resolver} - -| LISP map resolver address should be configured correctly -| | [Documentation] | Test if the map resolver address is set correctly -| | ... | on the VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... | - set_map_resolver - Map resolver data, which was set on -| | ... | the VPP node. Type: list -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| Then LISP map resolver address should be configured correctly \ -| | ... | \| ${nodes['DUT1']} \| ${map_resolver} \| -| | ... -| | [Arguments] | ${dut_node} | ${set_map_resolver} -| | ${show_map_resolver}= | Vpp Show Lisp Map Resolver | ${dut_node} -| | Lisp Should Be Equal | ${set_map_resolver} | ${show_map_resolver} - -| Delete all LISP map resolver address from VPP -| | [Documentation] | Delete all lisp map resolver address on the VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... | - map_resolver - Map resolver data, which will be remove from -| | ... | the VPP. Type: list -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| When Delete all LISP map resolver address from VPP \ -| | ... | \| ${nodes['DUT1']} \| ${map_resolver} \| -| | ... -| | [Arguments] | ${dut_node} | ${set_map_resolver} -| | Vpp Unset Lisp Map Resolver | ${dut_node} | ${set_map_resolver} - -| LISP map resolver address should be empty -| | [Documentation] | Test if the map resolver are empty. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| Then LISP map resolver address should be empty \ -| | ... | \| ${nodes['DUT1']} \| -| | ... -| | [Arguments] | ${dut_node} -| | ${show_map_resolver}= | Vpp Show Lisp Map Resolver | ${dut_node} -| | Lisp Is Empty | ${show_map_resolver} - -| Enable LISP -| | [Documentation] | Enable LISP on VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| Enable LISP \| ${nodes['DUT1']} \| -| | ... -| | [Arguments] | ${dut_node} -| | Vpp Lisp Enable Disable | ${dut_node} | enable - -| LISP should be enabled -| | [Documentation] | Check if the lisp is enabled. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... | - lisp_status_data - Lisp status data, which was set on -| | ... | the VPP node. Type: list -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| LISP should be enabled \| ${nodes['DUT1']} \ -| | ... | \| ${lisp_status_data} \| -| | ... -| | [Arguments] | ${dut_node} | ${lisp_status_data} -| | ${show_lisp_stat}= | Vpp Show Lisp State | ${dut_node} -| | Lisp Should Be Equal | ${show_lisp_stat} | ${lisp_status_data[1]} - -| Disable LISP -| | [Documentation] | Disable LISP on VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| Disable LISP \| ${nodes['DUT1']} \| -| | ... -| | [Arguments] | ${dut_node} -| | Vpp Lisp Enable Disable | ${dut_node} | disable - -| LISP Should be disabled -| | [Documentation] | LISP Should be disabled. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... | - lisp_status_data - Lisp status data, which was set on -| | ... | the VPP node. Type: list -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| LISP Should be disabled \| ${nodes['DUT1']} \ -| | ... | \| ${lisp_status_data} \| -| | ... -| | [Arguments] | ${dut_node} | ${lisp_status_data} -| | ${show_lisp_stat}= | Vpp Show Lisp State | ${dut_node} -| | Lisp Should Be Equal | ${show_lisp_stat} | ${lisp_status_data[0]} - -| Enable Lisp Gpe -| | [Documentation] | Enable Lisp Gpe on VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| Enable Lisp Gpe \| ${nodes['DUT1']} \| -| | ... -| | [Arguments] | ${dut_node} -| | Vpp Lisp Gpe Enable Disable | ${dut_node} | enable - -| Disable Lisp Gpe -| | [Documentation] | Disable Lisp Gpe on VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node. Type: dictionary -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| Disable Lisp Gpe \| ${nodes['DUT1']} \| -| | ... -| | [Arguments] | ${dut_node} -| | Vpp Lisp Gpe Enable Disable | ${dut_node} | disable diff --git a/resources/libraries/robot/lisp/lisp_static_adjacency.robot b/resources/libraries/robot/lisp/lisp_static_adjacency.robot deleted file mode 100644 index 737c535ce8..0000000000 --- a/resources/libraries/robot/lisp/lisp_static_adjacency.robot +++ /dev/null @@ -1,168 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Documentation | Lisp static adjacency suite keywords -| Resource | resources/libraries/robot/lisp/lisp_api.robot -| Library | resources.libraries.python.LispSetup.LispLocatorSet -| Library | resources.libraries.python.LispSetup.LispLocator -| Library | resources.libraries.python.LispSetup.LispLocalEid -| Library | resources.libraries.python.LispSetup.LispAdjacency -| Library | resources.libraries.python.LispSetup.LispRemoteMapping -| Library | resources.libraries.python.IPv4Util.IPv4Util - -*** Keywords *** -| Configure LISP topology in 3-node circular topology -| | [Documentation] | Set up Lisp static adjacency topology. -| | ... -| | ... | *Arguments:* -| | ... | - dut1_node - DUT1 node. Type: dictionary -| | ... | - dut1_int_name - DUT1 node interface name. Type: string -| | ... | - dut1_int_index - DUT1 node interface index. Type: integer -| | ... | - dut2_node - DUT2 node. Type: dictionary -| | ... | - dut2_int_name - DUT2 node interface name. Type: string -| | ... | - dut2_int_index - DUT2 node interface index. Type: integer -| | ... | - locator_set - Locator set values. Type: dictionary -| | ... | - dut1_eid - Dut1 node eid address. Type: dictionary -| | ... | - dut2_eid - Dut2 node eid address. Type: dictionary -| | ... | - dut1_static_adjacency - Dut1 static adjacency. Type: dictionary -| | ... | - dut2_static_adjacency - Dut2 static address. Type: dictionary -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| Configure LISP topology in 3-node circular topology \| ${dut1_node} \| ${interface_name} \ -| | ... | \| None \| ${dut2_node} \| ${interface_name} \| None \ -| | ... | \| ${locator_set} \| ${dut1_eid} \| ${dut2_eid} \ -| | ... | \| ${dut1_static_adjacency} \| ${dut2_static_adjacency} \| -| | ... -| | [Arguments] | ${dut1_node} | ${dut1_int_name} | ${dut1_int_index} -| | ... | ${dut2_node} | ${dut2_int_name} | ${dut2_int_index} -| | ... | ${locator_set} | ${dut1_eid} | ${dut2_eid} -| | ... | ${dut1_static_adjacency} | ${dut2_static_adjacency} -| | ${dut1_int_index}= | Run Keyword If | ${dut1_int_index} is None -| | | ... | Get Interface Sw Index | ${dut1_node} -| | | ... | ${dut1_int_name} -| | | ... | ELSE | Set Variable | ${dut1_int_index} -| | ${dut2_int_index}= | Run Keyword If | ${dut2_int_index} is None -| | | ... | Get Interface Sw Index | ${dut2_node} -| | | ... | ${dut2_int_name} -| | | ... | ELSE | Set Variable | ${dut2_int_index} -| | Enable Lisp | ${dut1_node} -| | Vpp Add Lisp Locator Set | ${dut1_node} | ${locator_set['locator_name']} -| | Vpp Add Lisp Locator | ${dut1_node} | ${locator_set['locator_name']} -| | ... | ${dut1_int_index} | ${locator_set['priority']} -| | ... | ${locator_set['weight']} -| | Vpp Add Lisp Local Eid | ${dut1_node} | ${dut1_eid['locator_name']} -| | ... | ${dut1_eid['vni']} | ${dut1_eid['eid']} -| | ... | ${dut1_eid['prefix']} -| | Vpp Add Lisp Remote Mapping | ${dut1_node} | ${dut1_static_adjacency['vni']} -| | ... | ${dut1_static_adjacency['deid']} -| | ... | ${dut1_static_adjacency['prefix']} -| | ... | ${dut1_static_adjacency['seid']} -| | ... | ${dut1_static_adjacency['prefix']} -| | ... | ${dut1_static_adjacency['rloc']} -| | Vpp Add Lisp Adjacency | ${dut1_node} | ${dut1_static_adjacency['vni']} -| | ... | ${dut1_static_adjacency['deid']} -| | ... | ${dut1_static_adjacency['prefix']} -| | ... | ${dut1_static_adjacency['seid']} -| | ... | ${dut1_static_adjacency['prefix']} -| | Enable Lisp | ${dut2_node} -| | Vpp Add Lisp Locator Set | ${dut2_node} | ${locator_set['locator_name']} -| | Vpp Add Lisp Locator | ${dut2_node} | ${locator_set['locator_name']} -| | ... | ${dut2_int_index} | ${locator_set['priority']} -| | ... | ${locator_set['weight']} -| | Vpp Add Lisp Local Eid | ${dut2_node} | ${dut2_eid['locator_name']} -| | ... | ${dut2_eid['vni']} | ${dut2_eid['eid']} -| | ... | ${dut2_eid['prefix']} -| | Vpp Add Lisp Remote Mapping | ${dut2_node} | ${dut2_static_adjacency['vni']} -| | ... | ${dut2_static_adjacency['deid']} -| | ... | ${dut2_static_adjacency['prefix']} -| | ... | ${dut2_static_adjacency['seid']} -| | ... | ${dut2_static_adjacency['prefix']} -| | ... | ${dut2_static_adjacency['rloc']} -| | Vpp Add Lisp Adjacency | ${dut2_node} | ${dut2_static_adjacency['vni']} -| | ... | ${dut2_static_adjacency['deid']} -| | ... | ${dut2_static_adjacency['prefix']} -| | ... | ${dut2_static_adjacency['seid']} -| | ... | ${dut2_static_adjacency['prefix']} - -| Change LISP Configuration -| | [Documentation] | Change configuration of the Lisp protocol. -| | ... -| | ... | *Arguments:* -| | ... | - dut1_node - DUT1 node. Type: dictionary -| | ... | - dut2_node - DUT2 node. Type: dictionary -| | ... | - dut1_to_dut2 - DUT1 towards DUT2 interface name. Type: string -| | ... | - dut2_to_dut1 - DUT2 towards DUT1 interface name. Type: string -| | ... | - dut1_to_dut2_mac - DUT1 towards DUT2 interface mac address. -| | ... | Type: string -| | ... | - dut2_to_dut1_mac - DUT2 towards DUT1 interface mac address. -| | ... | Type: string -| | ... | - new_dut1_ip - New DUT1 towards DUT2 interface IP address. -| | ... | Type: string -| | ... | - new_dut2_ip - New DUT2 towards DUT1 interface IP address. -| | ... | Type: string -| | ... | - prefix - Prefix of the DUT nodes. Type: integer -| | ... | - old_dut1_static_adjacency - Old DUT1 static adjacency. -| | ... | Type: dictionary -| | ... | - new_dut1_static_adjacency - New DUT1 static adjacency. -| | ... | Type: dictionary -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| Change LISP Configuration \| ${dut1_node} \| ${dut2_node} \ -| | ... | \| ${dut1_to_dut2} \| ${dut2_to_dut1} | "08:00:27:20:e0:0d" \ -| | ... | \| "08:00:27:b1:94:b1" \| "6.3.0.1" \| "6.3.0.20" \| "24" \ -| | ... | \| ${old_dut1_static_adjacency} \| ${new_dut1_static_adjacency} \| -| | ... -| | [Arguments] | ${dut1_node} | ${dut2_node} | ${dut1_to_dut2} -| | ... | ${dut2_to_dut1} | ${dut1_to_dut2_mac} | ${dut2_to_dut1_mac} -| | ... | ${new_dut1_ip} | ${new_dut2_ip} | ${prefix} -| | ... | ${old_dut1_static_adjacency} | ${new_dut1_static_adjacency} -| | Flush IPv4 Addresses "${dut2_to_dut1}" "${dut2_node}" -| | Vpp Del Lisp Remote Mapping | ${dut1_node} -| | ... | ${old_dut1_static_adjacency['vni']} -| | ... | ${old_dut1_static_adjacency['deid']} -| | ... | ${old_dut1_static_adjacency['prefix']} -| | ... | ${old_dut1_static_adjacency['seid']} -| | ... | ${old_dut1_static_adjacency['prefix']} -| | ... | ${old_dut1_static_adjacency['rloc']} -| | Vpp Del Lisp Adjacency | ${dut1_node} -| | ... | ${old_dut1_static_adjacency['vni']} -| | ... | ${old_dut1_static_adjacency['deid']} -| | ... | ${old_dut1_static_adjacency['prefix']} -| | ... | ${old_dut1_static_adjacency['seid']} -| | ... | ${old_dut1_static_adjacency['prefix']} -| | Set Interface Address | ${dut2_node} | ${dut2_to_dut1} -| | ... | ${new_dut2_ip} | ${prefix} -| | Add Arp On Dut | ${dut1_node} | ${dut1_to_dut2} | ${new_dut2_ip} -| | ... | ${dut2_to_dut1_mac} -| | Add Arp On Dut | ${dut2_node} | ${dut2_to_dut1} | ${new_dut1_ip} -| | ... | ${dut1_to_dut2_mac} -| | Vpp Add Lisp Remote Mapping | ${dut1_node} -| | ... | ${new_dut1_static_adjacency['vni']} -| | ... | ${new_dut1_static_adjacency['deid']} -| | ... | ${new_dut1_static_adjacency['prefix']} -| | ... | ${new_dut1_static_adjacency['seid']} -| | ... | ${new_dut1_static_adjacency['prefix']} -| | ... | ${new_dut1_static_adjacency['rloc']} -| | Vpp Add Lisp Adjacency | ${dut1_node} -| | ... | ${new_dut1_static_adjacency['vni']} -| | ... | ${new_dut1_static_adjacency['deid']} -| | ... | ${new_dut1_static_adjacency['prefix']} -| | ... | ${new_dut1_static_adjacency['seid']} -| | ... | ${new_dut1_static_adjacency['prefix']} diff --git a/resources/libraries/robot/lisp/lispgpe.robot b/resources/libraries/robot/lisp/lispgpe.robot deleted file mode 100644 index c39b64cf3f..0000000000 --- a/resources/libraries/robot/lisp/lispgpe.robot +++ /dev/null @@ -1,126 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Documentation | LISP-gpe encapsulation suite keywords -| Library | resources.libraries.python.topology.Topology -| Resource | resources/libraries/robot/lisp/lisp_api.robot -| Library | resources.libraries.python.LispSetup.LispLocatorSet -| Library | resources.libraries.python.LispSetup.LispLocator -| Library | resources.libraries.python.LispSetup.LispLocalEid -| Library | resources.libraries.python.LispSetup.LispAdjacency -| Library | resources.libraries.python.LispSetup.LispRemoteMapping -| Library | resources.libraries.python.LispSetup.LispEidTableMap - -*** Keywords *** -| Configure LISP GPE topology in 3-node circular topology -| | [Documentation] | Configure LISP GPE topology in 3-node circular topology. -| | ... -| | ... | *Arguments:* -| | ... | - dut1_node - DUT1 node. Type: dictionary -| | ... | - dut1_if - DUT1 node interface. Type: string -| | ... | - dut1_int_index - DUT1 node interface index. Type: integer -| | ... | - dut2_node - DUT2 node. Type: dictionary -| | ... | - dut2_if - DUT2 node interface. Type: string -| | ... | - dut2_int_index - DUT2 node interface index. Type: integer -| | ... | - locator_set - Locator set values. Type: dictionary -| | ... | - dut1_eid - DUT1 node eid address. Type: dictionary -| | ... | - dut2_eid - DUT2 node eid address. Type: dictionary -| | ... | - dut1_static_adjacency - DUT1 static adjacency. Type: dictionary -| | ... | - dut2_static_adjacency - DUT2 static adjacency. Type: dictionary -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| Configure LISP GPE topology in 3-node circular topology \| ${dut1_node} \| ${interface_name} \ -| | ... | \| None \| ${dut2_node} \| ${interface_name} \| None \ -| | ... | \| ${locator_set} \| ${dut1_eid} \| ${dut2_eid} \ -| | ... | \| ${dut1_static_adjacency} \| ${dut2_static_adjacency} \| -| | ... -| | [Arguments] -| | ... | ${dut1_node} | ${dut1_if} | ${dut1_int_index} -| | ... | ${dut2_node} | ${dut2_if} | ${dut2_int_index} -| | ... | ${locator_set} | ${dut1_eid} | ${dut2_eid} -| | ... | ${dut1_static_adjacency} | ${dut2_static_adjacency} -| | ... | ${vni_table}=0 | ${vrf_table}=0 -| | ... -# DUT1 settings: -| | ${dut1_int_index}= | Run Keyword If | ${dut1_int_index} is None -| | | ... | Get Interface Sw Index | ${dut1_node} | ${dut1_if} -| | | ... | ELSE | Set Variable | ${dut1_int_index} -| | Enable Lisp | ${dut1_node} -| | Enable Lisp GPE | ${dut1_node} -| | Vpp Add Lisp Locator Set | ${dut1_node} -| | ... | ${locator_set['locator_name']} -| | Vpp Add Lisp Locator | ${dut1_node} -| | ... | ${locator_set['locator_name']} -| | ... | ${dut1_int_index} -| | ... | ${locator_set['priority']} -| | ... | ${locator_set['weight']} -| | Vpp Lisp Eid Table Mapping | ${dut1_node} -| | ... | ${vni_table} -| | ... | vrf=${vrf_table} -| | Vpp Add Lisp Local Eid | ${dut1_node} -| | ... | ${dut1_eid['locator_name']} -| | ... | ${vni_table} -| | ... | ${dut1_eid['eid']} -| | ... | ${dut1_eid['prefix']} -| | Vpp Add Lisp Remote Mapping | ${dut1_node} -| | ... | ${vni_table} -| | ... | ${dut1_static_adjacency['deid']} -| | ... | ${dut1_static_adjacency['prefix']} -| | ... | ${dut1_static_adjacency['seid']} -| | ... | ${dut1_static_adjacency['prefix']} -| | ... | ${dut1_static_adjacency['rloc']} -| | Vpp Add Lisp Adjacency | ${dut1_node} -| | ... | ${vni_table} -| | ... | ${dut1_static_adjacency['deid']} -| | ... | ${dut1_static_adjacency['prefix']} -| | ... | ${dut1_static_adjacency['seid']} -| | ... | ${dut1_static_adjacency['prefix']} -| | ... -# DUT2 settings: -| | ${dut2_int_index}= | Run Keyword If | ${dut2_int_index} is None -| | | ... | Get Interface Sw Index | ${dut2_node} | ${dut2_if} -| | | ... | ELSE | Set Variable | ${dut2_int_index} -| | Enable Lisp | ${dut2_node} -| | Enable Lisp GPE | ${dut2_node} -| | Vpp Add Lisp Locator Set | ${dut2_node} -| | ... | ${locator_set['locator_name']} -| | Vpp Add Lisp Locator | ${dut2_node} -| | ... | ${locator_set['locator_name']} -| | ... | ${dut2_int_index} -| | ... | ${locator_set['priority']} -| | ... | ${locator_set['weight']} -| | Vpp Lisp Eid Table Mapping | ${dut2_node} -| | ... | ${vni_table} -| | ... | vrf=${vrf_table} -| | Vpp Add Lisp Local Eid | ${dut2_node} -| | ... | ${dut2_eid['locator_name']} -| | ... | ${vni_table} -| | ... | ${dut2_eid['eid']} -| | ... | ${dut2_eid['prefix']} -| | Vpp Add Lisp Remote Mapping | ${dut2_node} -| | ... | ${vni_table} -| | ... | ${dut2_static_adjacency['deid']} -| | ... | ${dut2_static_adjacency['prefix']} -| | ... | ${dut2_static_adjacency['seid']} -| | ... | ${dut2_static_adjacency['prefix']} -| | ... | ${dut2_static_adjacency['rloc']} -| | Vpp Add Lisp Adjacency | ${dut2_node} -| | ... | ${vni_table} -| | ... | ${dut2_static_adjacency['deid']} -| | ... | ${dut2_static_adjacency['prefix']} -| | ... | ${dut2_static_adjacency['seid']} -| | ... | ${dut2_static_adjacency['prefix']} diff --git a/resources/libraries/robot/lxc.robot b/resources/libraries/robot/lxc.robot deleted file mode 100644 index 83bd5c1837..0000000000 --- a/resources/libraries/robot/lxc.robot +++ /dev/null @@ -1,257 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Documentation | Keywords related to linux container (LXC) -| Library | resources.libraries.python.LXCUtils -| Library | resources.libraries.python.CpuUtils -| Library | resources.libraries.python.topology.Topology - -*** Keywords *** -| Create LXC container on DUT node -| | [Documentation] | Setup lxc container on DUT node. -| | ... -| | ... | *Arguments:* -| | ... -| | ... | - dut_node - DUT node. Type: dictionary -| | ... | - lxc_name - Name of LXC container. Type: dictionary -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Create LXC container on DUT node \| ${nodes['DUT1']} \ -| | ... | \| DUT1_slave_1 \| -| | ... -| | [Arguments] | ${dut_node} | ${lxc_name} -| | ... -| | Import Library | resources.libraries.python.LXCUtils -| | ... | container_name=${lxc_name} | WITH NAME | ${lxc_name} -| | Run keyword | ${lxc_name}.Set node | ${dut_node} -| | Run keyword | ${lxc_name}.Create container | force_create=${TRUE} -| | Run keyword | ${lxc_name}.Mount host dir in container - -| Create LXC container on DUT node with cpuset -| | [Documentation] | Create LXC container on DUT node with cpuset. -| | ... -| | ... | *Arguments:* -| | ... -| | ... | - dut_node - DUT node. Type: dictionary -| | ... | - lxc_name - Name of LXC container. Type: dictionary -| | ... | - skip - number of cpus which will be skipped. Type: integer -| | ... | - count - number of cpus which will be allocated for lxc. Type: -| | ... | integer -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Create LXC container on DUT node with cpuset \ -| | ... | \| ${nodes['DUT1']} \| DUT1_slave_1 \| 6 \| 1 \| -| | ... -| | [Arguments] | ${dut_node} | ${lxc_name} | ${skip}=${6} | ${count}=${1} -| | ... -| | Import Library | resources.libraries.python.LXCUtils -| | ... | container_name=${lxc_name} | WITH NAME | ${lxc_name} -| | ${dut_numa}= | Get interfaces numa node | ${dut_node} -| | ... | ${dut1_if1} | ${dut1_if2} -| | ${lxc_cpus}= | CPU list per node str | ${dut_node} | ${dut_numa} -| | ... | skip_cnt=${skip} | cpu_cnt=${count} | smt_used=${False} -| | Set Suite Variable | ${lxc_cpus} -| | Run keyword | ${lxc_name}.Set node | ${dut_node} -| | Run keyword | ${lxc_name}.Create container | force_create=${TRUE} -| | Run keyword | ${lxc_name}.Mount host dir in container -| | Run keyword | ${lxc_name}.Container cpuset cpus | 0,${lxc_cpus} - -| Create '${nr}' LXC containers on '${dut}' node -| | [Documentation] | Create and start multiple lxc containers on DUT node. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Create 5 LXC containers on DUT1 node \| -| | ... -| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 -| | | Create LXC container on DUT node | ${nodes['${dut}']} -| | | ... | ${dut}_${lxc_base_name}_${number} - -| Create '${nr}' LXC containers on all DUT nodes -| | [Documentation] | Create and start multiple LXC containers on all DUT nodes. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Create 5 LXC containers on all DUT nodes \| -| | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Create '${nr}' LXC containers on '${dut}' node - -| Create '${nr}' LXC containers on '${dut}' node with '${count}' cpus -| | [Documentation] | Create and start multiple LXC containers on DUT node. -| | ... | Set the cpuset.cpus cgroup profile for pin of cpus. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Create 5 LXC containers on DUT1 node with 2 cpus \| -| | ... -| | ${skip_cpus}= | Evaluate | ${vpp_cpus}+${system_cpus} -| | ${count_int}= | Convert To Integer | ${count} -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 -| | | ${skip}= | Evaluate | ${skip_cpus} + (${nr} - 1) * ${count} -| | | Create LXC container on DUT node with cpuset | ${nodes['${dut}']} -| | | ... | ${dut}_${lxc_base_name}_${number} | ${skip} | ${count_int} - -| Create '${nr}' LXC containers on all DUT nodes with '${count}' cpus -| | [Documentation] | Create and start multiple LXC containers on all DUT nodes. -| | ... | Set the cpuset.cpus cgroup profile for pin of cpus. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Create 5 LXC containers on all DUT nodes with 2 cpus \| -| | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Create '${nr}' LXC containers on '${dut}' node with '${count}' cpus - -| Destroy LXC container on DUT node -| | [Documentation] | Stop and destroy LXC container on DUT node. -| | ... -| | ... | *Arguments:* -| | ... -| | ... | - dut_node - DUT node. Type: dictionary -| | ... | - lxc_name - Name of LXC container. Type: dictionary -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Destroy LXC container on DUT node \| ${nodes['DUT1']} \ -| | ... | \| DUT1_slave_1 \| -| | ... -| | [Arguments] | ${dut_node} | ${lxc_name} -| | ... -| | Import Library | resources.libraries.python.LXCUtils -| | ... | container_name=${lxc_name} | WITH NAME | ${lxc_name} -| | Run keyword | ${lxc_name}.Set node | ${dut_node} -| | Run keyword | ${lxc_name}.Destroy container - -| Destroy '${nr}' LXC containers on '${dut}' node -| | [Documentation] | Stop and destroy multiple LXC containers on DUT node. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Destroy 5 LXC containers on DUT1 node \| -| | ... -| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 -| | | Destroy LXC container on DUT node | ${nodes['${dut}']} -| | | ... | ${dut}_${lxc_base_name}_${number} - -| Destroy '${nr}' LXC containers on all DUT nodes -| | [Documentation] | Stop and destroy multiple LXC containers on all DUT nodes. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Destroy 5 LXC containers on all DUT nodes \| -| | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Destroy '${nr}' LXC containers on '${dut}' node - -| Install VPP on LXC container on DUT node -| | [Documentation] | Install vpp on LXC container on DUT node. -| | ... -| | ... | *Arguments:* -| | ... -| | ... | - dut_node - DUT node. Type: dictionary -| | ... | - lxc_name - Name of LXC container. Type: dictionary -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Install VPP on LXC container on DUT node \| ${nodes['DUT1']} \ -| | ... | \| DUT1_slave_1 \| -| | ... -| | [Arguments] | ${dut_node} | ${lxc_name} -| | ... -| | Import Library | resources.libraries.python.LXCUtils -| | ... | container_name=${lxc_name} | WITH NAME | ${lxc_name} -| | Run keyword | ${lxc_name}.Set node | ${dut_node} -| | Run keyword | ${lxc_name}.Install VPP in container - -| Install VPP on '${nr}' LXC containers on '${dut}' node -| | [Documentation] | Install VPP on multiple LXC containers on DUT node. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Install VPP on 5 LXC containers on DUT1 node \| -| | ... -| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 -| | | Install VPP on LXC container on DUT node | ${nodes['${dut}']} -| | | ... | ${dut}_${lxc_base_name}_${number} - -| Install VPP on '${nr}' LXC containers on all DUT nodes -| | [Documentation] | Install VPP on multiple LXC containers on all DUT nodes. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Install VPP on 5 LXC containers on all DUT nodes \| -| | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Install VPP on '${nr}' LXC containers on '${dut}' node - -| Create startup configuration of VPP on LXC container on DUT node -| | [Documentation] | Create base startup configuration of VPP on LXC container -| | ... | on DUT node. -| | ... -| | ... | *Arguments:* -| | ... -| | ... | - dut_node - DUT node. Type: dictionary -| | ... | - lxc_name - Name of LXC container. Type: dictionary -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Create startup configuration of VPP on LXC container on DUT node \ -| | ... | \| ${nodes['DUT1']} \| DUT1_slave_1 \| -| | ... -| | [Arguments] | ${dut_node} | ${lxc_name} -| | ... -| | Import Library | resources.libraries.python.VppConfigGenerator -| | ... | WITH NAME | ${lxc_name}_conf -| | Run keyword | ${lxc_name}_conf.Set node | ${dut_node} -| | Run keyword | ${lxc_name}_conf.Add unix CLI listen -| | Run keyword | ${lxc_name}_conf.Add unix nodaemon -| | Run keyword | ${lxc_name}_conf.Add unix exec | "/tmp/running.exec" -| | Run keyword | ${lxc_name}_conf.Add CPU main core | "0" -| | Run keyword | ${lxc_name}_conf.Add CPU corelist workers | ${lxc_cpus} -| | Run keyword | ${lxc_name}_conf.Add plugin disable | "dpdk_plugin.so" -| | Run Keyword | ${lxc_name}_conf.Apply config LXC | ${lxc_name} - -| Create startup configuration of VPP on '${nr}' LXC containers on '${dut}' node -| | [Documentation] | Create base startup configuration of VPP on multiple LXC -| | ... | container on DUT node. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Create startup configuration of VPP on 1 LXC containers on DUT1 \ -| | ... | node \| -| | ... -| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 -| | | Create startup configuration of VPP on LXC container on DUT node -| | | ... | ${nodes['${dut}']} | ${dut}_${lxc_base_name}_${number} - -| Create startup configuration of VPP on '${nr}' LXC containers on all DUT nodes -| | [Documentation] | Create base startup configuration of VPP on multiple LXC -| | ... | container on all DUT nodes. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Create startup configuration of VPP on 1 LXC containers on all \ -| | ... | DUT nodes \| -| | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Create startup configuration of VPP on '${nr}' LXC containers on '${dut}' node diff --git a/resources/libraries/robot/map.robot b/resources/libraries/robot/map.robot deleted file mode 100644 index ac086b4511..0000000000 --- a/resources/libraries/robot/map.robot +++ /dev/null @@ -1,312 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Variables | resources/libraries/python/topology.py -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.DUTSetup -| Library | resources.libraries.python.TGSetup -| Library | resources.libraries.python.Map -| Documentation | Keywords for MAP feature in VPP. - -*** Keywords *** -| Send IPv4 UDP and check headers for lightweight 4over6 -| | [Documentation] -| | ... | Send empty UDP to given IPv4 dst and UDP port and check received \ -| | ... | packets headers (Ethernet, IPv6, IPv4, UDP). -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - Node where to run traffic script. Type: string -| | ... | - tx_if - Interface from where to send ICPMv4 packet. Type: string -| | ... | - rx_if - Interface where to receive IPinIP packet. Type: string -| | ... | - tx_dst_mac - Destination MAC address of IPv4 packet. Type: string -| | ... | - tx_dst_ipv4 - Destination IPv4 address. Type: string -| | ... | - tx_src_ipv4 - Source IPv4 address. Type: string -| | ... | - tx_dst_udp_port - Destination UDP port. Type: integer -| | ... | - rx_dst_mac - Expected destination MAC address. Type: string -| | ... | - rx_src_mac - Expected source MAC address. Type: string -| | ... | - dst_ipv6 - Expected destination IPv6 address. Type: string -| | ... | - src_ipv6 - Expected source IPv6 address. Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send IPv4 UDP and check headers for lightweight 4over6 \ -| | ... | \| ${tg_node} \| eth3 \| eth2 \| 08:00:27:66:b8:57 \| 20.0.0.1 \ -| | ... | \| 20.0.0.2 \| 1232 \| 08:00:27:46:2b:4c \| 08:00:27:f3:be:f0 \ -| | ... | \| 2001:1::2 \| 2001:1::1 \| -| | ... -| | [Arguments] -| | ... | ${tg_node} | ${tx_if} | ${rx_if} | ${tx_dst_mac} | ${tx_dst_ipv4} -| | ... | ${tx_src_ipv4} | ${tx_dst_udp_port} | ${rx_dst_mac} | ${rx_src_mac} -| | ... | ${dst_ipv6} | ${src_ipv6} -| | ... -| | ${tx_name}= | Get interface name | ${tg_node} | ${tx_if} -| | ${rx_name}= | Get interface name | ${tg_node} | ${rx_if} -| | ${args}= | Catenate -| | ... | --tx_if | ${tx_name} | --rx_if | ${rx_name} -| | ... | --tx_dst_mac | ${tx_dst_mac} | --tx_src_ipv4 | ${tx_src_ipv4} -| | ... | --tx_dst_ipv4 | ${tx_dst_ipv4} -| | ... | --tx_dst_udp_port | ${tx_dst_udp_port} -| | ... | --rx_dst_mac | ${rx_dst_mac} | --rx_src_mac | ${rx_src_mac} -| | ... | --src_ipv6 | ${src_ipv6} | --dst_ipv6 | ${dst_ipv6} -| | ... -| | Run Traffic Script On Node -| | ... | send_ipv4_udp_check_lw_4o6.py | ${tg_node} | ${args} - -| Send IPv4 ICMP and check headers for lightweight 4over6 -| | [Documentation] -| | ... | Send ICMP request with ID to given IPv4 destination and \ -| | ... | check received packets headers (Ethernet, IPv6, IPv4, ICMP). -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - Node where to run traffic script. Type: string -| | ... | - tx_if - Interface from where to send ICPMv4 packet. Type: string -| | ... | - rx_if - Interface where to receive IPinIP packet. Type: string -| | ... | - tx_dst_mac - Destination MAC address of IPv4 packet. Type: string -| | ... | - tx_dst_ipv4 - Destination IPv4 address. Type: string -| | ... | - tx_src_ipv4 - Source IPv4 address. Type: string -| | ... | - tx_icmp_id - ICMP ID. Type: integer -| | ... | - rx_dst_mac - Expected destination MAC address. Type: string -| | ... | - rx_src_mac - Expected source MAC address. Type: string -| | ... | - dst_ipv6 - Expected destination IPv6 address. Type: string -| | ... | - src_ipv6 - Expected source IPv6 address. Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send IPv4 ICMP and check headers for lightweight 4over6 \ -| | ... | \| ${tg_node} \| eth3 \| eth2 \| 08:00:27:66:b8:57 \| 20.0.0.1 \ -| | ... | \| 20.0.0.2 \| 1232 \| 08:00:27:46:2b:4c \| 08:00:27:f3:be:f0 \ -| | ... | \| 2001:1::2 \| 2001:1::1 \| -| | ... -| | [Arguments] -| | ... | ${tg_node} | ${tx_if} | ${rx_if} | ${tx_dst_mac} | ${tx_dst_ipv4} -| | ... | ${tx_src_ipv4} | ${tx_icmp_id} | ${rx_dst_mac} | ${rx_src_mac} -| | ... | ${dst_ipv6} | ${src_ipv6} -| | ... -| | ${tx_name}= | Get interface name | ${tg_node} | ${tx_if} -| | ${rx_name}= | Get interface name | ${tg_node} | ${rx_if} -| | ${args}= | Catenate -| | ... | --tx_if | ${tx_name} | --rx_if | ${rx_name} -| | ... | --tx_dst_mac | ${tx_dst_mac} | --tx_src_ipv4 | ${tx_src_ipv4} -| | ... | --tx_dst_ipv4 | ${tx_dst_ipv4} | --tx_icmp_id | ${tx_icmp_id} -| | ... | --rx_dst_mac | ${rx_dst_mac} | --rx_src_mac | ${rx_src_mac} -| | ... | --src_ipv6 | ${src_ipv6} | --dst_ipv6 | ${dst_ipv6} -| | ... -| | Run Traffic Script On Node -| | ... | send_ipv4_icmp_check_lw_4o6.py | ${tg_node} | ${args} - -| Send IPv4 UDP in IPv6 and check headers for lightweight 4over6 -| | [Documentation] -| | ... | Send empty UDP in IPv4 in IPv6 and check if IPv4 packet is correctly \ -| | ... | decapsulated from IPv6. -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - Node where to run traffic script. Type: string -| | ... | - tx_if - Interface from where to send ICPMv4 packet. Type: string -| | ... | - rx_if - Interface where to receive IPinIP packet. Type: string -| | ... | - tx_dst_mac - Destination MAC address of IPv4 packet. Type: string -| | ... | - tx_src_mac - Source MAC address of IPv4 packet. Type: string -| | ... | - tx_dst_ipv6 - Destination IPv6 address. Type: string -| | ... | - tx_src_ipv6 - Source IPv6 address. Type: string -| | ... | - tx_dst_ipv4 - Destination IPv4 address. Type: string -| | ... | - tx_src_ipv4 - Source IPv4 address. Type: string -| | ... | - tx_src_udp_port - Source UDP port. Type: integer -| | ... | - rx_dst_mac - Expected destination MAC address. Type: string -| | ... | - rx_src_mac - Expected source MAC address. Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send IPv4 UDP in IPv6 and check headers for lightweight 4over6 \ -| | ... | \| ${tg_node} \| eth3 \| eth2 \ -| | ... | \| 08:00:27:66:b8:57 \| 08:00:27:33:54:21 \ -| | ... | \| 2001:1::2 \| 2001:1::1 \| 20.0.0.1 \| 20.0.0.2 \ -| | ... | \| 1232 \| 08:00:27:46:2b:4c \| 08:00:27:f3:be:f0 \| -| | ... -| | [Arguments] -| | ... | ${tg_node} | ${tx_if} | ${rx_if} | ${tx_dst_mac} | ${tx_src_mac} -| | ... | ${tx_dst_ipv6} | ${tx_src_ipv6} | ${tx_dst_ipv4} | ${tx_src_ipv4} -| | ... | ${tx_src_udp_port} | ${rx_dst_mac} | ${rx_src_mac} -| | ... -| | ${tx_name}= | Get interface name | ${tg_node} | ${tx_if} -| | ${rx_name}= | Get interface name | ${tg_node} | ${rx_if} -| | ${args}= | Catenate -| | ... | --tx_if | ${tx_name} | --rx_if | ${rx_name} -| | ... | --tx_dst_mac | ${tx_dst_mac} | --tx_src_mac | ${tx_src_mac} -| | ... | --tx_dst_ipv6 | ${tx_dst_ipv6} | --tx_src_ipv6 | ${tx_src_ipv6} -| | ... | --tx_dst_ipv4 | ${tx_dst_ipv4} | --tx_src_ipv4 | ${tx_src_ipv4} -| | ... | --tx_src_udp_port | ${tx_src_udp_port} -| | ... | --rx_dst_mac | ${rx_dst_mac} | --rx_src_mac | ${rx_src_mac} -| | ... -| | Run Traffic Script On Node -| | ... | send_lw_4o6_check_ipv4_udp.py | ${tg_node} | ${args} - -| Send IPv4 UDP in IPv6 and check headers for lightweight hairpinning -| | [Documentation] -| | ... | Send empty UDP in IPv4 in IPv6 and check if IPv4 packet is correctly \ -| | ... | decapsulated and re-encapsulated to another lwB4. -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - Node where to run traffic script. Type: string -| | ... | - tx_if - Interface from where to send ICPMv4 packet. Type: string -| | ... | - rx_if - Interface where to receive IPinIP packet. Type: string -| | ... | - tx_dst_mac - Destination MAC address of send IPv6 packet. \ -| | ... | Type: string -| | ... | - tx_dst_ipv6 - Destination IPv6 address (lwAFTR). Type: string -| | ... | - tx_src_ipv6 - Source IPv6 address (lwB4_1). Type: string -| | ... | - tx_dst_ipv4 - Destination IPv4 address. Type: string -| | ... | - tx_src_ipv4 - Source IPv4 address. Type: string -| | ... | - tx_dst_udp_port - Destination UDP port (PSID_2 related). \ -| | ... | Type: integer -| | ... | - tx_src_udp_port - Source UDP port (PSID_1 related). Type: integer -| | ... | - rx_dst_mac - Expected destination MAC address. Type: string -| | ... | - rx_src_mac - Expected source MAC address. Type: string -| | ... | - rx_dst_ipv6 - Expected destination IPv6 address (lwB4_2). \ -| | ... | Type: string -| | ... | - rx_src_ipv6 - Expected source IPv6 address (lwAFTR). Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send IPv4 UDP in IPv6 and check headers for lightweight hairpinning \ -| | ... | \| ${tg_node} \| port3 \| port3 \| 08:00:27:f3:be:f0 \| 2001:1::1 \ -| | ... | \| 2001:1::2 \| 20.0.0.1 \| 20.0.0.1 \| ${6232} \| ${1232} \ -| | ... | \| 08:00:27:46:2b:4c \| 08:00:27:f3:be:f0 \| 2001:1::3 \| 2001:1::1 \| -| | ... -| | [Arguments] -| | ... | ${tg_node} | ${tx_if} | ${rx_if} -| | ... | ${tx_dst_mac} -| | ... | ${tx_dst_ipv6} | ${tx_src_ipv6} -| | ... | ${tx_dst_ipv4} | ${tx_src_ipv4} -| | ... | ${tx_dst_udp_port} | ${tx_src_udp_port} -| | ... | ${rx_dst_mac} | ${rx_src_mac} -| | ... | ${rx_dst_ipv6} | ${rx_src_ipv6} -| | ... -| | ${tx_name}= | Get interface name | ${tg_node} | ${tx_if} -| | ${rx_name}= | Get interface name | ${tg_node} | ${rx_if} -| | ${args}= | Catenate -| | ... | --tx_if | ${tx_name} | --rx_if | ${rx_name} -| | ... | --tx_dst_mac | ${tx_dst_mac} -| | ... | --tx_dst_ipv6 | ${tx_dst_ipv6} | --tx_src_ipv6 | ${tx_src_ipv6} -| | ... | --tx_dst_ipv4 | ${tx_dst_ipv4} | --tx_src_ipv4 | ${tx_src_ipv4} -| | ... | --tx_dst_udp_port | ${tx_dst_udp_port} -| | ... | --tx_src_udp_port | ${tx_src_udp_port} -| | ... | --rx_dst_mac | ${rx_dst_mac} | --rx_src_mac | ${rx_src_mac} -| | ... | --rx_dst_ipv6 | ${rx_dst_ipv6} | --rx_src_ipv6 | ${rx_src_ipv6} -| | ... -| | Run Traffic Script On Node -| | ... | send_lw_4o6_check_hairpinning_udp.py | ${tg_node} | ${args} - -| Send IPv4 UDP and check IPv6 headers for MAP-T -| | [Documentation] -| | ... | Send a UDP in IPv4 and check if IPv4 source and destination \ -| | ... | addresses are correctly translated into IPv6 addresses. -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - Node where to run traffic script. Type: string -| | ... | - tx_if - Interface from where to send IPv4 UDP packet. Type: string -| | ... | - rx_if - Interface where to receive IPv6 UDP packet. Type: string -| | ... | - tx_dst_mac - Destination MAC address of IPv4 packet. Type: string -| | ... | - tx_dst_ipv4 - Destination IPv4 address. Type: string -| | ... | - tx_src_ipv4 - Source IPv4 address. Type: string -| | ... | - tx_dst_udp_port - Destination UDP port. Type: integer -| | ... | - rx_dst_mac - Expected destination MAC address. Type: string -| | ... | - rx_src_mac - Expected source MAC address. Type: string -| | ... | - dst_ipv6 - Expected destination IPv6 address. Type: string -| | ... | - src_ipv6 - Expected source IPv6 address. Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send IPv4 UDP and check IPv6 headers for MAP-T \ -| | ... | \| ${tg_node} \| port3 \| port3 \| 08:00:27:66:b8:57 \ -| | ... | \| 20.169.201.219 \| 100.0.0.1 \| ${1232} \| 08:00:27:46:2b:4c \ -| | ... | \| 08:00:27:f3:be:f0 \| 2001:db8::14a9:c9db:0 \ -| | ... | \| 2001:db8:ffff::6400:1 \| -| | ... -| | [Arguments] -| | ... | ${tg_node} | ${tx_if} | ${rx_if} -| | ... | ${tx_dst_mac} | ${tx_dst_ipv4} | ${tx_src_ipv4} | ${tx_dst_udp_port} -| | ... | ${rx_dst_mac} | ${rx_src_mac} | ${dst_ipv6} | ${src_ipv6} -| | ... -| | ${tx_name}= | Get interface name | ${tg_node} | ${tx_if} -| | ${rx_name}= | Get interface name | ${tg_node} | ${rx_if} -| | ${args}= | Catenate -| | ... | --tx_if | ${tx_name} | --rx_if | ${rx_name} -| | ... | --tx_dst_mac | ${tx_dst_mac} -| | ... | --tx_src_ipv4 | ${tx_src_ipv4} | --tx_dst_ipv4 | ${tx_dst_ipv4} -| | ... | --tx_dst_udp_port | ${tx_dst_udp_port} -| | ... | --rx_dst_mac | ${rx_dst_mac} | --rx_src_mac | ${rx_src_mac} -| | ... | --rx_src_ipv6 | ${src_ipv6} | --rx_dst_ipv6 | ${dst_ipv6} -| | ... -| | Run Traffic Script On Node -| | ... | send_ipv4_udp_check_map_t.py | ${tg_node} | ${args} - -| Send IPv6 UDP and check IPv4 headers for MAP-T -| | [Documentation] -| | ... | Send a UDP in IPv6 and check if IPv6 source and destination \ -| | ... | addresses are correctly translated into IPv4 addresses. -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - Node where to run traffic script. Type: string -| | ... | - tx_if - Interface from where to send IPv4 UDP packet. Type: string -| | ... | - rx_if - Interface where to receive IPv6 UDP packet. Type: string -| | ... | - tx_dst_mac - Destination MAC address of IPv4 packet. Type: string -| | ... | - tx_src_mac - Source MAC address of IPv4 packet. Type: string -| | ... | - tx_dst_ipv6 - Destination IPv6 address. Type: string -| | ... | - tx_src_ipv6 - Source IPv6 address. Type: string -| | ... | - tx_src_udp_port - Source UDP port. Type: integer -| | ... | - rx_dst_mac - Expected destination MAC address. Type: string -| | ... | - rx_src_mac - Expected source MAC address. Type: string -| | ... | - dst_ipv4 - Expected destination IPv4 address. Type: string -| | ... | - src_ipv4 - Expected source IPv4 address. Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send IPv6 UDP and check IPv4 headers for MAP-T \ -| | ... | \| port3 \| port4 \| 08:00:27:f3:be:f0 \| 2001:db8:ffff::6400:1 \ -| | ... | \| 2001:db8::14a9:c9db:0 \| ${1232} \| 08:00:27:58:71:eb \ -| | ... | \| 08:00:27:66:b8:57 \| 100.0.0.1 \| 20.169.201.219 \| -| | ... -| | [Arguments] -| | ... | ${tg_node} | ${tx_if} | ${rx_if} | ${tx_dst_mac} | ${tx_src_mac} -| | ... | ${tx_dst_ipv6} | ${tx_src_ipv6} | ${tx_src_udp_port} -| | ... | ${rx_dst_mac} | ${rx_src_mac} | ${dst_ipv4} | ${src_ipv4} -| | ... -| | ${tx_name}= | Get interface name | ${tg_node} | ${tx_if} -| | ${rx_name}= | Get interface name | ${tg_node} | ${rx_if} -| | ${args}= | Catenate -| | ... | --tx_if | ${tx_name} | --rx_if | ${rx_name} -| | ... | --tx_dst_mac | ${tx_dst_mac} | --tx_src_mac | ${tx_src_mac} -| | ... | --tx_src_ipv6 | ${tx_src_ipv6} | --tx_dst_ipv6 | ${tx_dst_ipv6} -| | ... | --tx_src_udp_port | ${tx_src_udp_port} -| | ... | --rx_dst_mac | ${rx_dst_mac} | --rx_src_mac | ${rx_src_mac} -| | ... | --rx_src_ipv4 | ${src_ipv4} | --rx_dst_ipv4 | ${dst_ipv4} -| | ... -| | Run Traffic Script On Node -| | ... | send_ipv6_udp_check_map_t.py | ${tg_node} | ${args} diff --git a/resources/libraries/robot/overlay/gre.robot b/resources/libraries/robot/overlay/gre.robot new file mode 100644 index 0000000000..0e825f05fb --- /dev/null +++ b/resources/libraries/robot/overlay/gre.robot @@ -0,0 +1,182 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/interfaces.robot + +*** Keywords *** +| Create GRE tunnel interface and set it up +| | [Documentation] | Create GRE tunnel interface and set it up on defined VPP node and put \ +| | ... | the interface to UP state. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node where to create GRE tunnel. Type: dictionary +| | ... | - source_ip_address - GRE tunnel source IP address. Type: string +| | ... | - destination_ip_address - GRE tunnel destination IP address. +| | ... | Type: string +| | ... +| | ... | *Return:* +| | ... | - name - Name of created GRE tunnel interface. Type: string +| | ... | - index - SW interface index of created GRE tunnel interface. +| | ... | Type: integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| ${gre_name} \| ${gre_index}= \ +| | ... | \| Create GRE tunnel interface and set it up \| ${dut} \ +| | ... | \| 192.0.1.1 \| 192.0.1.2 \| +| | ... +| | [Arguments] | ${dut_node} | ${source_ip_address} | ${destination_ip_address} +| | ${name} | ${index}= | Create GRE tunnel interface +| | ... | ${dut_node} | ${source_ip_address} | ${destination_ip_address} +| | Set Interface State | ${dut_node} | ${index} | up +| | [Return] | ${name} | ${index} + + +| Send ICMPv4 and check received GRE header +| | [Documentation] | Send ICMPv4 packet and check if received packed contains \ +| | ... | correct GRE, IP, MAC headers. +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - Node where to run traffic script. Type: dictionary +| | ... | - tx_if - Interface from where send ICPMv4 packet. Type: string +| | ... | - rx_if - Interface where to receive GRE packet. Type: string +| | ... | - tx_dst_mac - Destination MAC address of ICMP packet. Type: string +| | ... | - rx_dst_mac - Expected destination MAC address of GRE packet. +| | ... | Type: string +| | ... | - inner_src_ip - Source IP address of ICMP packet. Type: string +| | ... | - inner_dst_ip - Destination IP address of ICMP packet. +| | ... | Type: string +| | ... | - outer_src_ip - Source IP address of GRE packet. Type: string +| | ... | - outer_dst_ip - Destination IP address of GRE packet. +| | ... | Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send ICMPv4 and check received GRE header \ +| | ... | \| ${tg_node} \| ${tg_to_dut_if1} \| ${tg_to_dut_if2} \ +| | ... | \| ${tx_dst_mac} \| ${rx_dst_mac} \| ${net1_host_address} \ +| | ... | \| ${net2_host_address} \| ${dut1_ip_address} \| ${dut2_ip_address} \| +| | ... +| | [Arguments] | ${tg_node} | ${tx_if} | ${rx_if} +| | ... | ${tx_dst_mac} | ${rx_dst_mac} +| | ... | ${inner_src_ip} | ${inner_dst_ip} +| | ... | ${outer_src_ip} | ${outer_dst_ip} +| | ${tx_if_name}= | Get interface name | ${tg_node} | ${tx_if} +| | ${rx_if_name}= | Get interface name | ${tg_node} | ${rx_if} +| | ${args}= | Catenate | --tx_if | ${tx_if_name} | --rx_if | ${rx_if_name} +| | ... | --tx_dst_mac | ${tx_dst_mac} | --rx_dst_mac | ${rx_dst_mac} +| | ... | --inner_src_ip | ${inner_src_ip} | --inner_dst_ip | ${inner_dst_ip} +| | ... | --outer_src_ip | ${outer_src_ip} | --outer_dst_ip | ${outer_dst_ip} +| | Run Traffic Script On Node +| | ... | send_icmp_check_gre_headers.py | ${tg_node} | ${args} + + +| Send GRE and check received ICMPv4 header +| | [Documentation] | Send IPv4 ICMPv4 packet encapsulated into GRE and \ +| | ... | check IP, MAC headers on received packed. +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - Node where to run traffic script. Type: dictionary +| | ... | - tx_if - Interface from where send ICPMv4 packet. Type: string +| | ... | - rx_if - Interface where receive GRE packet. Type: string +| | ... | - tx_dst_mac - Destination MAC address of GRE packet. Type: string +| | ... | - rx_dst_mac - Expected destination MAC address of ICMP packet. +| | ... | Type: string +| | ... | - inner_src_ip - Source IP address of ICMP packet. Type: string +| | ... | - inner_dst_ip - Destination IP address of ICMP packet. +| | ... | Type: string +| | ... | - outer_src_ip - Source IP address of GRE packet. Type: string +| | ... | - outer_dst_ip - Destination IP address of GRE packet. +| | ... | Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send GRE and check received ICMPv4 header \| ${tg_node} \ +| | ... | \| ${tg_to_dut_if2} \| ${tg_to_dut_if1} \| ${tx_dst_mac} \ +| | ... | \| ${rx_dst_mac} \| ${net2_host_address} \| ${net1_host_address} \ +| | ... | \| ${dut2_ip_address} \| ${dut1_ip_address} \| +| | ... +| | [Arguments] | ${tg_node} | ${tx_if} | ${rx_if} +| | ... | ${tx_dst_mac} | ${rx_dst_mac} +| | ... | ${inner_src_ip} | ${inner_dst_ip} +| | ... | ${outer_src_ip} | ${outer_dst_ip} +| | ${tx_if_name}= | Get interface name | ${tg_node} | ${tx_if} +| | ${rx_if_name}= | Get interface name | ${tg_node} | ${rx_if} +| | ${args}= | Catenate | --tx_if | ${tx_if_name} | --rx_if | ${rx_if_name} +| | ... | --tx_dst_mac | ${tx_dst_mac} | --rx_dst_mac | ${rx_dst_mac} +| | ... | --inner_src_ip | ${inner_src_ip} | --inner_dst_ip | ${inner_dst_ip} +| | ... | --outer_src_ip | ${outer_src_ip} | --outer_dst_ip | ${outer_dst_ip} +| | Run Traffic Script On Node +| | ... | send_gre_check_icmp_headers.py | ${tg_node} | ${args} + +| Send GRE and check received GRE header +| | [Documentation] | Send IPv4 UDP packet encapsulated into GRE and \ +| | ... | check if received packed contains correct MAC GRE, IP, UDP headers. +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - Node where to run traffic script. Type: dictionary +| | ... | - tx_if - Interface from where send GRE packet. Type: string +| | ... | - rx_if - Interface where to receive GRE packet. Type: string +| | ... | - tx_dst_mac - Destination MAC address of transferred packet. +| | ... | Type: string +| | ... | - tx_src_mac - Source MAC address of transferred packet. Type: string +| | ... | - tx_outer_dst_ip - Destination IP address of GRE packet. Type: string +| | ... | - tx_outer_src_ip - Source IP address of GRE packet. Type: string +| | ... | - tx_inner_dst_ip - Destination IP address of UDP packet. Type: string +| | ... | - tx_inner_src_ip - Source IP address of UDP packet. Type: string +| | ... | - rx_dst_mac - Expected destination MAC address. Type: string +| | ... | - rx_src_mac - Expected source MAC address. Type: string +| | ... | - rx_outer_dst_ip - Expected destination IP address of received GRE +| | ... | packet. Type: string +| | ... | - rx_outer_src_ip - Expected source IP address of received GRE +| | ... | packet. Type: string +| | ... +| | ... | __Note:__ +| | ... | rx_inner_dst_ip and rx_inner_src_ip should be same as transferred +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| Send GRE and check received GRE header \| ${tg_node} \ +| | ... | \| port3 \| port3 \| 08:00:27:f3:be:f0 \| 08:00:27:46:2b:4c \ +| | ... | \| 10.0.0.1 \| 10.0.0.2 \| 192.168.3.100 \| 192.168.2.100 \ +| | ... | \| 08:00:27:46:2b:4c \| 08:00:27:f3:be:f0 \| 10.0.0.3 \| 10.0.0.1 \| +| | ... +| | [Arguments] | ${tg_node} | ${tx_if} | ${rx_if} +| | ... | ${tx_dst_mac} | ${tx_src_mac} +| | ... | ${tx_outer_dst_ip} | ${tx_outer_src_ip} +| | ... | ${tx_inner_dst_ip} | ${tx_inner_src_ip} +| | ... | ${rx_dst_mac} | ${rx_src_mac} +| | ... | ${rx_outer_dst_ip} | ${rx_outer_src_ip} +| | ${tx_if_name}= | Get interface name | ${tg_node} | ${tx_if} +| | ${rx_if_name}= | Get interface name | ${tg_node} | ${rx_if} +| | ${args}= | Catenate | --tx_if | ${tx_if_name} | --rx_if | ${rx_if_name} +| | ... | --tx_dst_mac | ${tx_dst_mac} | --tx_src_mac | ${tx_src_mac} +| | ... | --tx_outer_dst_ip | ${tx_outer_dst_ip} +| | ... | --tx_outer_src_ip | ${tx_outer_src_ip} +| | ... | --tx_inner_dst_ip | ${tx_inner_dst_ip} +| | ... | --tx_inner_src_ip | ${tx_inner_src_ip} +| | ... | --rx_dst_mac | ${rx_dst_mac} +| | ... | --rx_src_mac | ${rx_src_mac} +| | ... | --rx_outer_dst_ip | ${rx_outer_dst_ip} +| | ... | --rx_outer_src_ip | ${rx_outer_src_ip} +| | Run Traffic Script On Node +| | ... | send_gre_check_gre_headers.py | ${tg_node} | ${args} diff --git a/resources/libraries/robot/overlay/l2lisp.robot b/resources/libraries/robot/overlay/l2lisp.robot new file mode 100644 index 0000000000..5dcfcc5971 --- /dev/null +++ b/resources/libraries/robot/overlay/l2lisp.robot @@ -0,0 +1,77 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Documentation | LISP-gpe encapsulation suite keywords +| Library | resources.libraries.python.topology.Topology +| Resource | resources/libraries/robot/overlay/lisp_api.robot +| Library | resources.libraries.python.LispSetup.LispLocatorSet +| Library | resources.libraries.python.LispSetup.LispLocator +| Library | resources.libraries.python.LispSetup.LispLocalEid +| Library | resources.libraries.python.LispSetup.LispAdjacency +| Library | resources.libraries.python.LispSetup.LispRemoteMapping +| Library | resources.libraries.python.LispSetup.LispMapResolver +| Library | resources.libraries.python.LispSetup.LispEidTableMap + +*** Keywords *** +| Configure L2 LISP on DUT +| | [Documentation] | Set up LISP L2 topology. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... | - adjacency - DUT static adjacency settings. Type: dict +| | ... | - settings - DUT other LISP related settings. Type: dict +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| Configure LISP GPE topology in 3-node circular topology \| ${dut_node} \| ${adjacency} \ +| | ... | \| ${settings} \| +| | ... +| | [Arguments] +| | ... | ${dut_node} | ${adjacency} | ${settings} +| | ... +| | ${int_idx}= | Get Interface Sw Index | ${dut_node} | ${${adjacency['int']}} +| | Enable Lisp | ${dut_node} +| | Vpp Add Lisp Locator Set | ${dut_node} +| | ... | ${settings['locator_name']} +| | Vpp Add Lisp Locator | ${dut_node} +| | ... | ${settings['locator_name']} +| | ... | ${int_idx} +| | ... | ${settings['priority']} +| | ... | ${settings['weight']} +| | Vpp Lisp Eid Table Mapping | ${dut_node} +| | ... | ${settings['vni']} +| | ... | bd_id=${settings['bd']} +| | Vpp Add Lisp Local Eid | ${dut_node} +| | ... | ${settings['locator_name']} +| | ... | ${settings['vni']} +| | ... | ${adjacency['seid']} +| | Vpp Add Map Resolver | ${dut_node} +| | ... | ${adjacency['map_res']} +| | Vpp Add Lisp Remote Mapping | ${dut_node} +| | ... | ${settings['vni']} +| | ... | ${adjacency['eid']} +| | ... | 0 +| | ... | ${adjacency['seid']} +| | ... | 0 +| | ... | ${adjacency['rloc']} +| | ... | is_mac=${TRUE} +| | Vpp Add Lisp Adjacency | ${dut_node} +| | ... | ${settings['vni']} +| | ... | ${adjacency['eid']} +| | ... | 0 +| | ... | ${adjacency['seid']} +| | ... | 0 +| | ... | is_mac=${TRUE} diff --git a/resources/libraries/robot/overlay/lisp_api.robot b/resources/libraries/robot/overlay/lisp_api.robot new file mode 100644 index 0000000000..1485a405a6 --- /dev/null +++ b/resources/libraries/robot/overlay/lisp_api.robot @@ -0,0 +1,399 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/interfaces.robot +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.LispSetup.LispStatus +| Library | resources.libraries.python.LispSetup.LispSetup +| Library | resources.libraries.python.LispSetup.LispGpeStatus +| Library | resources.libraries.python.LispUtil + +*** Keywords *** + +| Generate LISP locator_set data +| | [Documentation] | Generate lisp locator_set data for test +| | ... | the lisp locator_set and locator API. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... | - locator_set_number - Number how many locator_set data +| | ... | will be generated. Type: integer +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | _NOTE:_ This KW sets following test case variables: +| | ... | - locator_set_values - New generated locator_set data. +| | ... | - locator_set_values_vat - New generated locator_set data expected\ +| | ... | from VAT. +| | ... +| | ... | *Example:* +| | ... | \| Given Generate LISP locator_set data \| ${nodes['DUT1']} \ +| | ... | \| ${locator_set_number} \| +| | ... +| | [Arguments] | ${dut_node} | ${locator_set_number} +| | ${locator_set_values} | ${locator_set_values_vat}= +| | ... | Generate Unique Lisp Locator Set Data +| | ... | ${dut_node} | ${locator_set_number} +| | Set Test Variable | ${locator_set_values} +| | Set Test Variable | ${locator_set_values_vat} + +| Configure LISP locator_set data +| | [Documentation] | Set the lisp locator_set and locator on the VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | _NOTE:_ This KW requires following test case variables: +| | ... | - locator_set_values - Generated locator_set data from +| | ... | KW locator_set data is prepared, which will be set on the VPP node. +| | ... +| | ... | *Example:* +| | ... | \| When Configure LISP locator_set data \| ${nodes['DUT1']} \| +| | ... +| | [Arguments] | ${dut_node} +| | Vpp Set Lisp Locator Set | ${dut_node} | ${locator_set_values} + +| LISP locator_set shpuld be configured correctly +| | [Documentation] | Test if the locator_set is set correctly on the VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | _NOTE:_ This KW requires following test case variables: +| | ... | - locator_set_values_vat - Generated locator_set data from +| | ... | KW locator_set data is prepared, which are expected from VPP via VAT. +| | ... +| | ... | *Example:* +| | ... | \| Then LISP locator_set shpuld be configured correctly \ +| | ... | \| ${nodes['DUT1']} \| +| | ... +| | [Arguments] | ${dut_node} +| | ${show_locator_set}= | Vpp Show Lisp Locator Set | ${dut_node} | local +| | Lisp Locator S Should Be Equal +| | ... | ${locator_set_values_vat} | ${show_locator_set} + +| Delete all LISP locator_set from VPP +| | [Documentation] | Delete all lisp locator_set on the VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | _NOTE:_ This KW requires following test case variables: +| | ... | - locator_set_values - Generated locator_set data from +| | ... | KW locator_set data is prepared, which was set on the VPP node. +| | ... +| | ... | *Example:* +| | ... | \| When Delete all LISP locator_set from VPP \ +| | ... | \| ${nodes['DUT1']} \| +| | ... +| | [Arguments] | ${dut_node} +| | Vpp Unset Lisp Locator Set | ${dut_node} | ${locator_set_values} + +| LISP locator_set should be unset +| | [Documentation] | Test if all locator_set are unset from VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| Then LISP locator_set should be unset \| ${nodes['DUT1']} \| +| | ... +| | [Arguments] | ${dut_node} +| | ${show_locator_set}= | Vpp Show Lisp Locator Set | ${dut_node} | ${EMPTY} +| | Lisp Is Empty | ${show_locator_set} + +| Lisp locator_set data use for test reset locator_set are prepared +| | [Documentation] | Generate lisp special type of locator_set data. +| | ... | This data will be use for test reset locator_set. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... | - locator_set_number - Number how many locator_set data +| | ... | it will generate. Type: integer +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | _NOTE:_ This KW sets following test case variables: +| | ... | - locator_set_values - New generate locator_set data. +| | ... | - locator_set_values_vat - New generated locator_set data expected\ +| | ... | from VAT. +| | ... +| | ... | *Example:* +| | ... | \| Given Lisp locator_set data use for test reset locator_set \ +| | ... | are prepared \| ${nodes['DUT1']} \| ${locator_set_number} \| +| | ... +| | [Arguments] | ${dut_node} | ${locator_set_number} +| | ${locator_set_values} | ${locator_set_values_vat}= +| | ... | Generate Duplicate Lisp Locator Set Data +| | ... | ${dut_node} | ${locator_set_number} +| | Set Test Variable | ${locator_set_values} +| | Set Test Variable | ${locator_set_values_vat} + +| Configure LISP eid address +| | [Documentation] | Set the lisp eid address on the VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... | - set_eid - Test eid data. Type: list +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| When Configure LISP eid address \| ${nodes['DUT1']} \ +| | ... | \| ${eid_table} \| +| | ... +| | [Arguments] | ${dut_node} | ${set_eid} +| | Vpp Set Lisp Eid Table | ${dut_node} | ${set_eid} + +| LISP eid address should be set correctly to eid table +| | [Documentation] | Test if the locator_set is set correctly on the VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... | - set_eid - Example eid data, which was set to the VPP node. +| | ... | Type: list +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | _NOTE:_ This KW requires following test case variables: +| | ... | - set_eid - Generated eid data, which will be set to the VPP node. +| | ... +| | ... | *Example:* +| | ... | \| Then LISP eid address should be set correctly to eid table \ +| | ... | \| ${nodes['DUT1']} \| ${eid_table} \| +| | ... +| | [Arguments] | ${dut_node} | ${set_eid} +| | ${show_eid}= | Vpp Show Lisp Eid Table | ${dut_node} +| | Lisp Should Be Equal | ${set_eid} | ${show_eid} + +| Delete all LISP eid address from VPP +| | [Documentation] | Delete all lisp eid address from the VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... | - set_eid - Eid data which will be removed from the VPP node. +| | ... | Type: list +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| When Delete all LISP eid address from VPP \ +| | ... | \| ${nodes['DUT1']} \| ${eid_table} \| +| | ... +| | [Arguments] | ${dut_node} | ${set_eid} +| | Vpp Unset Lisp Eid Table | ${dut_node} | ${set_eid} + +| LISP eid table should be empty +| | [Documentation] | Test if the eid table is empty. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| Then LISP eid table should be empty \| ${nodes['DUT1']} \| +| | ... +| | [Arguments] | ${dut_node} +| | ${show_eid}= | Vpp Show Lisp Eid Table | ${dut_node} +| | Lisp Is Empty | ${show_eid} + +| Configure LISP map resolver address +| | [Documentation] | Set the lisp map resolver address in the VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... | - set_map_resolver - Map resolver data, which will be set on +| | ... | the VPP node. Type: list +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| When Configure LISP map resolver address \| ${nodes['DUT1']} \ +| | ... | \| ${map_resolver} \| +| | ... +| | [Arguments] | ${dut_node} | ${set_map_resolver} +| | Vpp Set Lisp Map Resolver | ${dut_node} | ${set_map_resolver} + +| LISP map resolver address should be configured correctly +| | [Documentation] | Test if the map resolver address is set correctly +| | ... | on the VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... | - set_map_resolver - Map resolver data, which was set on +| | ... | the VPP node. Type: list +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| Then LISP map resolver address should be configured correctly \ +| | ... | \| ${nodes['DUT1']} \| ${map_resolver} \| +| | ... +| | [Arguments] | ${dut_node} | ${set_map_resolver} +| | ${show_map_resolver}= | Vpp Show Lisp Map Resolver | ${dut_node} +| | Lisp Should Be Equal | ${set_map_resolver} | ${show_map_resolver} + +| Delete all LISP map resolver address from VPP +| | [Documentation] | Delete all lisp map resolver address on the VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... | - map_resolver - Map resolver data, which will be remove from +| | ... | the VPP. Type: list +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| When Delete all LISP map resolver address from VPP \ +| | ... | \| ${nodes['DUT1']} \| ${map_resolver} \| +| | ... +| | [Arguments] | ${dut_node} | ${set_map_resolver} +| | Vpp Unset Lisp Map Resolver | ${dut_node} | ${set_map_resolver} + +| LISP map resolver address should be empty +| | [Documentation] | Test if the map resolver are empty. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| Then LISP map resolver address should be empty \ +| | ... | \| ${nodes['DUT1']} \| +| | ... +| | [Arguments] | ${dut_node} +| | ${show_map_resolver}= | Vpp Show Lisp Map Resolver | ${dut_node} +| | Lisp Is Empty | ${show_map_resolver} + +| Enable LISP +| | [Documentation] | Enable LISP on VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| Enable LISP \| ${nodes['DUT1']} \| +| | ... +| | [Arguments] | ${dut_node} +| | Vpp Lisp Enable Disable | ${dut_node} | enable + +| LISP should be enabled +| | [Documentation] | Check if the lisp is enabled. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... | - lisp_status_data - Lisp status data, which was set on +| | ... | the VPP node. Type: list +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| LISP should be enabled \| ${nodes['DUT1']} \ +| | ... | \| ${lisp_status_data} \| +| | ... +| | [Arguments] | ${dut_node} | ${lisp_status_data} +| | ${show_lisp_stat}= | Vpp Show Lisp State | ${dut_node} +| | Lisp Should Be Equal | ${show_lisp_stat} | ${lisp_status_data[1]} + +| Disable LISP +| | [Documentation] | Disable LISP on VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| Disable LISP \| ${nodes['DUT1']} \| +| | ... +| | [Arguments] | ${dut_node} +| | Vpp Lisp Enable Disable | ${dut_node} | disable + +| LISP Should be disabled +| | [Documentation] | LISP Should be disabled. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... | - lisp_status_data - Lisp status data, which was set on +| | ... | the VPP node. Type: list +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| LISP Should be disabled \| ${nodes['DUT1']} \ +| | ... | \| ${lisp_status_data} \| +| | ... +| | [Arguments] | ${dut_node} | ${lisp_status_data} +| | ${show_lisp_stat}= | Vpp Show Lisp State | ${dut_node} +| | Lisp Should Be Equal | ${show_lisp_stat} | ${lisp_status_data[0]} + +| Enable Lisp Gpe +| | [Documentation] | Enable Lisp Gpe on VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| Enable Lisp Gpe \| ${nodes['DUT1']} \| +| | ... +| | [Arguments] | ${dut_node} +| | Vpp Lisp Gpe Enable Disable | ${dut_node} | enable + +| Disable Lisp Gpe +| | [Documentation] | Disable Lisp Gpe on VPP node. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node. Type: dictionary +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| Disable Lisp Gpe \| ${nodes['DUT1']} \| +| | ... +| | [Arguments] | ${dut_node} +| | Vpp Lisp Gpe Enable Disable | ${dut_node} | disable diff --git a/resources/libraries/robot/overlay/lisp_static_adjacency.robot b/resources/libraries/robot/overlay/lisp_static_adjacency.robot new file mode 100644 index 0000000000..f20fd51eb4 --- /dev/null +++ b/resources/libraries/robot/overlay/lisp_static_adjacency.robot @@ -0,0 +1,168 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Documentation | Lisp static adjacency suite keywords +| Resource | resources/libraries/robot/overlay/lisp_api.robot +| Library | resources.libraries.python.LispSetup.LispLocatorSet +| Library | resources.libraries.python.LispSetup.LispLocator +| Library | resources.libraries.python.LispSetup.LispLocalEid +| Library | resources.libraries.python.LispSetup.LispAdjacency +| Library | resources.libraries.python.LispSetup.LispRemoteMapping +| Library | resources.libraries.python.IPv4Util.IPv4Util + +*** Keywords *** +| Configure LISP topology in 3-node circular topology +| | [Documentation] | Set up Lisp static adjacency topology. +| | ... +| | ... | *Arguments:* +| | ... | - dut1_node - DUT1 node. Type: dictionary +| | ... | - dut1_int_name - DUT1 node interface name. Type: string +| | ... | - dut1_int_index - DUT1 node interface index. Type: integer +| | ... | - dut2_node - DUT2 node. Type: dictionary +| | ... | - dut2_int_name - DUT2 node interface name. Type: string +| | ... | - dut2_int_index - DUT2 node interface index. Type: integer +| | ... | - locator_set - Locator set values. Type: dictionary +| | ... | - dut1_eid - Dut1 node eid address. Type: dictionary +| | ... | - dut2_eid - Dut2 node eid address. Type: dictionary +| | ... | - dut1_static_adjacency - Dut1 static adjacency. Type: dictionary +| | ... | - dut2_static_adjacency - Dut2 static address. Type: dictionary +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| Configure LISP topology in 3-node circular topology \| ${dut1_node} \| ${interface_name} \ +| | ... | \| None \| ${dut2_node} \| ${interface_name} \| None \ +| | ... | \| ${locator_set} \| ${dut1_eid} \| ${dut2_eid} \ +| | ... | \| ${dut1_static_adjacency} \| ${dut2_static_adjacency} \| +| | ... +| | [Arguments] | ${dut1_node} | ${dut1_int_name} | ${dut1_int_index} +| | ... | ${dut2_node} | ${dut2_int_name} | ${dut2_int_index} +| | ... | ${locator_set} | ${dut1_eid} | ${dut2_eid} +| | ... | ${dut1_static_adjacency} | ${dut2_static_adjacency} +| | ${dut1_int_index}= | Run Keyword If | ${dut1_int_index} is None +| | | ... | Get Interface Sw Index | ${dut1_node} +| | | ... | ${dut1_int_name} +| | | ... | ELSE | Set Variable | ${dut1_int_index} +| | ${dut2_int_index}= | Run Keyword If | ${dut2_int_index} is None +| | | ... | Get Interface Sw Index | ${dut2_node} +| | | ... | ${dut2_int_name} +| | | ... | ELSE | Set Variable | ${dut2_int_index} +| | Enable Lisp | ${dut1_node} +| | Vpp Add Lisp Locator Set | ${dut1_node} | ${locator_set['locator_name']} +| | Vpp Add Lisp Locator | ${dut1_node} | ${locator_set['locator_name']} +| | ... | ${dut1_int_index} | ${locator_set['priority']} +| | ... | ${locator_set['weight']} +| | Vpp Add Lisp Local Eid | ${dut1_node} | ${dut1_eid['locator_name']} +| | ... | ${dut1_eid['vni']} | ${dut1_eid['eid']} +| | ... | ${dut1_eid['prefix']} +| | Vpp Add Lisp Remote Mapping | ${dut1_node} | ${dut1_static_adjacency['vni']} +| | ... | ${dut1_static_adjacency['deid']} +| | ... | ${dut1_static_adjacency['prefix']} +| | ... | ${dut1_static_adjacency['seid']} +| | ... | ${dut1_static_adjacency['prefix']} +| | ... | ${dut1_static_adjacency['rloc']} +| | Vpp Add Lisp Adjacency | ${dut1_node} | ${dut1_static_adjacency['vni']} +| | ... | ${dut1_static_adjacency['deid']} +| | ... | ${dut1_static_adjacency['prefix']} +| | ... | ${dut1_static_adjacency['seid']} +| | ... | ${dut1_static_adjacency['prefix']} +| | Enable Lisp | ${dut2_node} +| | Vpp Add Lisp Locator Set | ${dut2_node} | ${locator_set['locator_name']} +| | Vpp Add Lisp Locator | ${dut2_node} | ${locator_set['locator_name']} +| | ... | ${dut2_int_index} | ${locator_set['priority']} +| | ... | ${locator_set['weight']} +| | Vpp Add Lisp Local Eid | ${dut2_node} | ${dut2_eid['locator_name']} +| | ... | ${dut2_eid['vni']} | ${dut2_eid['eid']} +| | ... | ${dut2_eid['prefix']} +| | Vpp Add Lisp Remote Mapping | ${dut2_node} | ${dut2_static_adjacency['vni']} +| | ... | ${dut2_static_adjacency['deid']} +| | ... | ${dut2_static_adjacency['prefix']} +| | ... | ${dut2_static_adjacency['seid']} +| | ... | ${dut2_static_adjacency['prefix']} +| | ... | ${dut2_static_adjacency['rloc']} +| | Vpp Add Lisp Adjacency | ${dut2_node} | ${dut2_static_adjacency['vni']} +| | ... | ${dut2_static_adjacency['deid']} +| | ... | ${dut2_static_adjacency['prefix']} +| | ... | ${dut2_static_adjacency['seid']} +| | ... | ${dut2_static_adjacency['prefix']} + +| Change LISP Configuration +| | [Documentation] | Change configuration of the Lisp protocol. +| | ... +| | ... | *Arguments:* +| | ... | - dut1_node - DUT1 node. Type: dictionary +| | ... | - dut2_node - DUT2 node. Type: dictionary +| | ... | - dut1_to_dut2 - DUT1 towards DUT2 interface name. Type: string +| | ... | - dut2_to_dut1 - DUT2 towards DUT1 interface name. Type: string +| | ... | - dut1_to_dut2_mac - DUT1 towards DUT2 interface mac address. +| | ... | Type: string +| | ... | - dut2_to_dut1_mac - DUT2 towards DUT1 interface mac address. +| | ... | Type: string +| | ... | - new_dut1_ip - New DUT1 towards DUT2 interface IP address. +| | ... | Type: string +| | ... | - new_dut2_ip - New DUT2 towards DUT1 interface IP address. +| | ... | Type: string +| | ... | - prefix - Prefix of the DUT nodes. Type: integer +| | ... | - old_dut1_static_adjacency - Old DUT1 static adjacency. +| | ... | Type: dictionary +| | ... | - new_dut1_static_adjacency - New DUT1 static adjacency. +| | ... | Type: dictionary +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| Change LISP Configuration \| ${dut1_node} \| ${dut2_node} \ +| | ... | \| ${dut1_to_dut2} \| ${dut2_to_dut1} | "08:00:27:20:e0:0d" \ +| | ... | \| "08:00:27:b1:94:b1" \| "6.3.0.1" \| "6.3.0.20" \| "24" \ +| | ... | \| ${old_dut1_static_adjacency} \| ${new_dut1_static_adjacency} \| +| | ... +| | [Arguments] | ${dut1_node} | ${dut2_node} | ${dut1_to_dut2} +| | ... | ${dut2_to_dut1} | ${dut1_to_dut2_mac} | ${dut2_to_dut1_mac} +| | ... | ${new_dut1_ip} | ${new_dut2_ip} | ${prefix} +| | ... | ${old_dut1_static_adjacency} | ${new_dut1_static_adjacency} +| | Flush IPv4 Addresses "${dut2_to_dut1}" "${dut2_node}" +| | Vpp Del Lisp Remote Mapping | ${dut1_node} +| | ... | ${old_dut1_static_adjacency['vni']} +| | ... | ${old_dut1_static_adjacency['deid']} +| | ... | ${old_dut1_static_adjacency['prefix']} +| | ... | ${old_dut1_static_adjacency['seid']} +| | ... | ${old_dut1_static_adjacency['prefix']} +| | ... | ${old_dut1_static_adjacency['rloc']} +| | Vpp Del Lisp Adjacency | ${dut1_node} +| | ... | ${old_dut1_static_adjacency['vni']} +| | ... | ${old_dut1_static_adjacency['deid']} +| | ... | ${old_dut1_static_adjacency['prefix']} +| | ... | ${old_dut1_static_adjacency['seid']} +| | ... | ${old_dut1_static_adjacency['prefix']} +| | Set Interface Address | ${dut2_node} | ${dut2_to_dut1} +| | ... | ${new_dut2_ip} | ${prefix} +| | Add Arp On Dut | ${dut1_node} | ${dut1_to_dut2} | ${new_dut2_ip} +| | ... | ${dut2_to_dut1_mac} +| | Add Arp On Dut | ${dut2_node} | ${dut2_to_dut1} | ${new_dut1_ip} +| | ... | ${dut1_to_dut2_mac} +| | Vpp Add Lisp Remote Mapping | ${dut1_node} +| | ... | ${new_dut1_static_adjacency['vni']} +| | ... | ${new_dut1_static_adjacency['deid']} +| | ... | ${new_dut1_static_adjacency['prefix']} +| | ... | ${new_dut1_static_adjacency['seid']} +| | ... | ${new_dut1_static_adjacency['prefix']} +| | ... | ${new_dut1_static_adjacency['rloc']} +| | Vpp Add Lisp Adjacency | ${dut1_node} +| | ... | ${new_dut1_static_adjacency['vni']} +| | ... | ${new_dut1_static_adjacency['deid']} +| | ... | ${new_dut1_static_adjacency['prefix']} +| | ... | ${new_dut1_static_adjacency['seid']} +| | ... | ${new_dut1_static_adjacency['prefix']} diff --git a/resources/libraries/robot/overlay/lispgpe.robot b/resources/libraries/robot/overlay/lispgpe.robot new file mode 100644 index 0000000000..d5115d8242 --- /dev/null +++ b/resources/libraries/robot/overlay/lispgpe.robot @@ -0,0 +1,126 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Documentation | LISP-gpe encapsulation suite keywords +| Library | resources.libraries.python.topology.Topology +| Resource | resources/libraries/robot/overlay/lisp_api.robot +| Library | resources.libraries.python.LispSetup.LispLocatorSet +| Library | resources.libraries.python.LispSetup.LispLocator +| Library | resources.libraries.python.LispSetup.LispLocalEid +| Library | resources.libraries.python.LispSetup.LispAdjacency +| Library | resources.libraries.python.LispSetup.LispRemoteMapping +| Library | resources.libraries.python.LispSetup.LispEidTableMap + +*** Keywords *** +| Configure LISP GPE topology in 3-node circular topology +| | [Documentation] | Configure LISP GPE topology in 3-node circular topology. +| | ... +| | ... | *Arguments:* +| | ... | - dut1_node - DUT1 node. Type: dictionary +| | ... | - dut1_if - DUT1 node interface. Type: string +| | ... | - dut1_int_index - DUT1 node interface index. Type: integer +| | ... | - dut2_node - DUT2 node. Type: dictionary +| | ... | - dut2_if - DUT2 node interface. Type: string +| | ... | - dut2_int_index - DUT2 node interface index. Type: integer +| | ... | - locator_set - Locator set values. Type: dictionary +| | ... | - dut1_eid - DUT1 node eid address. Type: dictionary +| | ... | - dut2_eid - DUT2 node eid address. Type: dictionary +| | ... | - dut1_static_adjacency - DUT1 static adjacency. Type: dictionary +| | ... | - dut2_static_adjacency - DUT2 static adjacency. Type: dictionary +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| Configure LISP GPE topology in 3-node circular topology \| ${dut1_node} \| ${interface_name} \ +| | ... | \| None \| ${dut2_node} \| ${interface_name} \| None \ +| | ... | \| ${locator_set} \| ${dut1_eid} \| ${dut2_eid} \ +| | ... | \| ${dut1_static_adjacency} \| ${dut2_static_adjacency} \| +| | ... +| | [Arguments] +| | ... | ${dut1_node} | ${dut1_if} | ${dut1_int_index} +| | ... | ${dut2_node} | ${dut2_if} | ${dut2_int_index} +| | ... | ${locator_set} | ${dut1_eid} | ${dut2_eid} +| | ... | ${dut1_static_adjacency} | ${dut2_static_adjacency} +| | ... | ${vni_table}=0 | ${vrf_table}=0 +| | ... +# DUT1 settings: +| | ${dut1_int_index}= | Run Keyword If | ${dut1_int_index} is None +| | | ... | Get Interface Sw Index | ${dut1_node} | ${dut1_if} +| | | ... | ELSE | Set Variable | ${dut1_int_index} +| | Enable Lisp | ${dut1_node} +| | Enable Lisp GPE | ${dut1_node} +| | Vpp Add Lisp Locator Set | ${dut1_node} +| | ... | ${locator_set['locator_name']} +| | Vpp Add Lisp Locator | ${dut1_node} +| | ... | ${locator_set['locator_name']} +| | ... | ${dut1_int_index} +| | ... | ${locator_set['priority']} +| | ... | ${locator_set['weight']} +| | Vpp Lisp Eid Table Mapping | ${dut1_node} +| | ... | ${vni_table} +| | ... | vrf=${vrf_table} +| | Vpp Add Lisp Local Eid | ${dut1_node} +| | ... | ${dut1_eid['locator_name']} +| | ... | ${vni_table} +| | ... | ${dut1_eid['eid']} +| | ... | ${dut1_eid['prefix']} +| | Vpp Add Lisp Remote Mapping | ${dut1_node} +| | ... | ${vni_table} +| | ... | ${dut1_static_adjacency['deid']} +| | ... | ${dut1_static_adjacency['prefix']} +| | ... | ${dut1_static_adjacency['seid']} +| | ... | ${dut1_static_adjacency['prefix']} +| | ... | ${dut1_static_adjacency['rloc']} +| | Vpp Add Lisp Adjacency | ${dut1_node} +| | ... | ${vni_table} +| | ... | ${dut1_static_adjacency['deid']} +| | ... | ${dut1_static_adjacency['prefix']} +| | ... | ${dut1_static_adjacency['seid']} +| | ... | ${dut1_static_adjacency['prefix']} +| | ... +# DUT2 settings: +| | ${dut2_int_index}= | Run Keyword If | ${dut2_int_index} is None +| | | ... | Get Interface Sw Index | ${dut2_node} | ${dut2_if} +| | | ... | ELSE | Set Variable | ${dut2_int_index} +| | Enable Lisp | ${dut2_node} +| | Enable Lisp GPE | ${dut2_node} +| | Vpp Add Lisp Locator Set | ${dut2_node} +| | ... | ${locator_set['locator_name']} +| | Vpp Add Lisp Locator | ${dut2_node} +| | ... | ${locator_set['locator_name']} +| | ... | ${dut2_int_index} +| | ... | ${locator_set['priority']} +| | ... | ${locator_set['weight']} +| | Vpp Lisp Eid Table Mapping | ${dut2_node} +| | ... | ${vni_table} +| | ... | vrf=${vrf_table} +| | Vpp Add Lisp Local Eid | ${dut2_node} +| | ... | ${dut2_eid['locator_name']} +| | ... | ${vni_table} +| | ... | ${dut2_eid['eid']} +| | ... | ${dut2_eid['prefix']} +| | Vpp Add Lisp Remote Mapping | ${dut2_node} +| | ... | ${vni_table} +| | ... | ${dut2_static_adjacency['deid']} +| | ... | ${dut2_static_adjacency['prefix']} +| | ... | ${dut2_static_adjacency['seid']} +| | ... | ${dut2_static_adjacency['prefix']} +| | ... | ${dut2_static_adjacency['rloc']} +| | Vpp Add Lisp Adjacency | ${dut2_node} +| | ... | ${vni_table} +| | ... | ${dut2_static_adjacency['deid']} +| | ... | ${dut2_static_adjacency['prefix']} +| | ... | ${dut2_static_adjacency['seid']} +| | ... | ${dut2_static_adjacency['prefix']} diff --git a/resources/libraries/robot/overlay/vxlan.robot b/resources/libraries/robot/overlay/vxlan.robot new file mode 100644 index 0000000000..69f4c10a88 --- /dev/null +++ b/resources/libraries/robot/overlay/vxlan.robot @@ -0,0 +1,135 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | Collections +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/l2/l2_xconnect.robot +| Library | resources.libraries.python.L2Util +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.IPv4Util +| Library | resources.libraries.python.IPv6Util +| Library | resources.libraries.python.IPv4Setup +| Library | resources.libraries.python.NodePath + +*** Keywords *** +| Configure IP addresses and neighbors on interfaces +| | [Documentation] | *Set IPv4 addresses on interfaces on DUTs.* +| | ... | If interface index is None then is determines with Get Interface Sw Index +| | ... | in this case it is required the interface to be present in topology dict. +| | ... | It also executes VPP IP Probe to determine MACs to IPs on DUTs +| | ... +| | ... | _Set testcase variables with IP addresses and prefix length:_ +| | ... | - ${dut1s_ip_address} +| | ... | - ${dut2s_ip_address} +| | ... | - ${duts_ip_address_prefix} +| | ... +| | [Arguments] | ${DUT1} | ${DUT1_INT_NAME} | ${DUT1_INT_INDEX} +| | ... | ${DUT2} | ${DUT2_INT_NAME} | ${DUT2_INT_INDEX} +| | Set Test Variable | ${dut1s_ip_address} | 172.16.0.1 +| | Set Test Variable | ${dut2s_ip_address} | 172.16.0.2 +| | Set Test Variable | ${duts_ip_address_prefix} | 24 +| | ${DUT1_INT_KEY}= | Run Keyword If | ${DUT1_INT_INDEX} is None +| | | ... | Get Interface by name | ${DUT1} | ${DUT1_INT_NAME} +| | ${DUT2_INT_KEY}= | Run Keyword If | ${DUT2_INT_INDEX} is None +| | | ... | Get Interface by name | ${DUT2} | ${DUT2_INT_NAME} +| | ${DUT1_INT_INDEX}= | Run Keyword If | ${DUT1_INT_INDEX} is None +| | | ... | Get Interface Sw Index | ${DUT1} | ${DUT1_INT_KEY} +| | | ... | ELSE | Set Variable | ${DUT1_INT_INDEX} +| | ${DUT2_INT_INDEX}= | Run Keyword If | ${DUT2_INT_INDEX} is None +| | | ... | Get Interface Sw Index | ${DUT2} | ${DUT2_INT_KEY} +| | | ... | ELSE | Set Variable | ${DUT2_INT_INDEX} +| | ${DUT1_INT_MAC}= | Vpp Get Interface Mac | ${DUT1} | ${DUT1_INT_INDEX} +| | ${DUT2_INT_MAC}= | Vpp Get Interface Mac | ${DUT2} | ${DUT2_INT_INDEX} +| | Set Interface Address | ${DUT1} | ${DUT1_INT_INDEX} +| | ... | ${dut1s_ip_address} | ${duts_ip_address_prefix} +| | Set Interface Address | ${DUT2} | ${DUT2_INT_INDEX} +| | ... | ${dut2s_ip_address} | ${duts_ip_address_prefix} +| | Add IP Neighbor | ${DUT1} | ${DUT1_INT_INDEX} | ${dut2s_ip_address} | ${DUT2_INT_MAC} +| | Add IP Neighbor | ${DUT2} | ${DUT2_INT_INDEX} | ${dut1s_ip_address} | ${DUT1_INT_MAC} + +| Add interfaces to L2BD +| | [Arguments] | ${DUT} | ${BID} | ${INTERFACE_1} | ${INTERFACE_2} +| | Vpp Add L2 Bridge Domain | ${DUT} | ${BID} | ${INTERFACE_1} | ${INTERFACE_2} + +| Create vlan interfaces for VXLAN +| | [Documentation] | *Create VLAN subinterface on interfaces on DUTs with given VLAN ID.* +| | ... +| | ... | _Set testcase variables with name and index of created interfaces:_ +| | ... | - ${dut1s_vlan_name} +| | ... | - ${dut1s_vlan_index} +| | ... | - ${dut2s_vlan_name} +| | ... | - ${dut2s_vlan_index} +| | ... +| | [Arguments] | ${VLAN} | ${DUT1} | ${INT1} | ${DUT2} | ${INT2} +| | ${INT1_NAME}= | Get interface name | ${DUT1} | ${INT1} +| | ${INT2_NAME}= | Get interface name | ${DUT2} | ${INT2} +| | ${dut1s_vlan_name} | ${dut1s_vlan_index}= | Create Vlan Subinterface +| | | ... | ${DUT1} | ${INT1_NAME} | ${VLAN} +| | ${dut2s_vlan_name} | ${dut2s_vlan_index}= | Create Vlan Subinterface +| | | ... | ${DUT2} | ${INT2_NAME} | ${VLAN} +| | Set Interface State | ${DUT1} | ${dut1s_vlan_index} | up +| | Set Interface State | ${DUT2} | ${dut2s_vlan_index} | up +| | Set Test Variable | ${dut1s_vlan_name} +| | Set Test Variable | ${dut1s_vlan_index} +| | Set Test Variable | ${dut2s_vlan_name} +| | Set Test Variable | ${dut2s_vlan_index} + +| Send VXLAN encapsulated packet and verify received packet +| | [Documentation] | Send VXLAN encapsulated Ethernet frame and check \ +| | ... | received one. +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - Node where to run traffic script. Type: dictionary +| | ... | - tx_if - Interface from where send VXLAN packet. Type: string +| | ... | - rx_if - Interface where receive VXLAN packet. Type: string +| | ... | - tx_src_mac - Source MAC address of sent packet. Type: string +| | ... | - tx_dst_mac - Destination MAC address of sent packet. Type: string +| | ... | - tx_src_ip - Source IP address of sent VXLAN packet. Type: string +| | ... | - tx_dst_ip - Destination IP address of sent VXLAN packet. +| | ... | Type: string +| | ... | - tx_vni - VNI of sent VXLAN packet. Type: string +| | ... | - rx_src_ip - Source IP address of received VXLAN packet. Type: string +| | ... | - rx_dst_ip - Destination IP address of received VXLAN packet. +| | ... | Type: string +| | ... | - rx_vni - VNI of received VXLAN packet. Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send VXLAN encapsulated packet and verify received packet \| ${tg_node} \| port4 \| port4 \ +| | ... | \| fa:16:3e:6d:f9:c5 \| fa:16:3e:e6:6d:9a \| 192.168.0.1 \ +| | ... | \| 192.168.0.2 \| ${101} \| 192.168.0.2 \| 192.168.0.1 \| ${102} \| +| | ... +| | [Arguments] | ${tg_node} | ${tx_if} | ${rx_if} +| | ... | ${tx_src_mac} | ${tx_dst_mac} +| | ... | ${tx_src_ip} | ${tx_dst_ip} | ${tx_vni} +| | ... | ${rx_src_ip} | ${rx_dst_ip} | ${rx_vni} +| | ${tx_if_name}= | Get interface name | ${tg_node} | ${tx_if} +| | ${rx_if_name}= | Get interface name | ${tg_node} | ${rx_if} +| | ${args}= | Catenate +| | ... | --tx_if ${tx_if_name} +| | ... | --rx_if ${rx_if_name} +| | ... | --tx_src_mac ${tx_src_mac} +| | ... | --tx_dst_mac ${tx_dst_mac} +| | ... | --tx_src_ip ${tx_src_ip} +| | ... | --tx_dst_ip ${tx_dst_ip} +| | ... | --tx_vni ${tx_vni} +| | ... | --rx_src_ip ${rx_src_ip} +| | ... | --rx_dst_ip ${rx_dst_ip} +| | ... | --rx_vni ${rx_vni} +| | Run Traffic Script On Node | send_vxlan_check_vxlan.py | ${tg_node} | ${args} diff --git a/resources/libraries/robot/performance/performance_configuration.robot b/resources/libraries/robot/performance/performance_configuration.robot new file mode 100644 index 0000000000..17b8c68545 --- /dev/null +++ b/resources/libraries/robot/performance/performance_configuration.robot @@ -0,0 +1,1597 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | Collections +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.DpdkUtil +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.VhostUser +| Library | resources.libraries.python.TrafficGenerator +| Library | resources.libraries.python.TrafficGenerator.TGDropRateSearchImpl +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/counters.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/l2/l2_xconnect.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| Documentation | Performance suite keywords - configuration. + +*** Keywords *** +| Set interfaces in path in 2-node circular topology up +| | [Documentation] +| | ... | *Set UP state on VPP interfaces in path on nodes in 2-node circular +| | ... | topology.* +| | ... +| | Set Interface State | ${dut1} | ${dut1_if1} | up +| | Set Interface State | ${dut1} | ${dut1_if2} | up +| | Vpp Node Interfaces Ready Wait | ${dut1} + +| Set interfaces in path in 3-node circular topology up +| | [Documentation] +| | ... | *Set UP state on VPP interfaces in path on nodes in 3-node circular +| | ... | topology.* +| | ... +| | Set Interface State | ${dut1} | ${dut1_if1} | up +| | Set Interface State | ${dut1} | ${dut1_if2} | up +| | Set Interface State | ${dut2} | ${dut2_if1} | up +| | Set Interface State | ${dut2} | ${dut2_if2} | up +| | Vpp Node Interfaces Ready Wait | ${dut1} +| | Vpp Node Interfaces Ready Wait | ${dut2} + +| Initialize IPSec in 3-node circular topology +| | [Documentation] +| | ... | Set UP state on VPP interfaces in path on nodes in 3-node circular +| | ... | topology. Get the interface MAC addresses and setup ARP on all VPP +| | ... | interfaces. Setup IPv4 addresses with /24 prefix on DUT-TG and +| | ... | DUT1-DUT2 links. Set routing for encrypted traffic on both DUT nodes +| | ... | with prefix /8 and next hop of neighbour DUT or TG interface IPv4 +| | ... | address. +| | ... +| | VPP Show Crypto Device Mapping | ${dut1} +| | VPP Show Crypto Device Mapping | ${dut2} +| | Set interfaces in path in 3-node circular topology up +| | ${tg_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} +| | ${tg_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} +| | ${dut1_if1_mac}= | Get Interface MAC | ${dut1} | ${dut1_if1} +| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} +| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} +| | ${dut2_if2_mac}= | Get Interface MAC | ${dut2} | ${dut2_if2} +| | Set Interface State | ${dut1} | ${dut1_if1} | up +| | Set Interface State | ${dut1} | ${dut1_if2} | up +| | Set Interface State | ${dut2} | ${dut2_if1} | up +| | Set Interface State | ${dut2} | ${dut2_if2} | up +| | Set Test Variable | ${tg_if1_mac} +| | Set Test Variable | ${tg_if2_mac} +| | Set Test Variable | ${dut1_if1_mac} +| | Set Test Variable | ${dut1_if2_mac} +| | Set Test Variable | ${dut2_if1_mac} +| | Set Test Variable | ${dut2_if2_mac} +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1} +| | ... | ${dut1_if1_ip4} | 24 +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} +| | ... | ${dut1_if2_ip4} | 24 +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} +| | ... | ${dut2_if1_ip4} | 24 +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if2} +| | ... | ${dut2_if2_ip4} | 24 +| | Add arp on dut | ${dut1} | ${dut1_if1} | ${tg_if1_ip4} | ${tg_if1_mac} +| | Add arp on dut | ${dut1} | ${dut1_if2} | ${dut2_if1_ip4} | ${dut2_if1_mac} +| | Add arp on dut | ${dut2} | ${dut2_if2} | ${tg_if2_ip4} | ${tg_if2_mac} +| | Add arp on dut | ${dut2} | ${dut2_if1} | ${dut1_if2_ip4} | ${dut1_if2_mac} +| | Vpp Route Add | ${dut1} | ${laddr_ip4} | 8 | ${tg_if1_ip4} | ${dut1_if1} +| | Vpp Route Add | ${dut2} | ${raddr_ip4} | 8 | ${tg_if2_ip4} | ${dut2_if2} + +| Initialize IPv4 forwarding in 3-node circular topology +| | [Documentation] +| | ... | Set UP state on VPP interfaces in path on nodes in 3-node circular +| | ... | topology. Get the interface MAC addresses and setup ARP on all VPP +| | ... | interfaces. Setup IPv4 addresses with /24 prefix on DUT-TG links and +| | ... | /30 prefix on DUT1-DUT2 link. Set routing on both DUT nodes with +| | ... | prefix /24 and next hop of neighbour DUT interface IPv4 address. +| | ... +| | Set Interface State | ${dut1} | ${dut1_if1} | up +| | Set Interface State | ${dut1} | ${dut1_if2} | up +| | Set Interface State | ${dut2} | ${dut2_if1} | up +| | Set Interface State | ${dut2} | ${dut2_if2} | up +| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} +| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} +| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} +| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} +| | dut1_v4.set_arp | ${dut1_if1} | 10.10.10.2 | ${tg1_if1_mac} +| | dut1_v4.set_arp | ${dut1_if2} | 1.1.1.2 | ${dut2_if1_mac} +| | dut2_v4.set_arp | ${dut2_if1} | 1.1.1.1 | ${dut1_if2_mac} +| | dut2_v4.set_arp | ${dut2_if2} | 20.20.20.2 | ${tg1_if2_mac} +| | dut1_v4.set_ip | ${dut1_if1} | 10.10.10.1 | 24 +| | dut1_v4.set_ip | ${dut1_if2} | 1.1.1.1 | 30 +| | dut2_v4.set_ip | ${dut2_if1} | 1.1.1.2 | 30 +| | dut2_v4.set_ip | ${dut2_if2} | 20.20.20.1 | 24 +| | dut1_v4.set_route | 20.20.20.0 | 24 | 1.1.1.2 | ${dut1_if2} +| | dut2_v4.set_route | 10.10.10.0 | 24 | 1.1.1.1 | ${dut2_if1} +| | All Vpp Interfaces Ready Wait | ${nodes} + +| Initialize IPv4 forwarding in 2-node circular topology +| | [Documentation] +| | ... | Set UP state on VPP interfaces in path on nodes in 2-node circular +| | ... | topology. Get the interface MAC addresses and setup ARP on all VPP +| | ... | interfaces. Setup IPv4 addresses with /24 prefix on DUT-TG links and +| | ... | /30 prefix on DUT1 link. Set routing on DUT node with prefix /24 and +| | ... | next hop of neighbour DUT interface IPv4 address. +| | ... +| | Set Interface State | ${dut1} | ${dut1_if1} | up +| | Set Interface State | ${dut1} | ${dut1_if2} | up +| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} +| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} +| | dut1_v4.set_arp | ${dut1_if1} | 10.10.10.3 | ${tg1_if1_mac} +| | dut1_v4.set_arp | ${dut1_if2} | 20.20.20.3 | ${tg1_if2_mac} +| | dut1_v4.set_ip | ${dut1_if1} | 10.10.10.2 | 24 +| | dut1_v4.set_ip | ${dut1_if2} | 20.20.20.2 | 24 +| | All Vpp Interfaces Ready Wait | ${nodes} + +| Initialize IPv4 forwarding with scaling in 3-node circular topology +| | [Documentation] +| | ... | Custom setup of IPv4 topology with scalability of ip routes on all +| | ... | DUT nodes in 3-node circular topology +| | ... +| | ... | *Arguments:* +| | ... | - ${count} - IP route count. Type: integer +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Initialize IPv4 forwarding with scaling in 3-node circular \ +| | ... | topology \| 100000 \| +| | ... +| | [Arguments] | ${count} +| | ... +| | Set Interface State | ${dut1} | ${dut1_if1} | up +| | Set Interface State | ${dut1} | ${dut1_if2} | up +| | Set Interface State | ${dut2} | ${dut2_if1} | up +| | Set Interface State | ${dut2} | ${dut2_if2} | up +| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} +| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} +| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} +| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} +| | Add arp on dut | ${dut1} | ${dut1_if1} | 1.1.1.1 | ${tg1_if1_mac} +| | Add arp on dut | ${dut1} | ${dut1_if2} | 2.2.2.2 | ${dut2_if1_mac} +| | Add arp on dut | ${dut2} | ${dut2_if1} | 2.2.2.1 | ${dut1_if2_mac} +| | Add arp on dut | ${dut2} | ${dut2_if2} | 3.3.3.1 | ${tg1_if2_mac} +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1} | 1.1.1.2 | 30 +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} | 2.2.2.1 | 30 +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} | 2.2.2.2 | 30 +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if2} | 3.3.3.2 | 30 +| | Vpp Route Add | ${dut1} | 10.0.0.0 | 32 | 1.1.1.1 | ${dut1_if1} +| | ... | count=${count} +| | Vpp Route Add | ${dut1} | 20.0.0.0 | 32 | 2.2.2.2 | ${dut1_if2} +| | ... | count=${count} +| | Vpp Route Add | ${dut2} | 10.0.0.0 | 32 | 2.2.2.1 | ${dut2_if1} +| | ... | count=${count} +| | Vpp Route Add | ${dut2} | 20.0.0.0 | 32 | 3.3.3.1 | ${dut2_if2} +| | ... | count=${count} +| | All Vpp Interfaces Ready Wait | ${nodes} + +| Initialize IPv4 forwarding with vhost in 3-node circular topology +| | [Documentation] +| | ... | Create vhost-user interfaces in VPP. Set UP state of all VPP +| | ... | interfaces in path on nodes in 3-node circular topology. Create 2 +| | ... | FIB tables on each DUT with multipath routing. Assign pair of +| | ... | Physical and Virtual interfaces on both nodes to each FIB table. +| | ... | Setup IPv4 addresses with /30 prefix on DUT-TG links and /30 prefix +| | ... | on DUT1-DUT2 link. Set routing on all DUT nodes in all FIB tables +| | ... | with prefix /24 and next hop of neighbour IPv4 address. Setup +| | ... | ARP on all VPP interfaces. +| | ... +| | ... | *Arguments:* +| | ... | - sock1 - Sock path for first Vhost-User interface. Type: string +| | ... | - sock2 - Sock path for second Vhost-User interface. Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| IPv4 forwarding with vhost initialized in a 3-node circular \ +| | ... | topology \| /tmp/sock1 \| /tmp/sock2 \| +| | ... +| | [Arguments] | ${sock1} | ${sock2} +| | ... +| | Set interfaces in path in 3-node circular topology up +| | Configure vhost interfaces for L2BD forwarding | ${dut1} +| | ... | ${sock1} | ${sock2} +| | ${dut1_vif1}= | Set Variable | ${vhost_if1} +| | ${dut1_vif2}= | Set Variable | ${vhost_if2} +| | Set Interface State | ${dut1} | ${dut1_vif1} | up +| | Set Interface State | ${dut1} | ${dut1_vif2} | up +| | Configure vhost interfaces for L2BD forwarding | ${dut2} +| | ... | ${sock1} | ${sock2} +| | ${dut2_vif1}= | Set Variable | ${vhost_if1} +| | ${dut2_vif2}= | Set Variable | ${vhost_if2} +| | Set Interface State | ${dut2} | ${dut2_vif1} | up +| | Set Interface State | ${dut2} | ${dut2_vif2} | up +| | ${dut1_vif1_idx}= | Get Interface SW Index | ${dut1} | ${dut1_vif1} +| | ${dut1_vif2_idx}= | Get Interface SW Index | ${dut1} | ${dut1_vif2} +| | ${dut1_if1_idx}= | Get Interface SW Index | ${dut1} | ${dut1_if1} +| | ${dut1_if2_idx}= | Get Interface SW Index | ${dut1} | ${dut1_if2} +| | ${dut2_vif1_idx}= | Get Interface SW Index | ${dut2} | ${dut2_vif1} +| | ${dut2_vif2_idx}= | Get Interface SW Index | ${dut2} | ${dut2_vif2} +| | ${dut2_if1_idx}= | Get Interface SW Index | ${dut2} | ${dut2_if1} +| | ${dut2_if2_idx}= | Get Interface SW Index | ${dut2} | ${dut2_if2} +| | Add fib table | ${dut1} | 20.20.20.0 | 24 | ${fib_table_1} +| | ... | via 4.4.4.2 sw_if_index ${dut1_vif1_idx} multipath +| | Add fib table | ${dut1} | 10.10.10.0 | 24 | ${fib_table_1} +| | ... | via 1.1.1.2 sw_if_index ${dut1_if1_idx} multipath +| | Add fib table | ${dut1} | 20.20.20.0 | 24 | ${fib_table_2} +| | ... | via 2.2.2.2 sw_if_index ${dut1_if2_idx} multipath +| | Add fib table | ${dut1} | 10.10.10.0 | 24 | ${fib_table_2} +| | ... | via 5.5.5.2 sw_if_index ${dut1_vif2_idx} multipath +| | Add fib table | ${dut2} | 10.10.10.0 | 24 | ${fib_table_1} +| | ... | via 2.2.2.1 sw_if_index ${dut2_if1_idx} multipath +| | Add fib table | ${dut2} | 20.20.20.0 | 24 | ${fib_table_1} +| | ... | via 4.4.4.1 sw_if_index ${dut2_vif1_idx} multipath +| | Add fib table | ${dut2} | 10.10.10.0 | 24 | ${fib_table_2} +| | ... | via 5.5.5.2 sw_if_index ${dut2_vif2_idx} multipath +| | Add fib table | ${dut2} | 20.20.20.0 | 24 | ${fib_table_2} +| | ... | via 3.3.3.2 sw_if_index ${dut2_if2_idx} multipath +| | Assign Interface To Fib Table | ${dut1} | ${dut1_if1} | ${fib_table_1} +| | Assign Interface To Fib Table | ${dut1} | ${dut1_vif1} | ${fib_table_1} +| | Assign Interface To Fib Table | ${dut1} | ${dut1_if2} | ${fib_table_2} +| | Assign Interface To Fib Table | ${dut1} | ${dut1_vif2} | ${fib_table_2} +| | Assign Interface To Fib Table | ${dut2} | ${dut2_if1} | ${fib_table_1} +| | Assign Interface To Fib Table | ${dut2} | ${dut2_vif1} | ${fib_table_1} +| | Assign Interface To Fib Table | ${dut2} | ${dut2_if2} | ${fib_table_2} +| | Assign Interface To Fib Table | ${dut2} | ${dut2_vif2} | ${fib_table_2} +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1} | 1.1.1.2 | 30 +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} | 2.2.2.1 | 30 +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_vif1} | 4.4.4.1 | 30 +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_vif2} | 5.5.5.1 | 30 +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} | 2.2.2.2 | 30 +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if2} | 3.3.3.1 | 30 +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_vif1} | 4.4.4.1 | 30 +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_vif2} | 5.5.5.1 | 30 +| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} +| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} +| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} +| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} +| | ${dut1_vif1_mac}= | Get Vhost User Mac By Sw Index | ${dut1} +| | ... | ${dut1_vif1_idx} +| | ${dut1_vif2_mac}= | Get Vhost User Mac By Sw Index | ${dut1} +| | ... | ${dut1_vif2_idx} +| | ${dut2_vif1_mac}= | Get Vhost User Mac By Sw Index | ${dut2} +| | ... | ${dut2_vif1_idx} +| | ${dut2_vif2_mac}= | Get Vhost User Mac By Sw Index | ${dut2} +| | ... | ${dut2_vif2_idx} +| | Set Test Variable | ${dut1_vif1_mac} +| | Set Test Variable | ${dut1_vif2_mac} +| | Set Test Variable | ${dut2_vif1_mac} +| | Set Test Variable | ${dut2_vif2_mac} +| | Add arp on dut | ${dut1} | ${dut1_if1} | 1.1.1.1 | ${tg1_if1_mac} +| | Add arp on dut | ${dut1} | ${dut1_if2} | 2.2.2.2 | ${dut2_if1_mac} +| | Add arp on dut | ${dut1} | ${dut1_vif1} | 4.4.4.2 | 52:54:00:00:04:01 +| | Add arp on dut | ${dut1} | ${dut1_vif2} | 5.5.5.2 | 52:54:00:00:04:02 +| | Add arp on dut | ${dut2} | ${dut2_if1} | 2.2.2.1 | ${dut1_if2_mac} +| | Add arp on dut | ${dut2} | ${dut2_if2} | 3.3.3.2 | ${tg1_if2_mac} +| | Add arp on dut | ${dut2} | ${dut2_vif1} | 4.4.4.2 | 52:54:00:00:04:01 +| | Add arp on dut | ${dut2} | ${dut2_vif2} | 5.5.5.2 | 52:54:00:00:04:02 +| | Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | 4.4.4.2 | ${dut1_vif1} +| | ... | vrf=${fib_table_1} +| | Vpp Route Add | ${dut1} | 10.10.10.0 | 24 | 1.1.1.1 | ${dut1_if1} +| | ... | vrf=${fib_table_1} +| | Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | 2.2.2.2 | ${dut1_if2} +| | ... | vrf=${fib_table_2} +| | Vpp Route Add | ${dut1} | 10.10.10.0 | 24 | 5.5.5.2 | ${dut1_vif2} +| | ... | vrf=${fib_table_2} +| | Vpp Route Add | ${dut2} | 20.20.20.0 | 24 | 4.4.4.2 | ${dut2_vif1} +| | ... | vrf=${fib_table_1} +| | Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | 2.2.2.1 | ${dut2_if1} +| | ... | vrf=${fib_table_1} +| | Vpp Route Add | ${dut2} | 20.20.20.0 | 24 | 3.3.3.2 | ${dut2_if2} +| | ... | vrf=${fib_table_2} +| | Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | 5.5.5.2 | ${dut2_vif2} +| | ... | vrf=${fib_table_2} + +| Initialize IPv4 forwarding with vhost for '${nr}' VMs in 3-node circular topology +| | [Documentation] +| | ... | Create pairs of Vhost-User interfaces for defined number of VMs on all +| | ... | VPP nodes. Set UP state of all VPP interfaces in path. Create ${nr}+1 +| | ... | FIB tables on each DUT with multipath routing. Assign each Virtual +| | ... | interface to FIB table with Physical interface or Virtual interface on +| | ... | both nodes. Setup IPv4 addresses with /30 prefix on DUT-TG links and +| | ... | /30 prefix on DUT1-DUT2 link. Set routing on all DUT nodes in all FIB +| | ... | tables with prefix /24 and next hop of neighbour IPv4 address. Setup +| | ... | ARP on all VPP interfaces. +| | ... +| | ... | *Arguments:* +| | ... | _None_ +| | ... +| | ... | *Note:* +| | ... | Socket paths for VM are defined in following format: +| | ... | - /tmp/sock-${VM_ID}-1 +| | ... | - /tmp/sock-${VM_ID}-2 +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| IPv4 forwarding with Vhost-User for '2' VMs initialized in \ +| | ... | a 3-node circular topology \| +| | ... +| | Set interfaces in path in 3-node circular topology up +| | ${fib_table_1}= | Set Variable | ${101} +| | ${fib_table_2}= | Evaluate | ${fib_table_1}+${nr} +| | ${dut1_if1_idx}= | Get Interface SW Index | ${dut1} | ${dut1_if1} +| | ${dut1_if2_idx}= | Get Interface SW Index | ${dut1} | ${dut1_if2} +| | Add fib table | ${dut1} | 10.10.10.0 | 24 | ${fib_table_1} +| | ... | via 1.1.1.2 sw_if_index ${dut1_if1_idx} multipath +| | Add fib table | ${dut1} | 20.20.20.0 | 24 | ${fib_table_2} +| | ... | via 2.2.2.2 sw_if_index ${dut1_if2_idx} multipath +| | ${dut2_if1_idx}= | Get Interface SW Index | ${dut2} | ${dut2_if1} +| | ${dut2_if2_idx}= | Get Interface SW Index | ${dut2} | ${dut2_if2} +| | Add fib table | ${dut2} | 10.10.10.0 | 24 | ${fib_table_1} +| | ... | via 2.2.2.1 sw_if_index ${dut2_if1_idx} multipath +| | Add fib table | ${dut2} | 20.20.20.0 | 24 | ${fib_table_2} +| | ... | via 3.3.3.2 sw_if_index ${dut2_if2_idx} multipath +| | Assign Interface To Fib Table | ${dut1} | ${dut1_if1} | ${fib_table_1} +| | Assign Interface To Fib Table | ${dut1} | ${dut1_if2} | ${fib_table_2} +| | Assign Interface To Fib Table | ${dut2} | ${dut2_if1} | ${fib_table_1} +| | Assign Interface To Fib Table | ${dut2} | ${dut2_if2} | ${fib_table_2} +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1} | 1.1.1.2 | 30 +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} | 2.2.2.1 | 30 +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} | 2.2.2.2 | 30 +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if2} | 3.3.3.1 | 30 +| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} +| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} +| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} +| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} +| | Add arp on dut | ${dut1} | ${dut1_if1} | 1.1.1.1 | ${tg1_if1_mac} +| | Add arp on dut | ${dut1} | ${dut1_if2} | 2.2.2.2 | ${dut2_if1_mac} +| | Add arp on dut | ${dut2} | ${dut2_if1} | 2.2.2.1 | ${dut1_if2_mac} +| | Add arp on dut | ${dut2} | ${dut2_if2} | 3.3.3.2 | ${tg1_if2_mac} +| | Vpp Route Add | ${dut1} | 10.10.10.0 | 24 | 1.1.1.1 | ${dut1_if1} +| | ... | vrf=${fib_table_1} +| | Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | 2.2.2.2 | ${dut1_if2} +| | ... | vrf=${fib_table_2} +| | Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | 2.2.2.1 | ${dut2_if1} +| | ... | vrf=${fib_table_1} +| | Vpp Route Add | ${dut2} | 20.20.20.0 | 24 | 3.3.3.2 | ${dut2_if2} +| | ... | vrf=${fib_table_2} +| | ${ip_base_start}= | Set Variable | ${4} +| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 +| | | ${sock1}= | Set Variable | /tmp/sock-${number}-1 +| | | ${sock2}= | Set Variable | /tmp/sock-${number}-2 +| | | ${fib_table_1}= | Evaluate | ${100}+${number} +| | | ${fib_table_2}= | Evaluate | ${fib_table_1}+${1} +| | | ${ip_base_vif1}= | Evaluate | ${ip_base_start}+(${number}-1)*2 +| | | ${ip_base_vif2}= | Evaluate | ${ip_base_vif1}+1 +| | | ${ip_net_vif1}= | Set Variable +| | | ... | ${ip_base_vif1}.${ip_base_vif1}.${ip_base_vif1} +| | | ${ip_net_vif2}= | Set Variable +| | | ... | ${ip_base_vif2}.${ip_base_vif2}.${ip_base_vif2} +| | | Configure vhost interfaces for L2BD forwarding | ${dut1} +| | | ... | ${sock1} | ${sock2} | dut1-vhost-${number}-if1 +| | | ... | dut1-vhost-${number}-if2 +| | | Set Interface State | ${dut1} | ${dut1-vhost-${number}-if1} | up +| | | Set Interface State | ${dut1} | ${dut1-vhost-${number}-if2} | up +| | | ${dut1_vif1_idx}= | Get Interface SW Index | ${dut1} +| | | ... | ${dut1-vhost-${number}-if1} +| | | ${dut1_vif2_idx}= | Get Interface SW Index | ${dut1} +| | | ... | ${dut1-vhost-${number}-if2} +| | | Configure vhost interfaces for L2BD forwarding | ${dut2} +| | | ... | ${sock1} | ${sock2} | dut2-vhost-${number}-if1 +| | | ... | dut2-vhost-${number}-if2 +| | | Set Interface State | ${dut2} | ${dut2-vhost-${number}-if1} | up +| | | Set Interface State | ${dut2} | ${dut2-vhost-${number}-if2} | up +| | | ${dut2_vif1_idx}= | Get Interface SW Index | ${dut2} +| | | ... | ${dut2-vhost-${number}-if1} +| | | ${dut2_vif2_idx}= | Get Interface SW Index | ${dut2} +| | | ... | ${dut2-vhost-${number}-if2} +| | | Add fib table | ${dut1} | 20.20.20.0 | 24 | ${fib_table_1} +| | | ... | via ${ip_net_vif1}.1 sw_if_index ${dut1_vif1_idx} multipath +| | | Add fib table | ${dut1} | 10.10.10.0 | 24 | ${fib_table_2} +| | | ... | via ${ip_net_vif2}.2 sw_if_index ${dut1_vif2_idx} multipath +| | | Add fib table | ${dut2} | 20.20.20.0 | 24 | ${fib_table_1} +| | | ... | via ${ip_net_vif1}.1 sw_if_index ${dut2_vif1_idx} multipath +| | | Add fib table | ${dut2} | 10.10.10.0 | 24 | ${fib_table_2} +| | | ... | via ${ip_net_vif2}.2 sw_if_index ${dut2_vif2_idx} multipath +| | | Assign Interface To Fib Table | ${dut1} | ${dut1-vhost-${number}-if1} +| | | ... | ${fib_table_1} +| | | Assign Interface To Fib Table | ${dut1} | ${dut1-vhost-${number}-if2} +| | | ... | ${fib_table_2} +| | | Assign Interface To Fib Table | ${dut2} | ${dut2-vhost-${number}-if1} +| | | ... | ${fib_table_1} +| | | Assign Interface To Fib Table | ${dut2} | ${dut2-vhost-${number}-if2} +| | | ... | ${fib_table_2} +| | | Configure IP addresses on interfaces +| | | ... | ${dut1} | ${dut1-vhost-${number}-if1} | ${ip_net_vif1}.1 | 30 +| | | ... | ${dut1} | ${dut1-vhost-${number}-if2} | ${ip_net_vif2}.1 | 30 +| | | ... | ${dut2} | ${dut2-vhost-${number}-if1} | ${ip_net_vif1}.1 | 30 +| | | ... | ${dut2} | ${dut2-vhost-${number}-if2} | ${ip_net_vif2}.1 | 30 +| | | ${dut1_vif1_mac}= | Get Vhost User Mac By Sw Index | ${dut1} +| | | ... | ${dut1_vif1_idx} +| | | ${dut1_vif2_mac}= | Get Vhost User Mac By Sw Index | ${dut1} +| | | ... | ${dut1_vif2_idx} +| | | ${dut2_vif1_mac}= | Get Vhost User Mac By Sw Index | ${dut2} +| | | ... | ${dut2_vif1_idx} +| | | ${dut2_vif2_mac}= | Get Vhost User Mac By Sw Index | ${dut2} +| | | ... | ${dut2_vif2_idx} +| | | Set Test Variable | ${dut1-vhost-${number}-if1_mac} +| | | ... | ${dut1_vif1_mac} +| | | Set Test Variable | ${dut1-vhost-${number}-if2_mac} +| | | ... | ${dut1_vif2_mac} +| | | Set Test Variable | ${dut2-vhost-${number}-if1_mac} +| | | ... | ${dut2_vif1_mac} +| | | Set Test Variable | ${dut2-vhost-${number}-if2_mac} +| | | ... | ${dut2_vif2_mac} +| | | ${qemu_id}= | Set Variable If | ${number} < 10 | 0${number} +| | | ... | ${number} +| | | Add arp on dut | ${dut1} | ${dut1-vhost-${number}-if1} +| | | ... | ${ip_net_vif1}.2 | 52:54:00:00:${qemu_id}:01 +| | | Add arp on dut | ${dut1} | ${dut1-vhost-${number}-if2} +| | | ... | ${ip_net_vif2}.2 | 52:54:00:00:${qemu_id}:02 +| | | Add arp on dut | ${dut2} | ${dut2-vhost-${number}-if1} +| | | ... | ${ip_net_vif1}.2 | 52:54:00:00:${qemu_id}:01 +| | | Add arp on dut | ${dut2} | ${dut2-vhost-${number}-if2} +| | | ... | ${ip_net_vif2}.2 | 52:54:00:00:${qemu_id}:02 +| | | Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | ${ip_net_vif1}.2 +| | | ... | ${dut1-vhost-${number}-if1} | vrf=${fib_table_1} +| | | Vpp Route Add | ${dut1} | 10.10.10.0 | 24 | ${ip_net_vif2}.2 +| | | ... | ${dut1-vhost-${number}-if2} | vrf=${fib_table_2} +| | | Vpp Route Add | ${dut2} | 20.20.20.0 | 24 | ${ip_net_vif1}.2 +| | | ... | ${dut2-vhost-${number}-if1} | vrf=${fib_table_1} +| | | Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | ${ip_net_vif2}.2 +| | | ... | ${dut2-vhost-${number}-if2} | vrf=${fib_table_2} + +| Initialize IPv4 policer 2r3c-${t} in 3-node circular topology +| | [Documentation] +| | ... | Setup of 2r3c color-aware or color-blind policer with dst ip match +| | ... | on all DUT nodes in 3-node circular topology. Policer is applied on +| | ... | links TG - DUT1 and DUT2 - TG. +| | ... +| | ${dscp}= | DSCP AF22 +| | Policer Set Name | policer1 +| | Policer Set CIR | ${cir} +| | Policer Set EIR | ${eir} +| | Policer Set CB | ${cb} +| | Policer Set EB | ${eb} +| | Policer Set Rate Type pps +| | Policer Set Round Type Closest +| | Policer Set Type 2R3C 2698 +| | Policer Set Conform Action Transmit +| | Policer Set Exceed Action Mark and Transmit | ${dscp} +| | Policer Set Violate Action Transmit +| | Policer Enable Color Aware +| | Run Keyword If | ${t} == 'ca' | Policer Enable Color Aware +| | Policer Classify Set Precolor Exceed +| | Policer Set Node | ${dut1} +| | Policer Classify Set Interface | ${dut1_if1} +| | Policer Classify Set Match IP | 20.20.20.2 | ${False} +| | Policer Set Configuration +| | Policer Set Node | ${dut2} +| | Policer Classify Set Interface | ${dut2_if2} +| | Policer Classify Set Match IP | 10.10.10.2 | ${False} +| | Policer Set Configuration + +| Initialize IPv6 forwarding in 3-node circular topology +| | [Documentation] +| | ... | Set UP state on VPP interfaces in path on nodes in 3-node circular +| | ... | topology. Get the interface MAC addresses and setup neighbour on all +| | ... | VPP interfaces. Setup IPv6 addresses with /128 prefixes on all +| | ... | interfaces. Set routing on both DUT nodes with prefix /64 and +| | ... | next hop of neighbour DUT interface IPv6 address. +| | ... +| | ${prefix}= | Set Variable | 64 +| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} +| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} +| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} +| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} +| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if1} | 2001:1::1 | ${prefix} +| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if2} | 2001:3::1 | ${prefix} +| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if1} | 2001:3::2 | ${prefix} +| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if2} | 2001:2::1 | ${prefix} +| | Suppress ICMPv6 router advertisement message | ${nodes} +| | Add Ip Neighbor | ${dut1} | ${dut1_if1} | 2001:1::2 | ${tg1_if1_mac} +| | Add Ip Neighbor | ${dut2} | ${dut2_if2} | 2001:2::2 | ${tg1_if2_mac} +| | Add Ip Neighbor | ${dut1} | ${dut1_if2} | 2001:3::2 | ${dut2_if1_mac} +| | Add Ip Neighbor | ${dut2} | ${dut2_if1} | 2001:3::1 | ${dut1_if2_mac} +| | Vpp Route Add | ${dut1} | 2001:2::0 | ${prefix} | 2001:3::2 | ${dut1_if2} +| | Vpp Route Add | ${dut2} | 2001:1::0 | ${prefix} | 2001:3::1 | ${dut2_if1} + +| Initialize IPv6 forwarding with scaling in 3-node circular topology +| | [Documentation] +| | ... | Custom setup of IPv6 topology with scalability of ip routes on all +| | ... | DUT nodes in 3-node circular topology +| | ... +| | ... | *Arguments:* +| | ... | - ${count} - IP route count. Type: integer +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Initialize IPv6 forwarding with scaling in 3-node circular \ +| | ... | topology \| 100000 \| +| | ... +| | [Arguments] | ${count} +| | ... +| | ${subn_prefix}= | Set Variable | 64 +| | ${host_prefix}= | Set Variable | 128 +| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if1} | 2001:3::1 | ${subn_prefix} +| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if2} | 2001:4::1 | ${subn_prefix} +| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if1} | 2001:4::2 | ${subn_prefix} +| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if2} | 2001:5::1 | ${subn_prefix} +| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} +| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} +| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} +| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} +| | Suppress ICMPv6 router advertisement message | ${nodes} +| | Add Ip Neighbor | ${dut1} | ${dut1_if1} | 2001:3::2 | ${tg1_if1_mac} +| | Add Ip Neighbor | ${dut1} | ${dut1_if2} | 2001:4::2 | ${dut2_if1_mac} +| | Add Ip Neighbor | ${dut2} | ${dut2_if1} | 2001:4::1 | ${dut1_if2_mac} +| | Add Ip Neighbor | ${dut2} | ${dut2_if2} | 2001:5::2 | ${tg1_if2_mac} +| | Vpp Route Add | ${dut1} | 2001:2::0 | ${host_prefix} | 2001:4::2 +| | ... | interface=${dut1_if2} | count=${count} +| | Vpp Route Add | ${dut1} | 2001:1::0 | ${host_prefix} | 2001:3::2 +| | ... | interface=${dut1_if1} | count=${count} +| | Vpp Route Add | ${dut2} | 2001:1::0 | ${host_prefix} | 2001:4::1 +| | ... | interface=${dut2_if1} | count=${count} +| | Vpp Route Add | ${dut2} | 2001:2::0 | ${host_prefix} | 2001:5::2 +| | ... | interface=${dut2_if2} | count=${count} + +| Initialize IPv6 iAcl whitelist in 3-node circular topology +| | [Documentation] +| | ... | Creates classify L3 table on DUTs. IPv6 iAcl security whitelist +| | ... | ingress /64 filter entries applied on links TG - DUT1 and DUT2 - TG. +| | ... +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip6 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip6 | dst | 2001:2::2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip6 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip6 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip6 | dst | 2001:1::2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip6 | ${table_idx} + +| Initialize L2 xconnect in 3-node circular topology +| | [Documentation] +| | ... | Setup L2 xconnect topology by cross connecting two interfaces on +| | ... | each DUT. Interfaces are brought up. +| | ... | +| | Configure L2XC | ${dut1} | ${dut1_if1} | ${dut1_if2} +| | Configure L2XC | ${dut2} | ${dut2_if1} | ${dut2_if2} +| | All Vpp Interfaces Ready Wait | ${nodes} + +| Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | [Documentation] +| | ... | Setup L2 xconnect topology with VXLANoIPv4 by cross connecting +| | ... | physical and vxlan interfaces on each DUT. All interfaces are brought +| | ... | up. IPv4 addresses with prefix /24 are configured on interfaces +| | ... | between DUTs. VXLAN sub-interfaces has same IPv4 address as +| | ... | interfaces. +| | ... +| | Set interfaces in path in 3-node circular topology up +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} | 172.16.0.1 | 24 +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} | 172.16.0.2 | 24 +| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} +| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} +| | Add arp on dut | ${dut1} | ${dut1_if2} | 172.16.0.2 | ${dut2_if1_mac} +| | Add arp on dut | ${dut2} | ${dut2_if1} | 172.16.0.1 | ${dut1_if2_mac} +| | ${dut1s_vxlan}= | Create VXLAN interface | ${dut1} | 24 +| | ... | 172.16.0.1 | 172.16.0.2 +| | Configure L2XC | ${dut1} | ${dut1_if1} | ${dut1s_vxlan} +| | ${dut2s_vxlan}= | Create VXLAN interface | ${dut2} | 24 +| | ... | 172.16.0.2 | 172.16.0.1 +| | Configure L2XC | ${dut2} | ${dut2_if2} | ${dut2s_vxlan} + +| Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | [Documentation] +| | ... | Create two Vhost-User interfaces on all defined VPP nodes. Cross +| | ... | connect each Vhost interface with one physical interface. +| | ... +| | ... | *Arguments:* +| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string +| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| L2 xconnect with Vhost-User initialized in a 3-node \ +| | ... | circular topology \| /tmp/sock1 \| /tmp/sock2 \| +| | ... +| | [Arguments] | ${sock1} | ${sock2} +| | ... +| | Configure vhost interfaces for L2BD forwarding | ${dut1} +| | ... | ${sock1} | ${sock2} +| | Configure L2XC | ${dut1} | ${dut1_if1} | ${vhost_if1} +| | Configure L2XC | ${dut1} | ${dut1_if2} | ${vhost_if2} +| | Configure vhost interfaces for L2BD forwarding | ${dut2} +| | ... | ${sock1} | ${sock2} +| | Configure L2XC | ${dut2} | ${dut2_if1} | ${vhost_if1} +| | Configure L2XC | ${dut2} | ${dut2_if2} | ${vhost_if2} +| | All Vpp Interfaces Ready Wait | ${nodes} + +| Initialize L2 xconnect with Vhost-User for '${nr}' in 3-node circular topology +| | [Documentation] +| | ... | Create pairs of Vhost-User interfaces on all defined VPP nodes. Cross +| | ... | connect each Vhost interface with one physical interface or virtual +| | ... | interface to create a chain accross DUT node. +| | ... +| | ... | *Arguments:* +| | ... | _None_ +| | ... +| | ... | *Note:* +| | ... | Socket paths for VM are defined in following format: +| | ... | - /tmp/sock-${VM_ID}-1 +| | ... | - /tmp/sock-${VM_ID}-2 +| | ... +| | ... | *Example:* +| | ... +| | ... | \| L2 xconnect with Vhost-User for '2' initialized in a 3-node \ +| | ... | circular topology \| +| | ... +| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 +| | | ${sock1}= | Set Variable | /tmp/sock-${number}-1 +| | | ${sock2}= | Set Variable | /tmp/sock-${number}-2 +| | | ${prev_index}= | Evaluate | ${number}-1 +| | | Configure vhost interfaces for L2BD forwarding | ${dut1} +| | | ... | ${sock1} | ${sock2} | dut1-vhost-${number}-if1 +| | | ... | dut1-vhost-${number}-if2 +| | | ${dut1_xconnect_if1}= | Set Variable If | ${number}==1 | ${dut1_if1} +| | | ... | ${dut1-vhost-${prev_index}-if2} +| | | Configure L2XC | ${dut1} | ${dut1_xconnect_if1} +| | | ... | ${dut1-vhost-${number}-if1} +| | | Configure vhost interfaces for L2BD forwarding | ${dut2} +| | | ... | ${sock1} | ${sock2} | dut2-vhost-${number}-if1 +| | | ... | dut2-vhost-${number}-if2 +| | | ${dut2_xconnect_if1}= | Set Variable If | ${number}==1 | ${dut2_if1} +| | | ... | ${dut2-vhost-${prev_index}-if2} +| | | Configure L2XC | ${dut2} | ${dut2_xconnect_if1} +| | | ... | ${dut2-vhost-${number}-if1} +| | | Run Keyword If | ${number}==${nr} | Configure L2XC +| | | ... | ${dut1} | ${dut1-vhost-${number}-if2} | ${dut1_if2} +| | | Run Keyword If | ${number}==${nr} | Configure L2XC +| | | ... | ${dut2} | ${dut2-vhost-${number}-if2} | ${dut2_if2} + +| Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | [Documentation] +| | ... | Create two Vhost-User interfaces on all defined VPP nodes. Cross +| | ... | connect each Vhost interface with one physical interface. +| | ... | Setup VLAN between DUTs. All interfaces are brought up. +| | ... +| | ... | *Arguments:* +| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string +| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string +| | ... | - subid - ID of the sub-interface to be created. Type: string +| | ... | - tag_rewrite - Method of tag rewrite. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| L2 xconnect with Vhost-User and VLAN initialized in a 3-node\ +| | ... | circular topology \| /tmp/sock1 \| /tmp/sock2 \| 10 \| pop-1 \| +| | ... +| | [Arguments] | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ... +| | Set interfaces in path in 3-node circular topology up +| | Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | Configure vhost interfaces for L2BD forwarding | ${dut1} +| | ... | ${sock1} | ${sock2} +| | Configure L2XC | ${dut1} | ${dut1_if1} | ${vhost_if1} +| | Configure L2XC | ${dut1} | ${subif_index_1} | ${vhost_if2} +| | Configure vhost interfaces for L2BD forwarding | ${dut2} +| | ... | ${sock1} | ${sock2} +| | Configure L2XC | ${dut2} | ${subif_index_2} | ${vhost_if1} +| | Configure L2XC | ${dut2} | ${dut2_if2} | ${vhost_if2} +| | All Vpp Interfaces Ready Wait | ${nodes} + +| Initialize L2 bridge domain in 3-node circular topology +| | [Documentation] +| | ... | Setup L2 DB topology by adding two interfaces on each DUT into BD +| | ... | that is created automatically with index 1. Learning is enabled. +| | ... | Interfaces are brought up. +| | ... +| | Configure L2BD forwarding | ${dut1} | ${dut1_if1} | ${dut1_if2} +| | Configure L2BD forwarding | ${dut2} | ${dut2_if1} | ${dut2_if2} +| | All Vpp Interfaces Ready Wait | ${nodes} + +| Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | [Documentation] +| | ... | Create two Vhost-User interfaces on all defined VPP nodes. Add each +| | ... | Vhost-User interface into L2 bridge domains with learning enabled +| | ... | with physical inteface. +| | ... +| | ... | *Arguments:* +| | ... | - bd_id1 - Bridge domain ID. Type: integer +| | ... | - bd_id2 - Bridge domain ID. Type: integer +| | ... | - sock1 - Sock path for first Vhost-User interface. Type: string +| | ... | - sock2 - Sock path for second Vhost-User interface. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| L2 bridge domains with Vhost-User initialized in a 3-node \ +| | ... | circular topology \| 1 \| 2 \| /tmp/sock1 \| /tmp/sock2 \| +| | ... +| | [Arguments] | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ... +| | Configure vhost interfaces for L2BD forwarding | ${dut1} +| | ... | ${sock1} | ${sock2} +| | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${bd_id1} +| | Add interface to bridge domain | ${dut1} | ${vhost_if1} | ${bd_id1} +| | Add interface to bridge domain | ${dut1} | ${dut1_if2} | ${bd_id2} +| | Add interface to bridge domain | ${dut1} | ${vhost_if2} | ${bd_id2} +| | Configure vhost interfaces for L2BD forwarding | ${dut2} +| | ... | ${sock1} | ${sock2} +| | Add interface to bridge domain | ${dut2} | ${dut2_if1} | ${bd_id1} +| | Add interface to bridge domain | ${dut2} | ${vhost_if1} | ${bd_id1} +| | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id2} +| | Add interface to bridge domain | ${dut2} | ${vhost_if2} | ${bd_id2} +| | All Vpp Interfaces Ready Wait | ${nodes} + +| Initialize L2 bridge domains with Vhost-User for '${nr}' VMs in 3-node circular topology +| | [Documentation] +| | ... | Create pairs of Vhost-User interfaces for defined number of VMs on all +| | ... | defined VPP nodes. Add each Vhost-User interface into L2 bridge +| | ... | domains with learning enabled with physical inteface or Vhost-User +| | ... | interface of another VM. +| | ... +| | ... | *Arguments:* +| | ... | _None_ +| | ... +| | ... | *Note:* +| | ... | Socket paths for VM are defined in following format: +| | ... | - /tmp/sock-${VM_ID}-1 +| | ... | - /tmp/sock-${VM_ID}-2 +| | ... +| | ... | *Example:* +| | ... +| | ... | \| L2 bridge domains with Vhost-User for '2' VMs initialized in \ +| | ... | a 3-node circular topology \| +| | ... +| | ${bd_id2}= | Evaluate | ${nr}+1 +| | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${1} +| | Add interface to bridge domain | ${dut1} | ${dut1_if2} | ${bd_id2} +| | Add interface to bridge domain | ${dut2} | ${dut2_if1} | ${1} +| | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id2} +| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 +| | | ${sock1}= | Set Variable | /tmp/sock-${number}-1 +| | | ${sock2}= | Set Variable | /tmp/sock-${number}-2 +| | | Configure vhost interfaces for L2BD forwarding | ${dut1} +| | | ... | ${sock1} | ${sock2} | dut1-vhost-${number}-if1 +| | | ... | dut1-vhost-${number}-if2 +| | | ${bd_id2}= | Evaluate | ${number}+1 +| | | Add interface to bridge domain | ${dut1} +| | | ... | ${dut1-vhost-${number}-if1} | ${number} +| | | Add interface to bridge domain | ${dut1} +| | | ... | ${dut1-vhost-${number}-if2} | ${bd_id2} +| | | Configure vhost interfaces for L2BD forwarding | ${dut2} +| | | ... | ${sock1} | ${sock2} | dut2-vhost-${number}-if1 +| | | ... | dut2-vhost-${number}-if2 +| | | Add interface to bridge domain | ${dut2} +| | | ... | ${dut2-vhost-${number}-if1} | ${number} +| | | Add interface to bridge domain | ${dut2} +| | | ... | ${dut2-vhost-${number}-if2} | ${bd_id2} + +| Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | [Documentation] +| | ... | Setup L2 bridge domain topology with VXLANoIPv4 by connecting +| | ... | physical and vxlan interfaces on each DUT. All interfaces are brought +| | ... | up. IPv4 addresses with prefix /24 are configured on interfaces +| | ... | between DUTs. VXLAN sub-interfaces has same IPv4 address as +| | ... | interfaces. +| | ... +| | Set interfaces in path in 3-node circular topology up +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} | 172.16.0.1 +| | ... | 24 +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} | 172.16.0.2 +| | ... | 24 +| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} +| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} +| | Add arp on dut | ${dut1} | ${dut1_if2} | 172.16.0.2 | ${dut2_if1_mac} +| | Add arp on dut | ${dut2} | ${dut2_if1} | 172.16.0.1 | ${dut1_if2_mac} +| | ${dut1s_vxlan}= | Create VXLAN interface | ${dut1} | 24 +| | ... | 172.16.0.1 | 172.16.0.2 +| | ${dut2s_vxlan}= | Create VXLAN interface | ${dut2} | 24 +| | ... | 172.16.0.2 | 172.16.0.1 +| | Configure L2BD forwarding | ${dut1} | ${dut1_if1} | ${dut1s_vxlan} +| | Configure L2BD forwarding | ${dut2} | ${dut2_if2} | ${dut2s_vxlan} +| | All Vpp Interfaces Ready Wait | ${nodes} + +| Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology +| | [Documentation] +| | ... | Create two Vhost-User interfaces on all defined VPP nodes. Add each +| | ... | Vhost-User interface into L2 bridge domains with learning enabled +| | ... | with physical inteface. +| | ... | Setup VXLANoIPv4 between DUTs by connecting physical and vxlan +| | ... | interfaces on each DUT. All interfaces are brought up. +| | ... | IPv4 addresses with prefix /24 are configured on interfaces between +| | ... | DUTs. VXLAN sub-interfaces has same IPv4 address as interfaces. +| | ... +| | ... | *Arguments:* +| | ... | - bd_id1 - Bridge domain ID. Type: integer +| | ... | - bd_id2 - Bridge domain ID. Type: integer +| | ... | - sock1 - Sock path for first Vhost-User interface. Type: string +| | ... | - sock2 - Sock path for second Vhost-User interface. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| L2 bridge domains with Vhost-User and VXLANoIPv4 initialized in a\ +| | ... | 3-node circular topology \| 1 \| 2 \| /tmp/sock1 \| /tmp/sock2 \| +| | ... +| | [Arguments] | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ... +| | Set interfaces in path in 3-node circular topology up +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} | 172.16.0.1 +| | ... | 24 +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} | 172.16.0.2 +| | ... | 24 +| | ${dut1s_vxlan}= | Create VXLAN interface | ${dut1} | 24 +| | ... | 172.16.0.1 | 172.16.0.2 +| | ${dut2s_vxlan}= | Create VXLAN interface | ${dut2} | 24 +| | ... | 172.16.0.2 | 172.16.0.1 +| | Configure vhost interfaces for L2BD forwarding | ${dut1} +| | ... | ${sock1} | ${sock2} +| | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${bd_id1} +| | Add interface to bridge domain | ${dut1} | ${vhost_if1} | ${bd_id1} +| | Add interface to bridge domain | ${dut1} | ${vhost_if2} | ${bd_id2} +| | Add interface to bridge domain | ${dut1} | ${dut1s_vxlan} | ${bd_id2} +| | Configure vhost interfaces for L2BD forwarding | ${dut2} +| | ... | ${sock1} | ${sock2} +| | Add interface to bridge domain | ${dut2} | ${dut2s_vxlan} | ${bd_id1} +| | Add interface to bridge domain | ${dut2} | ${vhost_if1} | ${bd_id1} +| | Add interface to bridge domain | ${dut2} | ${vhost_if2} | ${bd_id2} +| | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id2} +| | All Vpp Interfaces Ready Wait | ${nodes} + +| Initialize L2 bridge domains with Vhost-User in 2-node circular topology +| | [Documentation] +| | ... | Create two Vhost-User interfaces on all defined VPP nodes. Add each +| | ... | Vhost-User interface into L2 bridge domains with learning enabled +| | ... | with physical inteface. +| | ... +| | ... | *Arguments:* +| | ... | - bd_id1 - Bridge domain ID. Type: integer +| | ... | - bd_id2 - Bridge domain ID. Type: integer +| | ... | - sock1 - Sock path for first Vhost-User interface. Type: string +| | ... | - sock2 - Sock path for second Vhost-User interface. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| L2 bridge domains with Vhost-User initialized in a 2-node \ +| | ... | circular topology \| 1 \| 2 \| /tmp/sock1 \| /tmp/sock2 \| +| | ... +| | [Arguments] | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ... +| | Configure vhost interfaces for L2BD forwarding | ${dut1} +| | ... | ${sock1} | ${sock2} +| | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${bd_id1} +| | Add interface to bridge domain | ${dut1} | ${vhost_if1} | ${bd_id1} +| | Add interface to bridge domain | ${dut1} | ${dut1_if2} | ${bd_id2} +| | Add interface to bridge domain | ${dut1} | ${vhost_if2} | ${bd_id2} +| | All Vpp Interfaces Ready Wait | ${nodes} + +| Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | [Documentation] +| | ... | Create two Vhost-User interfaces on all defined VPP nodes. Add each +| | ... | Vhost-User interface into L2 bridge domains with learning enabled +| | ... | with physical inteface. +| | ... | Setup VLAN between DUTs. All interfaces are brought up. +| | ... +| | ... | *Arguments:* +| | ... | - bd_id1 - Bridge domain ID. Type: integer +| | ... | - bd_id2 - Bridge domain ID. Type: integer +| | ... | - sock1 - Sock path for first Vhost-User interface. Type: string +| | ... | - sock2 - Sock path for second Vhost-User interface. Type: string +| | ... | - subid - ID of the sub-interface to be created. Type: string +| | ... | - tag_rewrite - Method of tag rewrite. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| L2 bridge domains with Vhost-User and VLAN initialized in a 3-node\ +| | ... | circular topology \| 1 \| 2 \| /tmp/sock1 \| /tmp/sock2 \| 10\ +| | ... | pop-1 \| +| | ... +| | [Arguments] | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ... +| | Set interfaces in path in 3-node circular topology up +| | Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | Configure vhost interfaces for L2BD forwarding | ${dut1} +| | ... | ${sock1} | ${sock2} +| | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${bd_id1} +| | Add interface to bridge domain | ${dut1} | ${vhost_if1} | ${bd_id1} +| | Add interface to bridge domain | ${dut1} | ${vhost_if2} | ${bd_id2} +| | Add interface to bridge domain | ${dut1} | ${subif_index_1} | ${bd_id2} +| | Configure vhost interfaces for L2BD forwarding | ${dut2} +| | ... | ${sock1} | ${sock2} +| | Add interface to bridge domain | ${dut2} | ${subif_index_2} | ${bd_id1} +| | Add interface to bridge domain | ${dut2} | ${vhost_if1} | ${bd_id1} +| | Add interface to bridge domain | ${dut2} | ${vhost_if2} | ${bd_id2} +| | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id2} +| | All Vpp Interfaces Ready Wait | ${nodes} + +| Add PCI devices to DUTs in 3-node single link topology +| | [Documentation] +| | ... | Add PCI devices to VPP configuration file. +| | ... +| | ${dut1_if1_pci}= | Get Interface PCI Addr | ${dut1} | ${dut1_if1} +| | ${dut1_if2_pci}= | Get Interface PCI Addr | ${dut1} | ${dut1_if2} +| | ${dut2_if1_pci}= | Get Interface PCI Addr | ${dut2} | ${dut2_if1} +| | ${dut2_if2_pci}= | Get Interface PCI Addr | ${dut2} | ${dut2_if2} +| | Run keyword | DUT1.Add DPDK Dev | ${dut1_if1_pci} | ${dut1_if2_pci} +| | Run keyword | DUT2.Add DPDK Dev | ${dut2_if1_pci} | ${dut2_if2_pci} + +| Add PCI devices to DUTs in 2-node single link topology +| | [Documentation] +| | ... | Add PCI devices to VPP configuration file. +| | ... +| | ${dut1_if1_pci}= | Get Interface PCI Addr | ${dut1} | ${dut1_if1} +| | ${dut1_if2_pci}= | Get Interface PCI Addr | ${dut1} | ${dut1_if2} +| | Run keyword | DUT1.Add DPDK Dev | ${dut1_if1_pci} | ${dut1_if2_pci} + +| Configure guest VM with dpdk-testpmd connected via vhost-user +| | [Documentation] +| | ... | Start QEMU guest with two vhost-user interfaces and interconnecting +| | ... | DPDK testpmd. Qemu Guest uses by default 5 cores and 2048M. Testpmd +| | ... | uses 5 cores (1 main core and 4 cores dedicated to io) mem-channel=4, +| | ... | txq/rxq=256, burst=64, disable-hw-vlan, disable-rss, +| | ... | driver usr/lib/librte_pmd_virtio.so and fwd mode is io. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node to start guest VM on. Type: dictionary +| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string +| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string +| | ... | - vm_name - QemuUtil instance name. Type: string +| | ... | - skip - Number of cpus which will be skipped. Type: integer +| | ... | - count - Number of cpus which will be allocated for qemu. +| | ... | Type: integer +| | ... | - qemu_id - Qemu Id when starting more then one guest VM on DUT node. +| | ... | Type: integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure guest VM with dpdk-testpmd connected via vhost-user \ +| | ... | \| ${nodes['DUT1']} \| /tmp/sock1 \| /tmp/sock2 \| DUT1_VM \| ${6} \ +| | ... | \| ${5} \| +| | ... | \| Configure guest VM with dpdk-testpmd connected via vhost-user \ +| | ... | \| ${nodes['DUT1']} \| /tmp/sock-2-1 \| /tmp/sock-2-2 \| DUT1_VM2 \ +| | ... | \| qemu_id=${2} \| +| | ... +| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name} | ${skip}=${6} +| | ... | ${count}=${5} | ${qemu_id}=${1} +| | ... +| | Import Library | resources.libraries.python.QemuUtils | qemu_id=${qemu_id} +| | ... | WITH NAME | ${vm_name} +| | ${serial_port}= | Evaluate | ${qemu_id} + ${4555} +| | Run keyword | ${vm_name}.Qemu Set Serial Port | ${serial_port} +| | ${ssh_fwd_port}= | Evaluate | ${qemu_id} + ${10021} +| | Run keyword | ${vm_name}.Qemu Set Ssh Fwd Port | ${ssh_fwd_port} +| | ${dut_numa}= | Get interfaces numa node | ${dut_node} +| | ... | ${dut1_if1} | ${dut1_if2} +| | ${skip_cnt}= | Evaluate | ${skip} + (${qemu_id} - 1) * ${count} +| | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa} +| | ... | skip_cnt=${skip_cnt} | cpu_cnt=${count} | smt_used=${False} +| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1} +| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2} +| | Run Keyword | ${vm_name}.Build QEMU | ${dut_node} | apply_patch=${True} +| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin} +| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node} +| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1 +| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048 +| | Run keyword | ${vm_name}.Qemu Set Disk Image | ${perf_vm_image} +| | ${vm}= | Run keyword | ${vm_name}.Qemu Start +| | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus} +| | Dpdk Testpmd Start | ${vm} | eal_coremask=0x1f | eal_mem_channels=4 +| | ... | pmd_fwd_mode=io | pmd_disable_hw_vlan=${True} +| | ... | pmd_txd=${perf_qemu_qsz} | pmd_rxd=${perf_qemu_qsz} +| | Return From Keyword | ${vm} + +| Configure '${nr}' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | [Documentation] +| | ... | Start QEMU guests with two vhost-user interfaces and interconnecting +| | ... | DPDK testpmd for defined number of VMs on all defined VPP nodes. +| | ... +| | ... | *Arguments:* +| | ... | _None_ +| | ... +| | ... | _NOTE:_ This KW expects following test case variables to be set: +| | ... | - ${system_cpus} - Number of CPUs allocated for OS itself. +| | ... | - ${vpp_cpus} - Number of CPUs allocated for VPP. +| | ... | - ${vm_cpus} - Number of CPUs to be allocated per QEMU instance. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| '2' Configure guest VM with dpdk-testpmd connected via vhost-user \ +| | ... | in a 3-node circular topology \| +| | ... +| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 +| | | ${sock1}= | Set Variable | /tmp/sock-${number}-1 +| | | ${sock2}= | Set Variable | /tmp/sock-${number}-2 +| | | ${skip_cpus}= | Evaluate | ${vpp_cpus}+${system_cpus} +| | | ${vm1}= | Configure guest VM with dpdk-testpmd connected via vhost-user +| | | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM${number} +| | | ... | skip=${skip_cpus} | count=${vm_cpus} | qemu_id=${number} +| | | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM${number} | ${vm1} +| | | ${vm2}= | Configure guest VM with dpdk-testpmd connected via vhost-user +| | | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM${number} +| | | ... | skip=${skip_cpus} | count=${vm_cpus} | qemu_id=${number} +| | | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM${number} | ${vm2} + +| Configure guest VM with dpdk-testpmd using SMT connected via vhost-user +| | [Documentation] +| | ... | Start QEMU guest with two vhost-user interfaces and interconnecting +| | ... | DPDK testpmd. Qemu Guest uses by default 5 cores and 2048M. Testpmd +| | ... | uses 5 cores (1 main core and 4 cores dedicated to io) mem-channel=4, +| | ... | txq/rxq=256, burst=64, disable-hw-vlan, disable-rss, +| | ... | driver usr/lib/librte_pmd_virtio.so and fwd mode is io. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node to start guest VM on. Type: dictionary +| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string +| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string +| | ... | - vm_name - QemuUtil instance name. Type: string +| | ... | - skip - number of cpus which will be skipped. Type: int +| | ... | - count - number of cpus which will be allocated for qemu. Type: int +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Guest VM with dpdk-testpmd using SMT connected via vhost-user is \ +| | ... | setup \| ${nodes['DUT1']} \| /tmp/sock1 \| /tmp/sock2 \| DUT1_VM \ +| | ... | \| ${6} \| ${5} \| +| | ... +| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name} | ${skip}=${6} +| | ... | ${count}=${5} +| | ... +| | Import Library | resources.libraries.python.QemuUtils +| | ... | WITH NAME | ${vm_name} +| | ${dut_numa}= | Get interfaces numa node | ${dut_node} +| | ... | ${dut1_if1} | ${dut1_if2} +| | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa} +| | ... | skip_cnt=${skip} | cpu_cnt=${count} | smt_used=${True} +| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1} +| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2} +| | Run Keyword | ${vm_name}.Build QEMU | ${dut_node} | apply_patch=${True} +| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin} +| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node} +| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1 +| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048 +| | Run keyword | ${vm_name}.Qemu Set Disk Image | ${perf_vm_image} +| | ${vm}= | Run keyword | ${vm_name}.Qemu Start +| | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus} +| | Dpdk Testpmd Start | ${vm} | eal_coremask=0x1f | eal_mem_channels=4 +| | ... | pmd_fwd_mode=io | pmd_disable_hw_vlan=${True} +| | ... | pmd_txd=${perf_qemu_qsz} | pmd_rxd=${perf_qemu_qsz} +| | Return From Keyword | ${vm} + +| Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | [Documentation] +| | ... | Start QEMU guest with two vhost-user interfaces and interconnecting +| | ... | DPDK testpmd. Qemu Guest uses by default 5 cores and 2048M. Testpmd +| | ... | uses 5 cores (1 main core and 4 cores dedicated to io) mem-channel=4, +| | ... | txq/rxq=256, burst=64, disable-hw-vlan, disable-rss, +| | ... | driver usr/lib/librte_pmd_virtio.so and fwd mode is mac rewrite. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node to start guest VM on. Type: dictionary +| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string +| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string +| | ... | - vm_name - QemuUtil instance name. Type: string +| | ... | - eth0_mac - MAC address of first Vhost interface. Type: string +| | ... | - eth1_mac - MAC address of second Vhost interface. Type: string +| | ... | - skip - number of cpus which will be skipped. Type: integer +| | ... | - count - number of cpus which will be allocated for qemu. +| | ... | Type: integer +| | ... | - qemu_id - Qemu Id when starting more then one guest VM on DUT node. +| | ... | Type: integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Guest VM with dpdk-testpmd for Vhost L2BD forwarding is setup \ +| | ... | \| ${nodes['DUT1']} \| /tmp/sock1 \| /tmp/sock2 \| DUT1_VM \ +| | ... | \| 00:00:00:00:00:01 \| 00:00:00:00:00:02 \| ${6} \| ${5} \| +| | ... | \| Guest VM with dpdk-testpmd for Vhost L2BD forwarding is setup \ +| | ... | \| ${nodes['DUT1']} \| /tmp/sock-2-1 \| /tmp/sock-2-2 \| DUT1_VM2 \ +| | ... | \| 00:00:00:00:02:01 \| 00:00:00:00:02:02 \| ${6} \| ${5} \ +| | ... | \| qemu_id=${2} \| +| | ... +| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name} +| | ... | ${eth0_mac} | ${eth1_mac} | ${skip}=${6} | ${count}=${5} +| | ... | ${qemu_id}=${1} +| | ... +| | Import Library | resources.libraries.python.QemuUtils | qemu_id=${qemu_id} +| | ... | WITH NAME | ${vm_name} +| | ${serial_port}= | Evaluate | ${qemu_id} + ${4555} +| | Run keyword | ${vm_name}.Qemu Set Serial Port | ${serial_port} +| | ${ssh_fwd_port}= | Evaluate | ${qemu_id} + ${10021} +| | Run keyword | ${vm_name}.Qemu Set Ssh Fwd Port | ${ssh_fwd_port} +| | ${dut_numa}= | Get interfaces numa node | ${dut_node} +| | ... | ${dut1_if1} | ${dut1_if2} +| | ${skip_cnt}= | Evaluate | ${skip} + (${qemu_id} - 1) * ${count} +| | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa} +| | ... | skip_cnt=${skip_cnt} | cpu_cnt=${count} | smt_used=${False} +| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1} +| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2} +| | Run Keyword | ${vm_name}.Build QEMU | ${dut_node} | apply_patch=${True} +| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin} +| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node} +| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1 +| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048 +| | Run keyword | ${vm_name}.Qemu Set Disk Image | ${perf_vm_image} +| | ${vm}= | Run keyword | ${vm_name}.Qemu Start +| | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus} +| | Dpdk Testpmd Start | ${vm} | eal_coremask=0x1f +| | ... | eal_mem_channels=4 | pmd_fwd_mode=mac | pmd_eth_peer_0=0,${eth0_mac} +| | ... | pmd_eth_peer_1=1,${eth1_mac} | pmd_disable_hw_vlan=${True} +| | ... | pmd_txd=${perf_qemu_qsz} | pmd_rxd=${perf_qemu_qsz} +| | Return From Keyword | ${vm} + +| Configure '${nr}' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | [Documentation] +| | ... | Start QEMU guests with two vhost-user interfaces and interconnecting +| | ... | DPDK testpmd with fwd mode set to mac rewrite for defined number of +| | ... | VMs on all defined VPP nodes. +| | ... +| | ... | *Arguments:* +| | ... | _None_ +| | ... +| | ... | _NOTE:_ This KW expects following test case variables to be set: +| | ... | - ${system_cpus} - Number of CPUs allocated for OS itself. +| | ... | - ${vpp_cpus} - Number of CPUs allocated for VPP. +| | ... | - ${vm_cpus} - Number of CPUs to be allocated per QEMU instance. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| '2' Guest VMs with dpdk-testpmd-mac connected via vhost-user is \ +| | ... | setup in a 3-node circular topology \| +| | ... +| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 +| | | ${sock1}= | Set Variable | /tmp/sock-${number}-1 +| | | ${sock2}= | Set Variable | /tmp/sock-${number}-2 +| | | ${skip_cpus}= | Evaluate | ${vpp_cpus}+${system_cpus} +| | | ${vm1}= +| | | ... | Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM${number} +| | | ... | ${dut1-vhost-${number}-if1_mac} +| | | ... | ${dut1-vhost-${number}-if2_mac} | skip=${skip_cpus} +| | | ... | count=${vm_cpus} | qemu_id=${number} +| | | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM${number} | ${vm1} +| | | ${vm2}= +| | | ... | Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM${number} +| | | ... | ${dut2-vhost-${number}-if1_mac} +| | | ... | ${dut2-vhost-${number}-if2_mac} | skip=${skip_cpus} +| | | ... | count=${vm_cpus} | qemu_id=${number} +| | | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM${number} | ${vm2} + +| Configure guest VM with dpdk-testpmd-mac using SMT connected via vhost-user +| | [Documentation] +| | ... | Start QEMU guest with two vhost-user interfaces and interconnecting +| | ... | DPDK testpmd. Qemu Guest uses by default 5 cores and 2048M. Testpmd +| | ... | uses 5 cores (1 main core and 4 cores dedicated to io) mem-channel=4, +| | ... | txq/rxq=256, burst=64, disable-hw-vlan, disable-rss, +| | ... | driver usr/lib/librte_pmd_virtio.so and fwd mode is mac rewrite. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node to start guest VM on. Type: dictionary +| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string +| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string +| | ... | - vm_name - QemuUtil instance name. Type: string +| | ... | - eth0_mac - MAC address of first Vhost interface. Type: string +| | ... | - eth1_mac - MAC address of second Vhost interface. Type: string +| | ... | - skip - number of cpus which will be skipped. Type: int +| | ... | - count - number of cpus which will be allocated for qemu. Type: int +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure guest VM with dpdk-testpmd-mac using SMT connected via \ +| | ... | vhost-user \| ${nodes['DUT1']} \| /tmp/sock1 \| /tmp/sock2 \| DUT1_VM\ +| | ... | \| 00:00:00:00:00:01 \| 00:00:00:00:00:02 \| ${6} \| ${5} \| +| | ... +| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name} +| | ... | ${eth0_mac} | ${eth1_mac} | ${skip}=${6} | ${count}=${5} +| | ... +| | Import Library | resources.libraries.python.QemuUtils +| | ... | WITH NAME | ${vm_name} +| | ${dut_numa}= | Get interfaces numa node | ${dut_node} +| | ... | ${dut1_if1} | ${dut1_if2} +| | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa} +| | ... | skip_cnt=${skip} | cpu_cnt=${count} | smt_used=${True} +| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1} +| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2} +| | Run Keyword | ${vm_name}.Build QEMU | ${dut_node} | apply_patch=${True} +| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin} +| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node} +| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1 +| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048 +| | Run keyword | ${vm_name}.Qemu Set Disk Image | ${perf_vm_image} +| | ${vm}= | Run keyword | ${vm_name}.Qemu Start +| | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus} +| | Dpdk Testpmd Start | ${vm} | eal_coremask=0x1f +| | ... | eal_mem_channels=4 | pmd_fwd_mode=mac | pmd_eth_peer_0=0,${eth0_mac} +| | ... | pmd_eth_peer_1=1,${eth1_mac} | pmd_disable_hw_vlan=${True} +| | ... | pmd_txd=${perf_qemu_qsz} | pmd_rxd=${perf_qemu_qsz} +| | Return From Keyword | ${vm} + +| Configure guest VM with linux bridge connected via vhost-user +| | [Documentation] +| | ... | Start QEMU guest with two vhost-user interfaces and interconnecting +| | ... | linux bridge. Qemu Guest uses 2048M. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node to start guest VM on. Type: dictionary +| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string +| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string +| | ... | - vm_name - QemuUtil instance name. Type: string +| | ... | - skip - number of cpus which will be skipped. Type: int +| | ... | - count - number of cpus which will be allocated for qemu. Type: int +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure guest VM with linux bridge connected via vhost-user \ +| | ... | \| ${nodes['DUT1']} \| /tmp/sock1 \| /tmp/sock2 \| DUT1_VM \| ${6} \ +| | ... | \| ${5} \| +| | ... +| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name} | ${skip}=${6} +| | ... | ${count}=${5} +| | ... +| | Import Library | resources.libraries.python.QemuUtils +| | ... | WITH NAME | ${vm_name} +| | ${dut_numa}= | Get interfaces numa node | ${dut_node} +| | ... | ${dut1_if1} | ${dut1_if2} +| | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa} +| | ... | skip_cnt=${skip} | cpu_cnt=${count} | smt_used=${False} +| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1} +| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2} +| | Run Keyword | ${vm_name}.Build QEMU | ${dut_node} | apply_patch=${True} +| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin} +| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node} +| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1 +| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048 +| | Run keyword | ${vm_name}.Qemu Set Disk Image | ${perf_vm_image} +| | ${vm}= | Run keyword | ${vm_name}.Qemu Start +| | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus} +| | ${br}= | Set Variable | br0 +| | ${vhost1}= | Get Vhost User If Name By Sock | ${vm} | ${sock1} +| | ${vhost2}= | Get Vhost User If Name By Sock | ${vm} | ${sock2} +| | Linux Add Bridge | ${vm} | ${br} | ${vhost1} | ${vhost2} +| | Set Interface State | ${vm} | ${vhost1} | up | if_type=name +| | Set Interface State | ${vm} | ${vhost2} | up | if_type=name +| | Set Interface State | ${vm} | ${br} | up | if_type=name +| | Return From Keyword | ${vm} + +| Configure guest VM with linux bridge using SMT connected via vhost-user +| | [Documentation] +| | ... | Start QEMU guest with two vhost-user interfaces and interconnecting +| | ... | linux bridge. Qemu Guest uses 2048M. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - DUT node to start guest VM on. Type: dictionary +| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string +| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string +| | ... | - vm_name - QemuUtil instance name. Type: string +| | ... | - skip - number of cpus which will be skipped. Type: int +| | ... | - count - number of cpus which will be allocated for qemu. Type: int +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Guest VM with Linux Bridge using SMT connected via vhost-user is \ +| | ... | setup \| ${nodes['DUT1']} \| /tmp/sock1 \| /tmp/sock2 \| DUT1_VM \ +| | ... | \| ${6}\| ${5} \| +| | ... +| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name} | ${skip}=${6} +| | ... | ${count}=${5} +| | ... +| | Import Library | resources.libraries.python.QemuUtils +| | ... | WITH NAME | ${vm_name} +| | ${dut_numa}= | Get interfaces numa node | ${dut_node} +| | ... | ${dut1_if1} | ${dut1_if2} +| | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa} +| | ... | skip_cnt=${skip} | cpu_cnt=${count} | smt_used=${True} +| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1} +| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2} +| | Run Keyword | ${vm_name}.Build QEMU | ${dut_node} | apply_patch=${True} +| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin} +| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node} +| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1 +| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048 +| | Run keyword | ${vm_name}.Qemu Set Disk Image | ${perf_vm_image} +| | ${vm}= | Run keyword | ${vm_name}.Qemu Start +| | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus} +| | ${br}= | Set Variable | br0 +| | ${vhost1}= | Get Vhost User If Name By Sock | ${vm} | ${sock1} +| | ${vhost2}= | Get Vhost User If Name By Sock | ${vm} | ${sock2} +| | Linux Add Bridge | ${vm} | ${br} | ${vhost1} | ${vhost2} +| | Set Interface State | ${vm} | ${vhost1} | up | if_type=name +| | Set Interface State | ${vm} | ${vhost2} | up | if_type=name +| | Set Interface State | ${vm} | ${br} | up | if_type=name +| | Return From Keyword | ${vm} + +| Initialize LISP IPv4 forwarding in 3-node circular topology +| | [Documentation] | Custom setup of IPv4 addresses on all DUT nodes and TG \ +| | ... | Don`t set route. +| | ... +| | ... | *Arguments:* +| | ... | -${dut1_dut2_address} - Ip address from DUT1 to DUT2. Type: string +| | ... | -${dut1_tg_address} - Ip address from DUT1 to tg. Type: string +| | ... | -${dut2_dut1_address} - Ip address from DUT2 to DUT1. Type: string +| | ... | -${dut1_tg_address} - Ip address from DUT1 to tg. Type: string +| | ... | -${duts_prefix} - ip prefix. Type: int +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| Initialize LISP IPv4 forwarding in 3-node circular topology \ +| | ... | \| ${dut1_dut2_address} \| ${dut1_tg_address} \ +| | ... | \| ${dut2_dut1_address} \| ${dut2_tg_address} \| ${duts_prefix} \| +| | ... +| | [Arguments] | ${dut1_dut2_address} | ${dut1_tg_address} +| | ... | ${dut2_dut1_address} | ${dut2_tg_address} | ${duts_prefix} +| | ... +| | Set Interface State | ${dut1} | ${dut1_if1} | up +| | Set Interface State | ${dut1} | ${dut1_if2} | up +| | Set Interface State | ${dut2} | ${dut2_if1} | up +| | Set Interface State | ${dut2} | ${dut2_if2} | up +| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} +| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} +| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} +| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} +| | Add arp on dut | ${dut1} | ${dut1_if1} | 10.10.10.2 | ${tg1_if1_mac} +| | Add arp on dut | ${dut1} | ${dut1_if2} | ${dut2_dut1_address} +| | ... | ${dut2_if1_mac} +| | Add arp on dut | ${dut2} | ${dut2_if1} | ${dut1_dut2_address} +| | ... | ${dut1_if2_mac} +| | Add arp on dut | ${dut2} | ${dut2_if2} | 20.20.20.2 | ${tg1_if2_mac} +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1} +| | ... | ${dut1_tg_address} | ${duts_prefix} +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} +| | ... | ${dut1_dut2_address} | ${duts_prefix} +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} +| | ... | ${dut2_dut1_address} | ${duts_prefix} +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if2} +| | ... | ${dut2_tg_address} | ${duts_prefix} +| | All Vpp Interfaces Ready Wait | ${nodes} + +| Initialize LISP GPE IPv4 over IPsec in 3-node circular topology +| | [Documentation] | Setup Lisp GPE IPv4 forwarding over IPsec. +| | ... +| | ... | *Arguments:* +| | ... | -${encr_alg} - Encryption algorithm. Type: string +| | ... | -${auth_alg} - Authentication algorithm. Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| Initialize LISP GPE IPv4 over IPsec in 3-node circular topology\ +| | ... | \| ${encr_alg} \| ${auth_alg} +| | ... +| | [Arguments] | ${encr_alg} | ${auth_alg} +| | ... +| | Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Configure manual keyed connection for IPSec +| | ... | ${dut1} | ${dut1_if2} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} +| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} +| | Configure manual keyed connection for IPSec +| | ... | ${dut2} | ${dut2_if1} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} +| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} + +| Initialize LISP IPv6 forwarding in 3-node circular topology +| | [Documentation] | Custom setup of IPv6 topology on all DUT nodes \ +| | ... | Don`t set route. +| | ... +| | ... | *Arguments:* +| | ... | -${dut1_dut2_address} - Ip address from DUT1 to DUT2. Type: string +| | ... | -${dut1_tg_address} - Ip address from DUT1 to tg. Type: string +| | ... | -${dut2_dut1_address} - Ip address from DUT2 to DUT1. Type: string +| | ... | -${dut1_tg_address} - Ip address from DUT1 to tg. Type: string +| | ... | -${duts_prefix} - ip prefix. Type: int +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| Initialize LISP IPv6 forwarding in 3-node circular topology \ +| | ... | \| ${dut1_dut2_address} \| ${dut1_tg_address} \ +| | ... | \| ${dut2_dut1_address} \| ${dut2_tg_address} \| ${duts_prefix} \| +| | ... +| | [Arguments] | ${dut1_dut2_address} | ${dut1_tg_address} +| | ... | ${dut2_dut1_address} | ${dut2_tg_address} | ${prefix} +| | ... +| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} +| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} +| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} +| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} +| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if1} | ${dut1_tg_address} +| | ... | ${prefix} +| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if2} | ${dut1_dut2_address} +| | ... | ${prefix} +| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if1} | ${dut2_dut1_address} +| | ... | ${prefix} +| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if2} | ${dut2_tg_address} +| | ... | ${prefix} +| | Suppress ICMPv6 router advertisement message | ${nodes} +| | Add Ip Neighbor | ${dut1} | ${dut1_if1} | 2001:1::2 | ${tg1_if1_mac} +| | Add Ip Neighbor | ${dut2} | ${dut2_if2} | 2001:2::2 | ${tg1_if2_mac} +| | Add Ip Neighbor | ${dut1} | ${dut1_if2} | ${dut2_dut1_address} +| | ... | ${dut2_if1_mac} +| | Add Ip Neighbor | ${dut2} | ${dut2_if1} | ${dut1_dut2_address} +| | ... | ${dut1_if2_mac} + +| Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | [Documentation] | Custom setup of IPv4 over IPv6 topology on all DUT nodes \ +| | ... | Don`t set route. +| | ... +| | ... | *Arguments:* +| | ... | - ${dut1_dut2_ip6_address} - IPv6 address from DUT1 to DUT2. +| | ... | Type: string +| | ... | - ${dut1_tg_ip4_address} - IPv4 address from DUT1 to tg. Type: string +| | ... | - ${dut2_dut1_ip6_address} - IPv6 address from DUT2 to DUT1. +| | ... | Type: string +| | ... | - ${dut1_tg_ip4_address} - IPv4 address from DUT1 to tg. Type: string +| | ... | - ${prefix4} - IPv4 prefix. Type: int +| | ... | - ${prefix6} - IPv6 prefix. Type: int +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| Lisp IPv4 over IPv6 forwarding initialized in a 3-node circular \ +| | ... | topology \| ${dut1_dut2_ip6_address} \| ${dut1_tg_ip4_address} \ +| | ... | \| ${dut2_dut1_ip6_address} \| ${dut2_tg_ip4_address} \ +| | ... | \| ${prefix4} \| ${prefix6} \| +| | ... +| | [Arguments] | ${dut1_dut2_ip6_address} | ${dut1_tg_ip4_address} +| | ... | ${dut2_dut1_ip6_address} | ${dut2_tg_ip4_address} +| | ... | ${prefix4} | ${prefix6} +| | ... +| | Set Interface State | ${dut1} | ${dut1_if1} | up +| | Set Interface State | ${dut1} | ${dut1_if2} | up +| | Set Interface State | ${dut2} | ${dut2_if1} | up +| | Set Interface State | ${dut2} | ${dut2_if2} | up +| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} +| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} +| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} +| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1} +| | ... | ${dut1_tg_ip4_address} | ${prefix4} +| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if2} | ${dut1_dut2_ip6_address} +| | ... | ${prefix6} +| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if1} | ${dut2_dut1_ip6_address} +| | ... | ${prefix6} +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if2} +| | ... | ${dut2_tg_ip4_address} | ${prefix4} +| | Suppress ICMPv6 router advertisement message | ${nodes} +| | Add arp on dut | ${dut1} | ${dut1_if1} | 10.10.10.2 | ${tg1_if1_mac} +| | Add arp on dut | ${dut2} | ${dut2_if2} | 20.20.20.2 | ${tg1_if2_mac} +| | Add Ip Neighbor | ${dut1} | ${dut1_if2} | ${dut2_dut1_ip6_address} +| | ... | ${dut2_if1_mac} +| | Add Ip Neighbor | ${dut2} | ${dut2_if1} | ${dut1_dut2_ip6_address} +| | ... | ${dut1_if2_mac} + +| Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | [Documentation] | Custom setup of IPv4 over IPv6 topology on all DUT nodes \ +| | ... | Don`t set route. +| | ... +| | ... | *Arguments:* +| | ... | - ${dut1_dut2_ip4_address} - IPv4 address from DUT1 to DUT2. +| | ... | Type: string +| | ... | - ${dut1_tg_ip6_address} - IPv6 address from DUT1 to tg. Type: string +| | ... | - ${dut2_dut1_ip4_address} - IPv4 address from DUT2 to DUT1. +| | ... | Type: string +| | ... | - ${dut1_tg_ip6_address} - IPv6 address from DUT1 to tg. Type: string +| | ... | - ${prefix4} - IPv4 prefix. Type: int +| | ... | - ${prefix6} - IPv6 prefix. Type: int +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... | \| Lisp IPv6 over IPv4 forwarding initialized in a 3-node circular \ +| | ... | topology \| ${dut1_dut2_ip4_address} \| ${dut1_tg_ip6_address} \ +| | ... | \| ${dut2_dut1_ip4_address} \| ${dut2_tg_ip6_address} \ +| | ... | \| ${prefix6} \| ${prefix4} \| +| | ... +| | [Arguments] | ${dut1_dut2_ip4_address} | ${dut1_tg_ip6_address} +| | ... | ${dut2_dut1_ip4_address} | ${dut2_tg_ip6_address} +| | ... | ${prefix6} | ${prefix4} +| | ... +| | Set Interface State | ${dut1} | ${dut1_if1} | up +| | Set Interface State | ${dut1} | ${dut1_if2} | up +| | Set Interface State | ${dut2} | ${dut2_if1} | up +| | Set Interface State | ${dut2} | ${dut2_if2} | up +| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} +| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} +| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} +| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} +| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if1} | ${dut1_tg_ip6_address} +| | ... | ${prefix6} +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} +| | ... | ${dut1_dut2_ip4_address} | ${prefix4} +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} +| | ... | ${dut2_dut1_ip4_address} | ${prefix4} +| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if2} | ${dut2_tg_ip6_address} +| | ... | ${prefix6} +| | Suppress ICMPv6 router advertisement message | ${nodes} +| | Add Ip Neighbor | ${dut1} | ${dut1_if1} | 2001:1::2 | ${tg1_if1_mac} +| | Add Ip Neighbor | ${dut2} | ${dut2_if2} | 2001:2::2 | ${tg1_if2_mac} +| | Add arp on dut | ${dut1} | ${dut1_if2} | ${dut2_dut1_ip4_address} +| | ... | ${dut2_if1_mac} +| | Add arp on dut | ${dut2} | ${dut2_if1} | ${dut1_dut2_ip4_address} +| | ... | ${dut1_if2_mac} + +| Initialize SNAT in 3-node circular topology +| | [Documentation] | Initialization of 3-node topology with SNAT between DUTs: +| | ... | - set interfaces up +| | ... | - set IP addresses +| | ... | - set ARP +| | ... | - create routes +| | ... | - set SNAT - only on DUT1 +| | ... +| | Set Interface State | ${dut1} | ${dut1_if1} | up +| | Set Interface State | ${dut1} | ${dut1_if2} | up +| | Set Interface State | ${dut2} | ${dut2_if1} | up +| | Set Interface State | ${dut2} | ${dut2_if2} | up +| | All Vpp Interfaces Ready Wait | ${nodes} +| | ... +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1} | 10.0.0.1 | 20 +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} | 11.0.0.1 | 20 +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} | 11.0.0.2 | 20 +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if2} | 12.0.0.1 | 20 +| | ... +| | ${tg_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} +| | ${tg_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} +| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} +| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} +| | ... +| | Add arp on dut | ${dut1} | ${dut1_if1} | 10.0.0.2 | ${tg_if1_mac} +| | Add arp on dut | ${dut1} | ${dut1_if2} | 11.0.0.2 | ${dut2_if1_mac} +| | Add arp on dut | ${dut2} | ${dut2_if1} | 11.0.0.1 | ${dut1_if2_mac} +| | Add arp on dut | ${dut2} | ${dut2_if2} | 12.0.0.2 | ${tg_if2_mac} +| | ... +| | Vpp Route Add | ${dut1} | 12.0.0.2 | 32 | 11.0.0.2 | ${dut1_if2} +| | Vpp Route Add | ${dut1} | 20.0.0.0 | 18 | 10.0.0.2 | ${dut1_if1} +| | Vpp Route Add | ${dut2} | 12.0.0.0 | 24 | 12.0.0.2 | ${dut2_if2} +| | Vpp Route Add | ${dut2} | 200.0.0.0 | 30 | 11.0.0.1 | ${dut2_if1} +| | ... +| | Configure inside and outside interfaces +| | ... | ${dut1} | ${dut1_if1} | ${dut1_if2} +| | Configure deterministic mode for SNAT +| | ... | ${dut1} | 20.0.0.0 | 18 | 200.0.0.0 | 30 diff --git a/resources/libraries/robot/performance/performance_setup.robot b/resources/libraries/robot/performance/performance_setup.robot new file mode 100644 index 0000000000..a2aaa52bc8 --- /dev/null +++ b/resources/libraries/robot/performance/performance_setup.robot @@ -0,0 +1,532 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_configuration.robot +| Resource | resources/libraries/robot/performance/performance_utils.robot +| Documentation | Performance suite keywords - Suite and test setups and +| ... | teardowns. + +*** Keywords *** + +# Keywords used in setups and teardowns + +| Set variables in 2-node circular topology +| | [Documentation] +| | ... | Compute path for testing on two given nodes in circular +| | ... | topology and set corresponding suite variables. +| | ... +| | ... | _NOTE:_ This KW sets following suite variables: +| | ... | - tg - TG node +| | ... | - tg_if1 - 1st TG interface towards DUT. +| | ... | - tg_if2 - 2nd TG interface towards DUT. +| | ... | - dut1 - DUT1 node +| | ... | - dut1_if1 - 1st DUT interface towards TG. +| | ... | - dut1_if2 - 2nd DUT interface towards TG. +| | ... +| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | Compute Path | always_same_link=${FALSE} +| | ${tg_if1} | ${tg}= | First Interface +| | ${dut1_if1} | ${dut1}= | First Ingress Interface +| | ${dut1_if2} | ${dut1}= | Last Egress Interface +| | ${tg_if2} | ${tg}= | Last Interface +| | Set Suite Variable | ${tg} +| | Set Suite Variable | ${tg_if1} +| | Set Suite Variable | ${tg_if2} +| | Set Suite Variable | ${dut1} +| | Set Suite Variable | ${dut1_if1} +| | Set Suite Variable | ${dut1_if2} + +| Set variables in 3-node circular topology +| | [Documentation] +| | ... | Compute path for testing on three given nodes in circular +| | ... | topology and set corresponding suite variables. +| | ... +| | ... | _NOTE:_ This KW sets following suite variables: +| | ... | - tg - TG node +| | ... | - tg_if1 - TG interface towards DUT1. +| | ... | - tg_if2 - TG interface towards DUT2. +| | ... | - dut1 - DUT1 node +| | ... | - dut1_if1 - DUT1 interface towards TG. +| | ... | - dut1_if2 - DUT1 interface towards DUT2. +| | ... | - dut2 - DUT2 node +| | ... | - dut2_if1 - DUT2 interface towards DUT1. +| | ... | - dut2_if2 - DUT2 interface towards TG. +| | ... +| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} +| | ... | ${nodes['TG']} +| | Compute Path +| | ${tg_if1} | ${tg}= | Next Interface +| | ${dut1_if1} | ${dut1}= | Next Interface +| | ${dut1_if2} | ${dut1}= | Next Interface +| | ${dut2_if1} | ${dut2}= | Next Interface +| | ${dut2_if2} | ${dut2}= | Next Interface +| | ${tg_if2} | ${tg}= | Next Interface +| | Set Suite Variable | ${tg} +| | Set Suite Variable | ${tg_if1} +| | Set Suite Variable | ${tg_if2} +| | Set Suite Variable | ${dut1} +| | Set Suite Variable | ${dut1_if1} +| | Set Suite Variable | ${dut1_if2} +| | Set Suite Variable | ${dut2} +| | Set Suite Variable | ${dut2_if1} +| | Set Suite Variable | ${dut2_if2} + +| Set variables in 2-node circular topology with DUT interface model +| | [Documentation] +| | ... | Compute path for testing on two given nodes in circular topology +| | ... | based on interface model provided as an argument and set +| | ... | corresponding suite variables. +| | ... +| | ... | *Arguments:* +| | ... | - iface_model - Interface model. Type: string +| | ... +| | ... | _NOTE:_ This KW sets following suite variables: +| | ... | - tg - TG node +| | ... | - tg_if1 - 1st TG interface towards DUT. +| | ... | - tg_if2 - 2nd TG interface towards DUT. +| | ... | - dut1 - DUT1 node +| | ... | - dut1_if1 - 1st DUT interface towards TG. +| | ... | - dut1_if2 - 2nd DUT interface towards TG. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Set variables in 2-node circular topology with DUT interface model\ +| | ... | \| Intel-X520-DA2 \| +| | ... +| | [Arguments] | ${iface_model} +| | ... +| | ${iface_model_list}= | Create list | ${iface_model} +| | Append Node | ${nodes['TG']} +| | Append Node | ${nodes['DUT1']} | filter_list=${iface_model_list} +| | Append Node | ${nodes['TG']} +| | Compute Path | always_same_link=${FALSE} +| | ${tg_if1} | ${tg}= | First Interface +| | ${dut1_if1} | ${dut1}= | First Ingress Interface +| | ${dut1_if2} | ${dut1}= | Last Egress Interface +| | ${tg_if2} | ${tg}= | Last Interface +| | Set Suite Variable | ${tg} +| | Set Suite Variable | ${tg_if1} +| | Set Suite Variable | ${tg_if2} +| | Set Suite Variable | ${dut1} +| | Set Suite Variable | ${dut1_if1} +| | Set Suite Variable | ${dut1_if2} + +| Set variables in 3-node circular topology with DUT interface model +| | [Documentation] +| | ... | Compute path for testing on three given nodes in circular topology +| | ... | based on interface model provided as an argument and set +| | ... | corresponding suite variables. +| | ... +| | ... | *Arguments:* +| | ... | - iface_model - Interface model. Type: string +| | ... +| | ... | _NOTE:_ This KW sets following suite variables: +| | ... | - tg - TG node +| | ... | - tg_if1 - TG interface towards DUT1. +| | ... | - tg_if2 - TG interface towards DUT2. +| | ... | - dut1 - DUT1 node +| | ... | - dut1_if1 - DUT1 interface towards TG. +| | ... | - dut1_if2 - DUT1 interface towards DUT2. +| | ... | - dut2 - DUT2 node +| | ... | - dut2_if1 - DUT2 interface towards TG. +| | ... | - dut2_if2 - DUT2 interface towards DUT1. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Set variables in 3-node circular topology with DUT interface model\ +| | ... | \| Intel-X520-DA2 \| +| | ... +| | [Arguments] | ${iface_model} +| | ... +| | ${iface_model_list}= | Create list | ${iface_model} +| | Append Node | ${nodes['TG']} +| | Append Node | ${nodes['DUT1']} | filter_list=${iface_model_list} +| | Append Node | ${nodes['DUT2']} | filter_list=${iface_model_list} +| | Append Node | ${nodes['TG']} +| | Compute Path +| | ${tg_if1} | ${tg}= | Next Interface +| | ${dut1_if1} | ${dut1}= | Next Interface +| | ${dut1_if2} | ${dut1}= | Next Interface +| | ${dut2_if1} | ${dut2}= | Next Interface +| | ${dut2_if2} | ${dut2}= | Next Interface +| | ${tg_if2} | ${tg}= | Next Interface +| | Set Suite Variable | ${tg} +| | Set Suite Variable | ${tg_if1} +| | Set Suite Variable | ${tg_if2} +| | Set Suite Variable | ${dut1} +| | Set Suite Variable | ${dut1_if1} +| | Set Suite Variable | ${dut1_if2} +| | Set Suite Variable | ${dut2} +| | Set Suite Variable | ${dut2_if1} +| | Set Suite Variable | ${dut2_if2} + +| Tear down guest VM with dpdk-testpmd +| | [Documentation] +| | ... | Stop all qemu processes with dpdk-testpmd running on ${dut_node}. +| | ... | Argument is dictionary of all qemu nodes running with its names. +| | ... | Dpdk-testpmd is stopped gracefully with printing stats. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - Node where to clean qemu. Type: dictionary +| | ... | - dut_vm_refs - VM references on node. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Tear down guest VM with dpdk-testpmd \| ${node['DUT1']} \ +| | ... | \| ${dut_vm_refs} \| +| | ... +| | [Arguments] | ${dut_node} | ${dut_vm_refs} +| | ${vms_number}= | Get Length | ${dut_vm_refs} +| | ${index}= | Set Variable | ${0} +| | :FOR | ${vm_name} | IN | @{dut_vm_refs} +| | | ${vm}= | Get From Dictionary | ${dut_vm_refs} | ${vm_name} +| | | ${index}= | Evaluate | ${index} + 1 +| | | Dpdk Testpmd Stop | ${vm} +| | | Run Keyword | ${vm_name}.Qemu Set Node | ${dut_node} +| | | Run Keyword | ${vm_name}.Qemu Clear Socks +| | | Run Keyword If | '${index}' == '${vms_number}' | ${vm_name}.Qemu Kill All + +| Tear down guest VM +| | [Documentation] +| | ... | Stop all qemu processes running on ${dut_node}. +| | ... | Argument is dictionary of all qemu nodes running with its names. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - Node where to clean qemu. Type: dictionary +| | ... | - dut_vm_refs - VM references on node. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Tear down guest VM \| ${node['DUT1']} \ +| | ... | \| ${dut_vm_refs} \| +| | ... +| | [Arguments] | ${dut_node} | ${dut_vm_refs} +| | ${vms_number}= | Get Length | ${dut_vm_refs} +| | ${index}= | Set Variable | ${0} +| | :FOR | ${vm_name} | IN | @{dut_vm_refs} +| | | ${vm}= | Get From Dictionary | ${dut_vm_refs} | ${vm_name} +| | | ${index}= | Evaluate | ${index} + 1 +| | | Run Keyword | ${vm_name}.Qemu Set Node | ${dut_node} +| | | Run Keyword | ${vm_name}.Qemu Clear Socks +| | | Run Keyword If | '${index}' == '${vms_number}' | ${vm_name}.Qemu Kill All + +# Suite setups + +| Set up 2-node performance topology with DUT's NIC model +| | [Documentation] +| | ... | Suite preparation phase that setup default startup configuration of +| | ... | VPP on all DUTs. Updates interfaces on all nodes and setup global +| | ... | variables used in test cases based on interface model provided as an +| | ... | argument. Initializes traffic generator. +| | ... +| | ... | *Arguments:* +| | ... | - topology_type - Topology type. Type: string +| | ... | - nic_model - Interface model. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| 2-node Performance Suite Setup \| L2 \| Intel-X520-DA2 \| +| | ... +| | [Arguments] | ${topology_type} | ${nic_model} +| | ... +| | Show vpp version on all DUTs +| | Set variables in 2-node circular topology with DUT interface model +| | ... | ${nic_model} +| | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2} +| | ... | ${dut1} | ${dut1_if1} | ${dut1} | ${dut1_if2} | ${topology_type} + +| Set up 2-node-switched performance topology with DUT's NIC model +| | [Documentation] +| | ... | Suite preparation phase that setup default startup configuration of +| | ... | VPP on all DUTs. Updates interfaces on all nodes and setup global +| | ... | variables used in test cases based on interface model provided as an +| | ... | argument. Initializes traffic generator. +| | ... +| | ... | *Arguments:* +| | ... | - topology_type - Topology type. Type: string +| | ... | - nic_model - Interface model. Type: string +| | ... | - tg_if1_dest_mac - Interface 1 destination MAC address. Type: string +| | ... | - tg_if2_dest_mac - Interface 2 destination MAC address. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| 2-node Performance Suite Setup \| L2 \| Intel-X520-DA2 \ +| | ... | \| 22:22:33:44:55:66 \| 22:22:33:44:55:55 \| +| | ... +| | [Arguments] | ${topology_type} | ${nic_model} | ${tg_if1_dest_mac} +| | ... | ${tg_if2_dest_mac} +| | ... +| | Show vpp version on all DUTs +| | Set variables in 2-node circular topology with DUT interface model +| | ... | ${nic_model} +| | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2} +| | ... | ${dut1} | ${dut1_if1} | ${dut1} | ${dut1_if2} | ${topology_type} +| | ... | ${tg_if1_dest_mac} | ${tg_if2_dest_mac} + +| Set up 3-node performance topology with DUT's NIC model +| | [Documentation] +| | ... | Suite preparation phase that setup default startup configuration of +| | ... | VPP on all DUTs. Updates interfaces on all nodes and setup global +| | ... | variables used in test cases based on interface model provided as an +| | ... | argument. Initializes traffic generator. +| | ... +| | ... | *Arguments:* +| | ... | - topology_type - Topology type. Type: string +| | ... | - nic_model - Interface model. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Set up 3-node performance topology with DUT's NIC model \| L2 \ +| | ... | \| Intel-X520-DA2 \| +| | ... +| | [Arguments] | ${topology_type} | ${nic_model} +| | ... +| | Show vpp version on all DUTs +| | Set variables in 3-node circular topology with DUT interface model +| | ... | ${nic_model} +| | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2} +| | ... | ${dut1} | ${dut1_if1} | ${dut2} | ${dut2_if2} | ${topology_type} + +| Set up DPDK 2-node performance topology with DUT's NIC model +| | [Documentation] +| | ... | Updates interfaces on all nodes and setup global +| | ... | variables used in test cases based on interface model provided as an +| | ... | argument. Initializes traffic generator. Initializes DPDK test +| | ... | environment. +| | ... +| | ... | *Arguments:* +| | ... | - topology_type - Topology type. Type: string +| | ... | - nic_model - Interface model. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Set up DPDK 2-node performance topology with DUT's NIC model \ +| | ... | \| L2 \| Intel-X520-DA2 \| +| | ... +| | [Arguments] | ${topology_type} | ${nic_model} +| | ... +| | Set variables in 2-node circular topology with DUT interface model +| | ... | ${nic_model} +| | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2} +| | ... | ${dut1} | ${dut1_if1} | ${dut1} | ${dut1_if2} | ${topology_type} +| | Initialize DPDK Environment | ${dut1} | ${dut1_if1} | ${dut1_if2} + +| Set up DPDK 3-node performance topology with DUT's NIC model +| | [Documentation] +| | ... | Updates interfaces on all nodes and setup global +| | ... | variables used in test cases based on interface model provided as an +| | ... | argument. Initializes traffic generator. Initializes DPDK test +| | ... | environment. +| | ... +| | ... | *Arguments:* +| | ... | - topology_type - Topology type. Type: string +| | ... | - nic_model - Interface model. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| 3-node Performance Suite Setup \| L2 \| Intel-X520-DA2 \| +| | ... +| | [Arguments] | ${topology_type} | ${nic_model} +| | ... +| | Set variables in 3-node circular topology with DUT interface model +| | ... | ${nic_model} +| | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2} +| | ... | ${dut1} | ${dut1_if1} | ${dut2} | ${dut2_if2} | ${topology_type} +| | Initialize DPDK Environment | ${dut1} | ${dut1_if1} | ${dut1_if2} +| | Initialize DPDK Environment | ${dut2} | ${dut2_if1} | ${dut2_if2} + +| Set up IPSec performance test suite +| | [Documentation] +| | ... | Suite preparation phase that sets default startup configuration of +| | ... | VPP on all DUTs. Updates interfaces on all nodes and sets global +| | ... | variables used in test cases based on interface model provided as an +| | ... | argument. Initializes traffic generator. +| | ... | Then it configures crypto device and kernel module on all DUTs. +| | ... +| | ... | *Arguments:* +| | ... | - topology_type - Topology type. Type: string +| | ... | - nic_model - Interface model. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Set up IPSec performance test suite \| L2 \ +| | ... | \| Intel-X520-DA2 \| +| | ... +| | [Arguments] | ${topology_type} | ${nic_model} +| | ... +| | Set up 3-node performance topology with DUT's NIC model +| | ... | ${topology_type} | ${nic_model} +| | Configure crypto device on all DUTs | force_init=${True} +| | Configure kernel module on all DUTs | igb_uio | force_load=${True} + +# Suite teardowns + +| Tear down 3-node performance topology +| | [Documentation] +| | ... | Suite teardown phase with traffic generator teardown. +| | ... +| | Teardown traffic generator | ${tg} + +| Tear down 2-node performance topology +| | [Documentation] +| | ... | Suite teardown phase with traffic generator teardown. +| | ... +| | Teardown traffic generator | ${tg} + +# Tests setups + +| Set up performance test +| | [Documentation] | Common test setup for performance tests. +| | ... +| | Reset VAT History On All DUTs | ${nodes} +| | Create base startup configuration of VPP on all DUTs + +# Tests teardowns + +| Tear down performance discovery test +| | [Documentation] | Common test teardown for ndrdisc and pdrdisc performance \ +| | ... | tests. +| | ... +| | ... | *Arguments:* +| | ... | - rate - Rate for sending packets. Type: string +| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - topology_type - Topology type. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Tear down performance discovery test \| 4.0mpps \| 64 \ +| | ... | \| 3-node-IPv4 \| +| | ... +| | [Arguments] | ${rate} | ${framesize} | ${topology_type} +| | ... +| | Show VAT History On All DUTs | ${nodes} +| | Show statistics on all DUTs +| | Run Keyword If Test Failed +| | ... | Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${topology_type} | fail_on_loss=${False} + +| Tear down performance ndrchk test +| | [Documentation] | Common test teardown for ndrchk performance tests. +| | ... +| | Show VAT History On All DUTs | ${nodes} +| | Show statistics on all DUTs + +| Tear down performance pdrchk test +| | [Documentation] | Common test teardown for pdrchk performance tests. +| | ... +| | Show VAT History On All DUTs | ${nodes} +| | Show statistics on all DUTs + +| Tear down performance test with vhost and VM with dpdk-testpmd +| | [Documentation] | Common test teardown for performance tests which use +| | ... | vhost(s) and VM(s) with dpdk-testpmd. +| | ... +| | ... | *Arguments:* +| | ... | - rate - Rate for sending packets. Type: string +| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - topology_type - Topology type. Type: string +| | ... | - dut1_node - Node where to clean qemu. Type: dictionary +| | ... | - dut1_vm_refs - VM references on node. Type: dictionary +| | ... | - dut2_node - Node where to clean qemu. Type: dictionary +| | ... | - dut2_vm_refs - VM references on node. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Tear down performance test with vhost and VM with dpdk-testpmd \ +| | ... | \| 4.0mpps \| 64 \| 3-node-IPv4 \| ${node['DUT1']} \| ${dut_vm_refs} \ +| | ... | \| ${node['DUT2']} \| ${dut_vm_refs} \| +| | ... +| | [Arguments] | ${rate} | ${framesize} | ${topology_type} +| | ... | ${dut1_node}=${None} | ${dut1_vm_refs}=${None} +| | ... | ${dut2_node}=${None} | ${dut2_vm_refs}=${None} +| | ... +| | Show VAT History On All DUTs | ${nodes} +| | Show VPP vhost on all DUTs +| | Show statistics on all DUTs +| | Run Keyword If Test Failed +| | ... | Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${topology_type} | fail_on_loss=${False} +| | Run keyword unless | ${dut1_node}==${None} +| | ... | Tear down guest VM with dpdk-testpmd | ${dut1} | ${dut1_vm_refs} +| | Run keyword unless | ${dut2_node}==${None} +| | ... | Tear down guest VM with dpdk-testpmd | ${dut2} | ${dut2_vm_refs} + +| Tear down performance pdrchk test with vhost and VM with dpdk-testpmd +| | [Documentation] | Common test teardown for performance pdrchk tests which \ +| | ... | use vhost(s) and VM(s) with dpdk-testpmd. +| | ... +| | ... | *Arguments:* +| | ... | - rate - Rate for sending packets. Type: string +| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - topology_type - Topology type. Type: string +| | ... | - dut1_node - Node where to clean qemu. Type: dictionary +| | ... | - dut1_vm_refs - VM references on node. Type: dictionary +| | ... | - dut2_node - Node where to clean qemu. Type: dictionary +| | ... | - dut2_vm_refs - VM references on node. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Tear down performance pdrchk test with vhost and VM with \ +| | ... | dpdk-testpmd \| 4.0mpps \| 64 \| 3-node-IPv4 \| ${node['DUT1']} \ +| | ... | \| ${dut_vm_refs} \| ${node['DUT2']} \| ${dut_vm_refs} \| +| | ... +| | [Arguments] | ${rate} | ${framesize} | ${topology_type} +| | ... | ${dut1_node}=${None} | ${dut1_vm_refs}=${None} +| | ... | ${dut2_node}=${None} | ${dut2_vm_refs}=${None} +| | ... +| | Show VAT History On All DUTs | ${nodes} +| | Show VPP vhost on all DUTs +| | Show statistics on all DUTs +| | Run keyword unless | ${dut1_node}==${None} +| | ... | Tear down guest VM with dpdk-testpmd | ${dut1} | ${dut1_vm_refs} +| | Run keyword unless | ${dut2_node}==${None} +| | ... | Tear down guest VM with dpdk-testpmd | ${dut2} | ${dut2_vm_refs} + +| Tear down DPDK 3-node performance topology +| | [Documentation] +| | ... | Suite teardown phase with traffic generator teardown. +| | ... | Cleanup DPDK test environment. +| | ... +| | Teardown traffic generator | ${tg} +| | Cleanup DPDK Environment | ${dut1} | ${dut1_if1} | ${dut1_if2} +| | Cleanup DPDK Environment | ${dut2} | ${dut2_if1} | ${dut2_if2} + +| Tear down DPDK 2-node performance topology +| | [Documentation] +| | ... | Suite teardown phase with traffic generator teardown. +| | ... | Cleanup DPDK test environment. +| | ... +| | Teardown traffic generator | ${tg} +| | Cleanup DPDK Environment | ${dut1} | ${dut1_if1} | ${dut1_if2} + +| Tear down performance discovery test with SNAT +| | [Documentation] | Common test teardown for ndrdisc and pdrdisc performance \ +| | ... | tests with SNAT feature used. +| | ... +| | ... | *Arguments:* +| | ... | - rate - Rate for sending packets. Type: string +| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - topology_type - Topology type. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Tear down performance discovery test with SNAT \| 4.0mpps \| 64 \ +| | ... | \| ${traffic_profile} \| +| | ... +| | [Arguments] | ${rate} | ${framesize} | ${traffic_profile} +| | ... +| | Tear down performance discovery test | ${rate}pps | ${framesize} +| | ... | ${traffic_profile} +| | Show SNAT verbose | ${dut1} +| | Show SNAT verbose | ${dut2} diff --git a/resources/libraries/robot/performance/performance_utils.robot b/resources/libraries/robot/performance/performance_utils.robot new file mode 100644 index 0000000000..544aaeb343 --- /dev/null +++ b/resources/libraries/robot/performance/performance_utils.robot @@ -0,0 +1,545 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | Collections +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.DpdkUtil +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.VhostUser +| Library | resources.libraries.python.TrafficGenerator +| Library | resources.libraries.python.TrafficGenerator.TGDropRateSearchImpl +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/counters.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/l2/l2_xconnect.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| Documentation | Performance suite keywords - utilities to find and verify NDR +| ... | and PDR. + +*** Keywords *** +| Calculate pps +| | [Documentation] +| | ... | Calculate pps for given rate and L2 frame size, +| | ... | additional 20B are added to L2 frame size as padding. +| | ... +| | ... | *Arguments* +| | ... | - bps - Rate in bps. Type: integer +| | ... | - framesize - L2 frame size in Bytes. Type: integer +| | ... +| | ... | *Return* +| | ... | - Calculated pps. Type: integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Calculate pps \| 10000000000 \| 64 \| +| | ... +| | [Arguments] | ${bps} | ${framesize} +| | ... +| | ${framesize}= | Get Frame Size | ${framesize} +| | ${ret}= | Evaluate | (${bps}/((${framesize}+20)*8)).__trunc__() +| | Return From Keyword | ${ret} + +| Get Frame Size +| | [Documentation] +| | ... | Framesize can be either integer in case of a single packet +| | ... | in stream, or set of packets in case of IMIX type or simmilar. +| | ... | This keyword returns average framesize. +| | ... +| | ... | *Arguments:* +| | ... | - framesize - Framesize. Type: integer or string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Get Frame Size \| IMIX_v4_1 \| +| | ... +| | [Arguments] | ${framesize} +| | ... +| | Run Keyword If | '${framesize}' == 'IMIX_v4_1' +| | ... | Return From Keyword | 353.83333 +| | Return From Keyword | ${framesize} + +| Is DPDK performance test +| | [Documentation] +| | ... | Return TRUE if variable DPDK_TEST exist, otherwise FALSE. +| | ${ret} | ${tmp}= | Run Keyword And Ignore Error +| | ... | Variable Should Exist | ${DPDK_TEST} +| | Return From Keyword If | "${ret}" == "PASS" | ${TRUE} +| | Return From Keyword | ${FALSE} + +| Find NDR using linear search and pps +| | [Documentation] +| | ... | Find throughput by using RFC2544 linear search with non drop rate. +| | ... +| | ... | *Arguments:* +| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - start_rate - Initial start rate [pps]. Type: float +| | ... | - step_rate - Step of linear search [pps]. Type: float +| | ... | - topology_type - Topology type. Type: string +| | ... | - min_rate - Lower limit of search [pps]. Type: float +| | ... | - max_rate - Upper limit of search [pps]. Type: float +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Find NDR using linear search and pps \| 64 \| 5000000 \ +| | ... | \| 100000 \| 3-node-IPv4 \| 100000 \| 14880952 \| +| | ... +| | [Arguments] | ${framesize} | ${start_rate} | ${step_rate} +| | ... | ${topology_type} | ${min_rate} | ${max_rate} +| | ... +| | ${duration}= | Set Variable | ${perf_trial_duration} +| | Set Duration | ${duration} +| | Set Search Rate Boundaries | ${max_rate} | ${min_rate} +| | Set Search Linear Step | ${step_rate} +| | Set Search Frame Size | ${framesize} +| | Set Search Rate Type pps +| | Linear Search | ${start_rate} | ${topology_type} +| | ${rate_per_stream} | ${lat}= | Verify Search Result +| | ${tmp}= | Create List | 100%NDR | ${lat} +| | ${latency}= | Create List | ${tmp} +| | ${rate_50p}= | Evaluate | int(${rate_per_stream}*0.5) +| | ${lat_50p}= | Measure latency pps | ${duration} | ${rate_50p} +| | ... | ${framesize} | ${topology_type} +| | ${tmp}= | Create List | 50%NDR | ${lat_50p} +| | Append To List | ${latency} | ${tmp} +| | ${rate_10p}= | Evaluate | int(${rate_per_stream}*0.1) +| | ${lat_10p}= | Measure latency pps | ${duration} | ${rate_10p} +| | ... | ${framesize} | ${topology_type} +| | ${tmp}= | Create List | 10%NDR | ${lat_10p} +| | Append To List | ${latency} | ${tmp} +| | Display result of NDR search | ${rate_per_stream} | ${framesize} | 2 +| | ... | ${latency} +| | Traffic should pass with no loss | ${duration} | ${rate_per_stream}pps +| | ... | ${framesize} | ${topology_type} | fail_on_loss=${False} + +| Find PDR using linear search and pps +| | [Documentation] +| | ... | Find throughput by using RFC2544 linear search with partial drop rate +| | ... | with PDR threshold and type specified by parameter. +| | ... +| | ... | *Arguments:* +| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - start_rate - Initial start rate [pps]. Type: float +| | ... | - step_rate - Step of linear search [pps]. Type: float +| | ... | - topology_type - Topology type. Type: string +| | ... | - min_rate - Lower limit of search [pps]. Type: float +| | ... | - max_rate - Upper limit of search [pps]. Type: float +| | ... | - loss_acceptance - Accepted loss during search. Type: float +| | ... | - loss_acceptance_type - Percentage or frames. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Find PDR using linear search and pps \| 64 \| 5000000 \ +| | ... | \| 100000 \| 3-node-IPv4 \| 100000 \| 14880952 \| 0.5 \| percentage \| +| | ... +| | [Arguments] | ${framesize} | ${start_rate} | ${step_rate} +| | ... | ${topology_type} | ${min_rate} | ${max_rate} +| | ... | ${loss_acceptance}=0 | ${loss_acceptance_type}='frames' +| | ... +| | ${duration}= | Set Variable | ${perf_trial_duration} +| | Set Duration | ${duration} +| | Set Search Rate Boundaries | ${max_rate} | ${min_rate} +| | Set Search Linear Step | ${step_rate} +| | Set Search Frame Size | ${framesize} +| | Set Search Rate Type pps +| | Set Loss Acceptance | ${loss_acceptance} +| | Run Keyword If | '${loss_acceptance_type}' == 'percentage' +| | ... | Set Loss Acceptance Type Percentage +| | Linear Search | ${start_rate} | ${topology_type} +| | ${rate_per_stream} | ${lat}= | Verify Search Result +| | ${tmp}= | Create List | 100%PDR | ${lat} +| | ${latency}= | Create List | ${tmp} +| | Display result of PDR search | ${rate_per_stream} | ${framesize} | 2 +| | ... | ${loss_acceptance} | ${loss_acceptance_type} | ${latency} +| | Traffic should pass with partial loss | ${duration} | ${rate_per_stream}pps +| | ... | ${framesize} | ${topology_type} | ${loss_acceptance} +| | ... | ${loss_acceptance_type} | fail_on_loss=${False} + +| Find NDR using binary search and pps +| | [Documentation] +| | ... | Find throughput by using RFC2544 binary search with non drop rate. +| | ... +| | ... | *Arguments:* +| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - binary_min - Lower boundary of search [pps]. Type: float +| | ... | - binary_max - Upper boundary of search [pps]. Type: float +| | ... | - topology_type - Topology type. Type: string +| | ... | - min_rate - Lower limit of search [pps]. Type: float +| | ... | - max_rate - Upper limit of search [pps]. Type: float +| | ... | - threshold - Threshold to stop search [pps]. Type: integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Find NDR using binary search and pps \| 64 \| 6000000 \ +| | ... | \| 12000000 \| 3-node-IPv4 \| 100000 \| 14880952 \| 50000 \| +| | ... +| | [Arguments] | ${framesize} | ${binary_min} | ${binary_max} +| | ... | ${topology_type} | ${min_rate} | ${max_rate} | ${threshold} +| | ... +| | ${duration}= | Set Variable | ${perf_trial_duration} +| | Set Duration | ${duration} +| | Set Search Rate Boundaries | ${max_rate} | ${min_rate} +| | Set Search Frame Size | ${framesize} +| | Set Search Rate Type pps +| | Set Binary Convergence Threshold | ${threshold} +| | Binary Search | ${binary_min} | ${binary_max} | ${topology_type} +| | ${rate_per_stream} | ${lat}= | Verify Search Result +| | ${tmp}= | Create List | 100%NDR | ${lat} +| | ${latency}= | Create List | ${tmp} +| | ${rate_50p}= | Evaluate | int(${rate_per_stream}*0.5) +| | ${lat_50p}= | Measure latency pps | ${duration} | ${rate_50p} +| | ... | ${framesize} | ${topology_type} +| | ${tmp}= | Create List | 50%NDR | ${lat_50p} +| | Append To List | ${latency} | ${tmp} +| | ${rate_10p}= | Evaluate | int(${rate_per_stream}*0.1) +| | ${lat_10p}= | Measure latency pps | ${duration} | ${rate_10p} +| | ... | ${framesize} | ${topology_type} +| | ${tmp}= | Create List | 10%NDR | ${lat_10p} +| | Append To List | ${latency} | ${tmp} +| | Display result of NDR search | ${rate_per_stream} | ${framesize} | 2 +| | ... | ${latency} +| | Traffic should pass with no loss | ${duration} | ${rate_per_stream}pps +| | ... | ${framesize} | ${topology_type} | fail_on_loss=${False} + +| Find PDR using binary search and pps +| | [Documentation] +| | ... | Find throughput by using RFC2544 binary search with partial drop rate +| | ... | with PDR threshold and type specified by parameter. +| | ... +| | ... | *Arguments:* +| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - binary_min - Lower boundary of search [pps]. Type: float +| | ... | - binary_max - Upper boundary of search [pps]. Type: float +| | ... | - topology_type - Topology type. Type: string +| | ... | - min_rate - Lower limit of search [pps]. Type: float +| | ... | - max_rate - Upper limit of search [pps]. Type: float +| | ... | - threshold - Threshold to stop search [pps]. Type: integer +| | ... | - loss_acceptance - Accepted loss during search. Type: float +| | ... | - loss_acceptance_type - Percentage or frames. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Find PDR using binary search and pps \| 64 \| 6000000 \ +| | ... | \| 12000000 \| 3-node-IPv4 \| 100000 \| 14880952 \| 50000 \| 0.5 \ +| | ... | \| percentage \| +| | ... +| | [Arguments] | ${framesize} | ${binary_min} | ${binary_max} +| | ... | ${topology_type} | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${loss_acceptance}=0 | ${loss_acceptance_type}='frames' +| | ... +| | ${duration}= | Set Variable | ${perf_trial_duration} +| | Set Duration | ${duration} +| | Set Search Rate Boundaries | ${max_rate} | ${min_rate} +| | Set Search Frame Size | ${framesize} +| | Set Search Rate Type pps +| | Set Loss Acceptance | ${loss_acceptance} +| | Run Keyword If | '${loss_acceptance_type}' == 'percentage' +| | ... | Set Loss Acceptance Type Percentage +| | Set Binary Convergence Threshold | ${threshold} +| | Binary Search | ${binary_min} | ${binary_max} | ${topology_type} +| | ${rate_per_stream} | ${lat}= | Verify Search Result +| | ${tmp}= | Create List | 100%PDR | ${lat} +| | ${latency}= | Create List | ${tmp} +| | Display result of PDR search | ${rate_per_stream} | ${framesize} | 2 +| | ... | ${loss_acceptance} | ${loss_acceptance_type} | ${latency} +| | Traffic should pass with partial loss | ${duration} | ${rate_per_stream}pps +| | ... | ${framesize} | ${topology_type} | ${loss_acceptance} +| | ... | ${loss_acceptance_type} | fail_on_loss=${False} + +| Find NDR using combined search and pps +| | [Documentation] +| | ... | Find throughput by using RFC2544 combined search (linear+binary) with +| | ... | non drop rate. +| | ... +| | ... | *Arguments:* +| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - start_rate - Initial start rate [pps]. Type: float +| | ... | - step_rate - Step of linear search [pps]. Type: float +| | ... | - topology_type - Topology type. Type: string +| | ... | - min_rate - Lower limit of search [pps]. Type: float +| | ... | - max_rate - Upper limit of search [pps]. Type: float +| | ... | - threshold - Threshold to stop search [pps]. Type: integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Find NDR using combined search and pps \| 64 \| 5000000 \ +| | ... | \| 100000 \| 3-node-IPv4 \| 100000 \| 14880952 \| 5000 \| +| | ... +| | [Arguments] | ${framesize} | ${start_rate} | ${step_rate} +| | ... | ${topology_type} | ${min_rate} | ${max_rate} | ${threshold} +| | ... +| | ${duration}= | Set Variable | ${perf_trial_duration} +| | Set Duration | ${duration} +| | Set Search Rate Boundaries | ${max_rate} | ${min_rate} +| | Set Search Linear Step | ${step_rate} +| | Set Search Frame Size | ${framesize} +| | Set Search Rate Type pps +| | Set Binary Convergence Threshold | ${threshold} +| | Combined Search | ${start_rate} | ${topology_type} +| | ${rate_per_stream} | ${lat}= | Verify Search Result +| | ${tmp}= | Create List | 100%NDR | ${lat} +| | ${latency}= | Create List | ${tmp} +| | ${rate_50p}= | Evaluate | int(${rate_per_stream}*0.5) +| | ${lat_50p}= | Measure latency pps | ${duration} | ${rate_50p} +| | ... | ${framesize} | ${topology_type} +| | ${tmp}= | Create List | 50%NDR | ${lat_50p} +| | Append To List | ${latency} | ${tmp} +| | ${rate_10p}= | Evaluate | int(${rate_per_stream}*0.1) +| | ${lat_10p}= | Measure latency pps | ${duration} | ${rate_10p} +| | ... | ${framesize} | ${topology_type} +| | ${tmp}= | Create List | 10%NDR | ${lat_10p} +| | Append To List | ${latency} | ${tmp} +| | Display result of NDR search | ${rate_per_stream} | ${framesize} | 2 +| | ... | ${latency} +| | Traffic should pass with no loss | ${duration} | ${rate_per_stream}pps +| | ... | ${framesize} | ${topology_type} +| | ... | fail_on_loss=${False} + +| Find PDR using combined search and pps +| | [Documentation] +| | ... | Find throughput by using RFC2544 combined search (linear+binary) with +| | ... | partial drop rate with PDR threshold and type specified by parameter. +| | ... +| | ... | *Arguments:* +| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - start_rate - Initial start rate [pps]. Type: float +| | ... | - step_rate - Step of linear search [pps]. Type: float +| | ... | - topology_type - Topology type. Type: string +| | ... | - min_rate - Lower limit of search [pps]. Type: float +| | ... | - max_rate - Upper limit of search [pps]. Type: float +| | ... | - threshold - Threshold to stop search [pps]. Type: integer +| | ... | - loss_acceptance - Accepted loss during search. Type: float +| | ... | - loss_acceptance_type - Percentage or frames. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Find PDR using combined search and pps \| 64 \| 5000000 \ +| | ... | \| 100000 \| 3-node-IPv4 \| 100000 \| 14880952 \| 5000 \| 0.5 \ +| | ... | \| percentage \| +| | ... +| | [Arguments] | ${framesize} | ${start_rate} | ${step_rate} +| | ... | ${topology_type} | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${loss_acceptance}=0 | ${loss_acceptance_type}='frames' +| | ... +| | ${duration}= | Set Variable | ${perf_trial_duration} +| | Set Duration | ${duration} +| | Set Search Rate Boundaries | ${max_rate} | ${min_rate} +| | Set Search Linear Step | ${step_rate} +| | Set Search Frame Size | ${framesize} +| | Set Search Rate Type pps +| | Set Loss Acceptance | ${loss_acceptance} +| | Run Keyword If | '${loss_acceptance_type}' == 'percentage' +| | ... | Set Loss Acceptance Type Percentage +| | Set Binary Convergence Threshold | ${threshold} +| | Combined Search | ${start_rate} | ${topology_type} +| | ${rate_per_stream} | ${lat}= | Verify Search Result +| | ${tmp}= | Create List | 100%PDR | ${lat} +| | ${latency}= | Create List | ${tmp} +| | Display result of PDR search | ${rate_per_stream} | ${framesize} | 2 +| | ... | ${loss_acceptance} | ${loss_acceptance_type} | ${latency} +| | Traffic should pass with partial loss | ${duration} | ${rate_per_stream}pps +| | ... | ${framesize} | ${topology_type} | ${loss_acceptance} +| | ... | ${loss_acceptance_type} | fail_on_loss=${False} + +| Display result of NDR search +| | [Documentation] +| | ... | Display result of NDR search in packet per seconds (total and per +| | ... | stream) and Gbps total bandwidth with untagged packet. +| | ... | Througput is calculated as: +| | ... | Measured rate per stream * Total number of streams +| | ... | Bandwidth is calculated as: +| | ... | (Througput * (L2 Frame Size + IPG) * 8) / Max bitrate of NIC +| | ... +| | ... | *Arguments:* +| | ... | - rate_per_stream - Measured rate per stream [pps]. Type: string +| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - nr_streams - Total number of streams. Type: integer +| | ... | - latency - Latency stats. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Display result of NDR search \| 4400000 \| 64 \| 2 \ +| | ... | \| [100%NDR, [10/10/10, 1/2/3]] \| +| | ... +| | [Arguments] | ${rate_per_stream} | ${framesize} | ${nr_streams} | ${latency} +| | ... +| | ${framesize}= | Get Frame Size | ${framesize} +| | ${rate_total}= | Evaluate | ${rate_per_stream}*${nr_streams} +| | ${bandwidth_total}= | Evaluate | ${rate_total}*(${framesize}+20)*8/(10**9) +| | Set Test Message | FINAL_RATE: ${rate_total} pps +| | Set Test Message | (${nr_streams}x ${rate_per_stream} pps) | append=yes +| | Set Test Message | ${\n}FINAL_BANDWIDTH: ${bandwidth_total} Gbps (untagged) +| | ... | append=yes +| | Set Test Message | ${\n}LATENCY usec [min/avg/max] | append=yes +| | :FOR | ${lat} | IN | @{latency} +| | | Set Test Message | ${\n}LAT_${lat[0]}: ${lat[1]} | append=yes + +| Display result of PDR search +| | [Documentation] +| | ... | Display result of PDR search in packet per seconds (total and per +| | ... | stream) and Gbps total bandwidth with untagged packet. +| | ... | Througput is calculated as: +| | ... | Measured rate per stream * Total number of streams +| | ... | Bandwidth is calculated as: +| | ... | (Througput * (L2 Frame Size + IPG) * 8) / Max bitrate of NIC +| | ... +| | ... | *Arguments:* +| | ... | - rate_per_stream - Measured rate per stream [pps]. Type: string +| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - nr_streams - Total number of streams. Type: integer +| | ... | - loss_acceptance - Accepted loss during search. Type: float +| | ... | - loss_acceptance_type - Percentage or frames. Type: string +| | ... | - latency - Latency stats. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Display result of PDR search \| 4400000 \| 64 \| 2 \| 0.5 \ +| | ... | \| percentage \| [100%NDR, [10/10/10, 1/2/3]] \| +| | ... +| | [Arguments] | ${rate_per_stream} | ${framesize} | ${nr_streams} +| | ... | ${loss_acceptance} | ${loss_acceptance_type} | ${latency} +| | ... +| | ${framesize}= | Get Frame Size | ${framesize} +| | ${rate_total}= | Evaluate | ${rate_per_stream}*${nr_streams} +| | ${bandwidth_total}= | Evaluate | ${rate_total}*(${framesize}+20)*8/(10**9) +| | Set Test Message | FINAL_RATE: ${rate_total} pps +| | Set Test Message | (${nr_streams}x ${rate_per_stream} pps) | append=yes +| | Set Test Message | ${\n}FINAL_BANDWIDTH: ${bandwidth_total} Gbps (untagged) +| | ... | append=yes +| | Set Test Message | ${\n}LATENCY usec [min/avg/max] | append=yes +| | :FOR | ${lat} | IN | @{latency} +| | | Set Test Message | ${\n}LAT_${lat[0]}: ${lat[1]} | append=yes +| | Set Test Message +| | ... | ${\n}LOSS_ACCEPTANCE: ${loss_acceptance} ${loss_acceptance_type} +| | ... | append=yes + +| Measure latency pps +| | [Documentation] +| | ... | Send traffic at specified rate. Measure min/avg/max latency +| | ... +| | ... | *Arguments:* +| | ... | - duration - Duration of traffic run [s]. Type: integer +| | ... | - rate - Rate for sending packets. Type: integer +| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - topology_type - Topology type. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Measure latency \| 10 \| 4.0 \| 64 \| 3-node-IPv4 \| +| | ... +| | [Arguments] | ${duration} | ${rate} | ${framesize} | ${topology_type} +| | ... +| | Return From Keyword If | ${rate} <= 10000 | ${-1} +| | ${ret}= | Is DPDK performance test +| | Run Keyword If | ${ret}==${FALSE} | Clear all counters on all DUTs +| | Send traffic on tg | ${duration} | ${rate}pps | ${framesize} +| | ... | ${topology_type} | warmup_time=0 +| | Run Keyword If | ${ret}==${FALSE} | Show statistics on all DUTs +| | Run keyword and return | Get latency + +| Traffic should pass with no loss +| | [Documentation] +| | ... | Send traffic at specified rate. No packet loss is accepted at loss +| | ... | evaluation. +| | ... +| | ... | *Arguments:* +| | ... | - duration - Duration of traffic run [s]. Type: integer +| | ... | - rate - Rate for sending packets. Type: string +| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - topology_type - Topology type. Type: string +| | ... | - fail_on_loss - If True, the keyword fails if loss occurred. +| | ... | Type: boolean +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Traffic should pass with no loss \| 10 \| 4.0mpps \| 64 \ +| | ... | \| 3-node-IPv4 \| +| | ... +| | [Arguments] | ${duration} | ${rate} | ${framesize} | ${topology_type} +| | ... | ${fail_on_loss}=${True} +| | ... +| | Clear and show runtime counters with running traffic | ${duration} +| | ... | ${rate} | ${framesize} | ${topology_type} +| | ${ret}= | Is DPDK performance test +| | Run Keyword If | ${ret}==${FALSE} | Clear all counters on all DUTs +| | Send traffic on tg | ${duration} | ${rate} | ${framesize} +| | ... | ${topology_type} | warmup_time=0 +| | Run Keyword If | ${ret}==${FALSE} | Show statistics on all DUTs +| | Run Keyword If | ${fail_on_loss} | No traffic loss occurred + +| Traffic should pass with partial loss +| | [Documentation] +| | ... | Send traffic at specified rate. Partial packet loss is accepted +| | ... | within loss acceptance value specified as argument. +| | ... +| | ... | *Arguments:* +| | ... | - duration - Duration of traffic run [s]. Type: integer +| | ... | - rate - Rate for sending packets. Type: string +| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - topology_type - Topology type. Type: string +| | ... | - loss_acceptance - Accepted loss during search. Type: float +| | ... | - loss_acceptance_type - Percentage or frames. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Traffic should pass with partial loss \| 10 \| 4.0mpps \| 64 \ +| | ... | \| 3-node-IPv4 \| 0.5 \| percentage \| +| | ... +| | [Arguments] | ${duration} | ${rate} | ${framesize} | ${topology_type} +| | ... | ${loss_acceptance} | ${loss_acceptance_type} +| | ... | ${fail_on_loss}=${True} +| | ... +| | Clear and show runtime counters with running traffic | ${duration} +| | ... | ${rate} | ${framesize} | ${topology_type} +| | ${ret}= | Is DPDK performance test +| | Run Keyword If | ${ret}==${FALSE} | Clear all counters on all DUTs +| | Send traffic on tg | ${duration} | ${rate} | ${framesize} +| | ... | ${topology_type} | warmup_time=0 +| | Run Keyword If | ${ret}==${FALSE} | Show statistics on all DUTs +| | Run Keyword If | ${fail_on_loss} | Partial traffic loss accepted +| | ... | ${loss_acceptance} | ${loss_acceptance_type} + +| Clear and show runtime counters with running traffic +| | [Documentation] +| | ... | Start traffic at specified rate then clear runtime counters on all +| | ... | DUTs. Wait for specified amount of time and capture runtime counters +| | ... | on all DUTs. Finally stop traffic +| | ... +| | ... | *Arguments:* +| | ... | - duration - Duration of traffic run [s]. Type: integer +| | ... | - rate - Rate for sending packets. Type: string +| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - topology_type - Topology type. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Traffic should pass with partial loss \| 10 \| 4.0mpps \| 64 \ +| | ... | \| 3-node-IPv4 \| 0.5 \| percentage \| +| | ... +| | [Arguments] | ${duration} | ${rate} | ${framesize} | ${topology_type} +| | ... +| | Send traffic on tg | -1 | ${rate} | ${framesize} | ${topology_type} +| | ... | warmup_time=0 | async_call=${True} | latency=${False} +| | ${ret}= | Is DPDK performance test +| | Run Keyword If | ${ret}==${FALSE} | Clear runtime counters on all DUTs +| | Sleep | ${duration} +| | Run Keyword If | ${ret}==${FALSE} | Show runtime counters on all DUTs +| | Stop traffic on tg diff --git a/resources/libraries/robot/performance_configuration.robot b/resources/libraries/robot/performance_configuration.robot deleted file mode 100644 index 1141c34be4..0000000000 --- a/resources/libraries/robot/performance_configuration.robot +++ /dev/null @@ -1,1597 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | Collections -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.DpdkUtil -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.VhostUser -| Library | resources.libraries.python.TrafficGenerator -| Library | resources.libraries.python.TrafficGenerator.TGDropRateSearchImpl -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/counters.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/l2_xconnect.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/tagging.robot -| Documentation | Performance suite keywords - configuration. - -*** Keywords *** -| Set interfaces in path in 2-node circular topology up -| | [Documentation] -| | ... | *Set UP state on VPP interfaces in path on nodes in 2-node circular -| | ... | topology.* -| | ... -| | Set Interface State | ${dut1} | ${dut1_if1} | up -| | Set Interface State | ${dut1} | ${dut1_if2} | up -| | Vpp Node Interfaces Ready Wait | ${dut1} - -| Set interfaces in path in 3-node circular topology up -| | [Documentation] -| | ... | *Set UP state on VPP interfaces in path on nodes in 3-node circular -| | ... | topology.* -| | ... -| | Set Interface State | ${dut1} | ${dut1_if1} | up -| | Set Interface State | ${dut1} | ${dut1_if2} | up -| | Set Interface State | ${dut2} | ${dut2_if1} | up -| | Set Interface State | ${dut2} | ${dut2_if2} | up -| | Vpp Node Interfaces Ready Wait | ${dut1} -| | Vpp Node Interfaces Ready Wait | ${dut2} - -| Initialize IPSec in 3-node circular topology -| | [Documentation] -| | ... | Set UP state on VPP interfaces in path on nodes in 3-node circular -| | ... | topology. Get the interface MAC addresses and setup ARP on all VPP -| | ... | interfaces. Setup IPv4 addresses with /24 prefix on DUT-TG and -| | ... | DUT1-DUT2 links. Set routing for encrypted traffic on both DUT nodes -| | ... | with prefix /8 and next hop of neighbour DUT or TG interface IPv4 -| | ... | address. -| | ... -| | VPP Show Crypto Device Mapping | ${dut1} -| | VPP Show Crypto Device Mapping | ${dut2} -| | Set interfaces in path in 3-node circular topology up -| | ${tg_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} -| | ${tg_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} -| | ${dut1_if1_mac}= | Get Interface MAC | ${dut1} | ${dut1_if1} -| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} -| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} -| | ${dut2_if2_mac}= | Get Interface MAC | ${dut2} | ${dut2_if2} -| | Set Interface State | ${dut1} | ${dut1_if1} | up -| | Set Interface State | ${dut1} | ${dut1_if2} | up -| | Set Interface State | ${dut2} | ${dut2_if1} | up -| | Set Interface State | ${dut2} | ${dut2_if2} | up -| | Set Test Variable | ${tg_if1_mac} -| | Set Test Variable | ${tg_if2_mac} -| | Set Test Variable | ${dut1_if1_mac} -| | Set Test Variable | ${dut1_if2_mac} -| | Set Test Variable | ${dut2_if1_mac} -| | Set Test Variable | ${dut2_if2_mac} -| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1} -| | ... | ${dut1_if1_ip4} | 24 -| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} -| | ... | ${dut1_if2_ip4} | 24 -| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} -| | ... | ${dut2_if1_ip4} | 24 -| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if2} -| | ... | ${dut2_if2_ip4} | 24 -| | Add arp on dut | ${dut1} | ${dut1_if1} | ${tg_if1_ip4} | ${tg_if1_mac} -| | Add arp on dut | ${dut1} | ${dut1_if2} | ${dut2_if1_ip4} | ${dut2_if1_mac} -| | Add arp on dut | ${dut2} | ${dut2_if2} | ${tg_if2_ip4} | ${tg_if2_mac} -| | Add arp on dut | ${dut2} | ${dut2_if1} | ${dut1_if2_ip4} | ${dut1_if2_mac} -| | Vpp Route Add | ${dut1} | ${laddr_ip4} | 8 | ${tg_if1_ip4} | ${dut1_if1} -| | Vpp Route Add | ${dut2} | ${raddr_ip4} | 8 | ${tg_if2_ip4} | ${dut2_if2} - -| Initialize IPv4 forwarding in 3-node circular topology -| | [Documentation] -| | ... | Set UP state on VPP interfaces in path on nodes in 3-node circular -| | ... | topology. Get the interface MAC addresses and setup ARP on all VPP -| | ... | interfaces. Setup IPv4 addresses with /24 prefix on DUT-TG links and -| | ... | /30 prefix on DUT1-DUT2 link. Set routing on both DUT nodes with -| | ... | prefix /24 and next hop of neighbour DUT interface IPv4 address. -| | ... -| | Set Interface State | ${dut1} | ${dut1_if1} | up -| | Set Interface State | ${dut1} | ${dut1_if2} | up -| | Set Interface State | ${dut2} | ${dut2_if1} | up -| | Set Interface State | ${dut2} | ${dut2_if2} | up -| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} -| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} -| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} -| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} -| | dut1_v4.set_arp | ${dut1_if1} | 10.10.10.2 | ${tg1_if1_mac} -| | dut1_v4.set_arp | ${dut1_if2} | 1.1.1.2 | ${dut2_if1_mac} -| | dut2_v4.set_arp | ${dut2_if1} | 1.1.1.1 | ${dut1_if2_mac} -| | dut2_v4.set_arp | ${dut2_if2} | 20.20.20.2 | ${tg1_if2_mac} -| | dut1_v4.set_ip | ${dut1_if1} | 10.10.10.1 | 24 -| | dut1_v4.set_ip | ${dut1_if2} | 1.1.1.1 | 30 -| | dut2_v4.set_ip | ${dut2_if1} | 1.1.1.2 | 30 -| | dut2_v4.set_ip | ${dut2_if2} | 20.20.20.1 | 24 -| | dut1_v4.set_route | 20.20.20.0 | 24 | 1.1.1.2 | ${dut1_if2} -| | dut2_v4.set_route | 10.10.10.0 | 24 | 1.1.1.1 | ${dut2_if1} -| | All Vpp Interfaces Ready Wait | ${nodes} - -| Initialize IPv4 forwarding in 2-node circular topology -| | [Documentation] -| | ... | Set UP state on VPP interfaces in path on nodes in 2-node circular -| | ... | topology. Get the interface MAC addresses and setup ARP on all VPP -| | ... | interfaces. Setup IPv4 addresses with /24 prefix on DUT-TG links and -| | ... | /30 prefix on DUT1 link. Set routing on DUT node with prefix /24 and -| | ... | next hop of neighbour DUT interface IPv4 address. -| | ... -| | Set Interface State | ${dut1} | ${dut1_if1} | up -| | Set Interface State | ${dut1} | ${dut1_if2} | up -| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} -| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} -| | dut1_v4.set_arp | ${dut1_if1} | 10.10.10.3 | ${tg1_if1_mac} -| | dut1_v4.set_arp | ${dut1_if2} | 20.20.20.3 | ${tg1_if2_mac} -| | dut1_v4.set_ip | ${dut1_if1} | 10.10.10.2 | 24 -| | dut1_v4.set_ip | ${dut1_if2} | 20.20.20.2 | 24 -| | All Vpp Interfaces Ready Wait | ${nodes} - -| Initialize IPv4 forwarding with scaling in 3-node circular topology -| | [Documentation] -| | ... | Custom setup of IPv4 topology with scalability of ip routes on all -| | ... | DUT nodes in 3-node circular topology -| | ... -| | ... | *Arguments:* -| | ... | - ${count} - IP route count. Type: integer -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Initialize IPv4 forwarding with scaling in 3-node circular \ -| | ... | topology \| 100000 \| -| | ... -| | [Arguments] | ${count} -| | ... -| | Set Interface State | ${dut1} | ${dut1_if1} | up -| | Set Interface State | ${dut1} | ${dut1_if2} | up -| | Set Interface State | ${dut2} | ${dut2_if1} | up -| | Set Interface State | ${dut2} | ${dut2_if2} | up -| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} -| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} -| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} -| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} -| | Add arp on dut | ${dut1} | ${dut1_if1} | 1.1.1.1 | ${tg1_if1_mac} -| | Add arp on dut | ${dut1} | ${dut1_if2} | 2.2.2.2 | ${dut2_if1_mac} -| | Add arp on dut | ${dut2} | ${dut2_if1} | 2.2.2.1 | ${dut1_if2_mac} -| | Add arp on dut | ${dut2} | ${dut2_if2} | 3.3.3.1 | ${tg1_if2_mac} -| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1} | 1.1.1.2 | 30 -| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} | 2.2.2.1 | 30 -| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} | 2.2.2.2 | 30 -| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if2} | 3.3.3.2 | 30 -| | Vpp Route Add | ${dut1} | 10.0.0.0 | 32 | 1.1.1.1 | ${dut1_if1} -| | ... | count=${count} -| | Vpp Route Add | ${dut1} | 20.0.0.0 | 32 | 2.2.2.2 | ${dut1_if2} -| | ... | count=${count} -| | Vpp Route Add | ${dut2} | 10.0.0.0 | 32 | 2.2.2.1 | ${dut2_if1} -| | ... | count=${count} -| | Vpp Route Add | ${dut2} | 20.0.0.0 | 32 | 3.3.3.1 | ${dut2_if2} -| | ... | count=${count} -| | All Vpp Interfaces Ready Wait | ${nodes} - -| Initialize IPv4 forwarding with vhost in 3-node circular topology -| | [Documentation] -| | ... | Create vhost-user interfaces in VPP. Set UP state of all VPP -| | ... | interfaces in path on nodes in 3-node circular topology. Create 2 -| | ... | FIB tables on each DUT with multipath routing. Assign pair of -| | ... | Physical and Virtual interfaces on both nodes to each FIB table. -| | ... | Setup IPv4 addresses with /30 prefix on DUT-TG links and /30 prefix -| | ... | on DUT1-DUT2 link. Set routing on all DUT nodes in all FIB tables -| | ... | with prefix /24 and next hop of neighbour IPv4 address. Setup -| | ... | ARP on all VPP interfaces. -| | ... -| | ... | *Arguments:* -| | ... | - sock1 - Sock path for first Vhost-User interface. Type: string -| | ... | - sock2 - Sock path for second Vhost-User interface. Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| IPv4 forwarding with vhost initialized in a 3-node circular \ -| | ... | topology \| /tmp/sock1 \| /tmp/sock2 \| -| | ... -| | [Arguments] | ${sock1} | ${sock2} -| | ... -| | Set interfaces in path in 3-node circular topology up -| | Configure vhost interfaces for L2BD forwarding | ${dut1} -| | ... | ${sock1} | ${sock2} -| | ${dut1_vif1}= | Set Variable | ${vhost_if1} -| | ${dut1_vif2}= | Set Variable | ${vhost_if2} -| | Set Interface State | ${dut1} | ${dut1_vif1} | up -| | Set Interface State | ${dut1} | ${dut1_vif2} | up -| | Configure vhost interfaces for L2BD forwarding | ${dut2} -| | ... | ${sock1} | ${sock2} -| | ${dut2_vif1}= | Set Variable | ${vhost_if1} -| | ${dut2_vif2}= | Set Variable | ${vhost_if2} -| | Set Interface State | ${dut2} | ${dut2_vif1} | up -| | Set Interface State | ${dut2} | ${dut2_vif2} | up -| | ${dut1_vif1_idx}= | Get Interface SW Index | ${dut1} | ${dut1_vif1} -| | ${dut1_vif2_idx}= | Get Interface SW Index | ${dut1} | ${dut1_vif2} -| | ${dut1_if1_idx}= | Get Interface SW Index | ${dut1} | ${dut1_if1} -| | ${dut1_if2_idx}= | Get Interface SW Index | ${dut1} | ${dut1_if2} -| | ${dut2_vif1_idx}= | Get Interface SW Index | ${dut2} | ${dut2_vif1} -| | ${dut2_vif2_idx}= | Get Interface SW Index | ${dut2} | ${dut2_vif2} -| | ${dut2_if1_idx}= | Get Interface SW Index | ${dut2} | ${dut2_if1} -| | ${dut2_if2_idx}= | Get Interface SW Index | ${dut2} | ${dut2_if2} -| | Add fib table | ${dut1} | 20.20.20.0 | 24 | ${fib_table_1} -| | ... | via 4.4.4.2 sw_if_index ${dut1_vif1_idx} multipath -| | Add fib table | ${dut1} | 10.10.10.0 | 24 | ${fib_table_1} -| | ... | via 1.1.1.2 sw_if_index ${dut1_if1_idx} multipath -| | Add fib table | ${dut1} | 20.20.20.0 | 24 | ${fib_table_2} -| | ... | via 2.2.2.2 sw_if_index ${dut1_if2_idx} multipath -| | Add fib table | ${dut1} | 10.10.10.0 | 24 | ${fib_table_2} -| | ... | via 5.5.5.2 sw_if_index ${dut1_vif2_idx} multipath -| | Add fib table | ${dut2} | 10.10.10.0 | 24 | ${fib_table_1} -| | ... | via 2.2.2.1 sw_if_index ${dut2_if1_idx} multipath -| | Add fib table | ${dut2} | 20.20.20.0 | 24 | ${fib_table_1} -| | ... | via 4.4.4.1 sw_if_index ${dut2_vif1_idx} multipath -| | Add fib table | ${dut2} | 10.10.10.0 | 24 | ${fib_table_2} -| | ... | via 5.5.5.2 sw_if_index ${dut2_vif2_idx} multipath -| | Add fib table | ${dut2} | 20.20.20.0 | 24 | ${fib_table_2} -| | ... | via 3.3.3.2 sw_if_index ${dut2_if2_idx} multipath -| | Assign Interface To Fib Table | ${dut1} | ${dut1_if1} | ${fib_table_1} -| | Assign Interface To Fib Table | ${dut1} | ${dut1_vif1} | ${fib_table_1} -| | Assign Interface To Fib Table | ${dut1} | ${dut1_if2} | ${fib_table_2} -| | Assign Interface To Fib Table | ${dut1} | ${dut1_vif2} | ${fib_table_2} -| | Assign Interface To Fib Table | ${dut2} | ${dut2_if1} | ${fib_table_1} -| | Assign Interface To Fib Table | ${dut2} | ${dut2_vif1} | ${fib_table_1} -| | Assign Interface To Fib Table | ${dut2} | ${dut2_if2} | ${fib_table_2} -| | Assign Interface To Fib Table | ${dut2} | ${dut2_vif2} | ${fib_table_2} -| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1} | 1.1.1.2 | 30 -| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} | 2.2.2.1 | 30 -| | Configure IP addresses on interfaces | ${dut1} | ${dut1_vif1} | 4.4.4.1 | 30 -| | Configure IP addresses on interfaces | ${dut1} | ${dut1_vif2} | 5.5.5.1 | 30 -| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} | 2.2.2.2 | 30 -| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if2} | 3.3.3.1 | 30 -| | Configure IP addresses on interfaces | ${dut2} | ${dut2_vif1} | 4.4.4.1 | 30 -| | Configure IP addresses on interfaces | ${dut2} | ${dut2_vif2} | 5.5.5.1 | 30 -| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} -| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} -| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} -| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} -| | ${dut1_vif1_mac}= | Get Vhost User Mac By Sw Index | ${dut1} -| | ... | ${dut1_vif1_idx} -| | ${dut1_vif2_mac}= | Get Vhost User Mac By Sw Index | ${dut1} -| | ... | ${dut1_vif2_idx} -| | ${dut2_vif1_mac}= | Get Vhost User Mac By Sw Index | ${dut2} -| | ... | ${dut2_vif1_idx} -| | ${dut2_vif2_mac}= | Get Vhost User Mac By Sw Index | ${dut2} -| | ... | ${dut2_vif2_idx} -| | Set Test Variable | ${dut1_vif1_mac} -| | Set Test Variable | ${dut1_vif2_mac} -| | Set Test Variable | ${dut2_vif1_mac} -| | Set Test Variable | ${dut2_vif2_mac} -| | Add arp on dut | ${dut1} | ${dut1_if1} | 1.1.1.1 | ${tg1_if1_mac} -| | Add arp on dut | ${dut1} | ${dut1_if2} | 2.2.2.2 | ${dut2_if1_mac} -| | Add arp on dut | ${dut1} | ${dut1_vif1} | 4.4.4.2 | 52:54:00:00:04:01 -| | Add arp on dut | ${dut1} | ${dut1_vif2} | 5.5.5.2 | 52:54:00:00:04:02 -| | Add arp on dut | ${dut2} | ${dut2_if1} | 2.2.2.1 | ${dut1_if2_mac} -| | Add arp on dut | ${dut2} | ${dut2_if2} | 3.3.3.2 | ${tg1_if2_mac} -| | Add arp on dut | ${dut2} | ${dut2_vif1} | 4.4.4.2 | 52:54:00:00:04:01 -| | Add arp on dut | ${dut2} | ${dut2_vif2} | 5.5.5.2 | 52:54:00:00:04:02 -| | Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | 4.4.4.2 | ${dut1_vif1} -| | ... | vrf=${fib_table_1} -| | Vpp Route Add | ${dut1} | 10.10.10.0 | 24 | 1.1.1.1 | ${dut1_if1} -| | ... | vrf=${fib_table_1} -| | Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | 2.2.2.2 | ${dut1_if2} -| | ... | vrf=${fib_table_2} -| | Vpp Route Add | ${dut1} | 10.10.10.0 | 24 | 5.5.5.2 | ${dut1_vif2} -| | ... | vrf=${fib_table_2} -| | Vpp Route Add | ${dut2} | 20.20.20.0 | 24 | 4.4.4.2 | ${dut2_vif1} -| | ... | vrf=${fib_table_1} -| | Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | 2.2.2.1 | ${dut2_if1} -| | ... | vrf=${fib_table_1} -| | Vpp Route Add | ${dut2} | 20.20.20.0 | 24 | 3.3.3.2 | ${dut2_if2} -| | ... | vrf=${fib_table_2} -| | Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | 5.5.5.2 | ${dut2_vif2} -| | ... | vrf=${fib_table_2} - -| Initialize IPv4 forwarding with vhost for '${nr}' VMs in 3-node circular topology -| | [Documentation] -| | ... | Create pairs of Vhost-User interfaces for defined number of VMs on all -| | ... | VPP nodes. Set UP state of all VPP interfaces in path. Create ${nr}+1 -| | ... | FIB tables on each DUT with multipath routing. Assign each Virtual -| | ... | interface to FIB table with Physical interface or Virtual interface on -| | ... | both nodes. Setup IPv4 addresses with /30 prefix on DUT-TG links and -| | ... | /30 prefix on DUT1-DUT2 link. Set routing on all DUT nodes in all FIB -| | ... | tables with prefix /24 and next hop of neighbour IPv4 address. Setup -| | ... | ARP on all VPP interfaces. -| | ... -| | ... | *Arguments:* -| | ... | _None_ -| | ... -| | ... | *Note:* -| | ... | Socket paths for VM are defined in following format: -| | ... | - /tmp/sock-${VM_ID}-1 -| | ... | - /tmp/sock-${VM_ID}-2 -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| IPv4 forwarding with Vhost-User for '2' VMs initialized in \ -| | ... | a 3-node circular topology \| -| | ... -| | Set interfaces in path in 3-node circular topology up -| | ${fib_table_1}= | Set Variable | ${101} -| | ${fib_table_2}= | Evaluate | ${fib_table_1}+${nr} -| | ${dut1_if1_idx}= | Get Interface SW Index | ${dut1} | ${dut1_if1} -| | ${dut1_if2_idx}= | Get Interface SW Index | ${dut1} | ${dut1_if2} -| | Add fib table | ${dut1} | 10.10.10.0 | 24 | ${fib_table_1} -| | ... | via 1.1.1.2 sw_if_index ${dut1_if1_idx} multipath -| | Add fib table | ${dut1} | 20.20.20.0 | 24 | ${fib_table_2} -| | ... | via 2.2.2.2 sw_if_index ${dut1_if2_idx} multipath -| | ${dut2_if1_idx}= | Get Interface SW Index | ${dut2} | ${dut2_if1} -| | ${dut2_if2_idx}= | Get Interface SW Index | ${dut2} | ${dut2_if2} -| | Add fib table | ${dut2} | 10.10.10.0 | 24 | ${fib_table_1} -| | ... | via 2.2.2.1 sw_if_index ${dut2_if1_idx} multipath -| | Add fib table | ${dut2} | 20.20.20.0 | 24 | ${fib_table_2} -| | ... | via 3.3.3.2 sw_if_index ${dut2_if2_idx} multipath -| | Assign Interface To Fib Table | ${dut1} | ${dut1_if1} | ${fib_table_1} -| | Assign Interface To Fib Table | ${dut1} | ${dut1_if2} | ${fib_table_2} -| | Assign Interface To Fib Table | ${dut2} | ${dut2_if1} | ${fib_table_1} -| | Assign Interface To Fib Table | ${dut2} | ${dut2_if2} | ${fib_table_2} -| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1} | 1.1.1.2 | 30 -| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} | 2.2.2.1 | 30 -| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} | 2.2.2.2 | 30 -| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if2} | 3.3.3.1 | 30 -| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} -| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} -| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} -| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} -| | Add arp on dut | ${dut1} | ${dut1_if1} | 1.1.1.1 | ${tg1_if1_mac} -| | Add arp on dut | ${dut1} | ${dut1_if2} | 2.2.2.2 | ${dut2_if1_mac} -| | Add arp on dut | ${dut2} | ${dut2_if1} | 2.2.2.1 | ${dut1_if2_mac} -| | Add arp on dut | ${dut2} | ${dut2_if2} | 3.3.3.2 | ${tg1_if2_mac} -| | Vpp Route Add | ${dut1} | 10.10.10.0 | 24 | 1.1.1.1 | ${dut1_if1} -| | ... | vrf=${fib_table_1} -| | Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | 2.2.2.2 | ${dut1_if2} -| | ... | vrf=${fib_table_2} -| | Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | 2.2.2.1 | ${dut2_if1} -| | ... | vrf=${fib_table_1} -| | Vpp Route Add | ${dut2} | 20.20.20.0 | 24 | 3.3.3.2 | ${dut2_if2} -| | ... | vrf=${fib_table_2} -| | ${ip_base_start}= | Set Variable | ${4} -| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 -| | | ${sock1}= | Set Variable | /tmp/sock-${number}-1 -| | | ${sock2}= | Set Variable | /tmp/sock-${number}-2 -| | | ${fib_table_1}= | Evaluate | ${100}+${number} -| | | ${fib_table_2}= | Evaluate | ${fib_table_1}+${1} -| | | ${ip_base_vif1}= | Evaluate | ${ip_base_start}+(${number}-1)*2 -| | | ${ip_base_vif2}= | Evaluate | ${ip_base_vif1}+1 -| | | ${ip_net_vif1}= | Set Variable -| | | ... | ${ip_base_vif1}.${ip_base_vif1}.${ip_base_vif1} -| | | ${ip_net_vif2}= | Set Variable -| | | ... | ${ip_base_vif2}.${ip_base_vif2}.${ip_base_vif2} -| | | Configure vhost interfaces for L2BD forwarding | ${dut1} -| | | ... | ${sock1} | ${sock2} | dut1-vhost-${number}-if1 -| | | ... | dut1-vhost-${number}-if2 -| | | Set Interface State | ${dut1} | ${dut1-vhost-${number}-if1} | up -| | | Set Interface State | ${dut1} | ${dut1-vhost-${number}-if2} | up -| | | ${dut1_vif1_idx}= | Get Interface SW Index | ${dut1} -| | | ... | ${dut1-vhost-${number}-if1} -| | | ${dut1_vif2_idx}= | Get Interface SW Index | ${dut1} -| | | ... | ${dut1-vhost-${number}-if2} -| | | Configure vhost interfaces for L2BD forwarding | ${dut2} -| | | ... | ${sock1} | ${sock2} | dut2-vhost-${number}-if1 -| | | ... | dut2-vhost-${number}-if2 -| | | Set Interface State | ${dut2} | ${dut2-vhost-${number}-if1} | up -| | | Set Interface State | ${dut2} | ${dut2-vhost-${number}-if2} | up -| | | ${dut2_vif1_idx}= | Get Interface SW Index | ${dut2} -| | | ... | ${dut2-vhost-${number}-if1} -| | | ${dut2_vif2_idx}= | Get Interface SW Index | ${dut2} -| | | ... | ${dut2-vhost-${number}-if2} -| | | Add fib table | ${dut1} | 20.20.20.0 | 24 | ${fib_table_1} -| | | ... | via ${ip_net_vif1}.1 sw_if_index ${dut1_vif1_idx} multipath -| | | Add fib table | ${dut1} | 10.10.10.0 | 24 | ${fib_table_2} -| | | ... | via ${ip_net_vif2}.2 sw_if_index ${dut1_vif2_idx} multipath -| | | Add fib table | ${dut2} | 20.20.20.0 | 24 | ${fib_table_1} -| | | ... | via ${ip_net_vif1}.1 sw_if_index ${dut2_vif1_idx} multipath -| | | Add fib table | ${dut2} | 10.10.10.0 | 24 | ${fib_table_2} -| | | ... | via ${ip_net_vif2}.2 sw_if_index ${dut2_vif2_idx} multipath -| | | Assign Interface To Fib Table | ${dut1} | ${dut1-vhost-${number}-if1} -| | | ... | ${fib_table_1} -| | | Assign Interface To Fib Table | ${dut1} | ${dut1-vhost-${number}-if2} -| | | ... | ${fib_table_2} -| | | Assign Interface To Fib Table | ${dut2} | ${dut2-vhost-${number}-if1} -| | | ... | ${fib_table_1} -| | | Assign Interface To Fib Table | ${dut2} | ${dut2-vhost-${number}-if2} -| | | ... | ${fib_table_2} -| | | Configure IP addresses on interfaces -| | | ... | ${dut1} | ${dut1-vhost-${number}-if1} | ${ip_net_vif1}.1 | 30 -| | | ... | ${dut1} | ${dut1-vhost-${number}-if2} | ${ip_net_vif2}.1 | 30 -| | | ... | ${dut2} | ${dut2-vhost-${number}-if1} | ${ip_net_vif1}.1 | 30 -| | | ... | ${dut2} | ${dut2-vhost-${number}-if2} | ${ip_net_vif2}.1 | 30 -| | | ${dut1_vif1_mac}= | Get Vhost User Mac By Sw Index | ${dut1} -| | | ... | ${dut1_vif1_idx} -| | | ${dut1_vif2_mac}= | Get Vhost User Mac By Sw Index | ${dut1} -| | | ... | ${dut1_vif2_idx} -| | | ${dut2_vif1_mac}= | Get Vhost User Mac By Sw Index | ${dut2} -| | | ... | ${dut2_vif1_idx} -| | | ${dut2_vif2_mac}= | Get Vhost User Mac By Sw Index | ${dut2} -| | | ... | ${dut2_vif2_idx} -| | | Set Test Variable | ${dut1-vhost-${number}-if1_mac} -| | | ... | ${dut1_vif1_mac} -| | | Set Test Variable | ${dut1-vhost-${number}-if2_mac} -| | | ... | ${dut1_vif2_mac} -| | | Set Test Variable | ${dut2-vhost-${number}-if1_mac} -| | | ... | ${dut2_vif1_mac} -| | | Set Test Variable | ${dut2-vhost-${number}-if2_mac} -| | | ... | ${dut2_vif2_mac} -| | | ${qemu_id}= | Set Variable If | ${number} < 10 | 0${number} -| | | ... | ${number} -| | | Add arp on dut | ${dut1} | ${dut1-vhost-${number}-if1} -| | | ... | ${ip_net_vif1}.2 | 52:54:00:00:${qemu_id}:01 -| | | Add arp on dut | ${dut1} | ${dut1-vhost-${number}-if2} -| | | ... | ${ip_net_vif2}.2 | 52:54:00:00:${qemu_id}:02 -| | | Add arp on dut | ${dut2} | ${dut2-vhost-${number}-if1} -| | | ... | ${ip_net_vif1}.2 | 52:54:00:00:${qemu_id}:01 -| | | Add arp on dut | ${dut2} | ${dut2-vhost-${number}-if2} -| | | ... | ${ip_net_vif2}.2 | 52:54:00:00:${qemu_id}:02 -| | | Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | ${ip_net_vif1}.2 -| | | ... | ${dut1-vhost-${number}-if1} | vrf=${fib_table_1} -| | | Vpp Route Add | ${dut1} | 10.10.10.0 | 24 | ${ip_net_vif2}.2 -| | | ... | ${dut1-vhost-${number}-if2} | vrf=${fib_table_2} -| | | Vpp Route Add | ${dut2} | 20.20.20.0 | 24 | ${ip_net_vif1}.2 -| | | ... | ${dut2-vhost-${number}-if1} | vrf=${fib_table_1} -| | | Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | ${ip_net_vif2}.2 -| | | ... | ${dut2-vhost-${number}-if2} | vrf=${fib_table_2} - -| Initialize IPv4 policer 2r3c-${t} in 3-node circular topology -| | [Documentation] -| | ... | Setup of 2r3c color-aware or color-blind policer with dst ip match -| | ... | on all DUT nodes in 3-node circular topology. Policer is applied on -| | ... | links TG - DUT1 and DUT2 - TG. -| | ... -| | ${dscp}= | DSCP AF22 -| | Policer Set Name | policer1 -| | Policer Set CIR | ${cir} -| | Policer Set EIR | ${eir} -| | Policer Set CB | ${cb} -| | Policer Set EB | ${eb} -| | Policer Set Rate Type pps -| | Policer Set Round Type Closest -| | Policer Set Type 2R3C 2698 -| | Policer Set Conform Action Transmit -| | Policer Set Exceed Action Mark and Transmit | ${dscp} -| | Policer Set Violate Action Transmit -| | Policer Enable Color Aware -| | Run Keyword If | ${t} == 'ca' | Policer Enable Color Aware -| | Policer Classify Set Precolor Exceed -| | Policer Set Node | ${dut1} -| | Policer Classify Set Interface | ${dut1_if1} -| | Policer Classify Set Match IP | 20.20.20.2 | ${False} -| | Policer Set Configuration -| | Policer Set Node | ${dut2} -| | Policer Classify Set Interface | ${dut2_if2} -| | Policer Classify Set Match IP | 10.10.10.2 | ${False} -| | Policer Set Configuration - -| Initialize IPv6 forwarding in 3-node circular topology -| | [Documentation] -| | ... | Set UP state on VPP interfaces in path on nodes in 3-node circular -| | ... | topology. Get the interface MAC addresses and setup neighbour on all -| | ... | VPP interfaces. Setup IPv6 addresses with /128 prefixes on all -| | ... | interfaces. Set routing on both DUT nodes with prefix /64 and -| | ... | next hop of neighbour DUT interface IPv6 address. -| | ... -| | ${prefix}= | Set Variable | 64 -| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} -| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} -| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} -| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} -| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if1} | 2001:1::1 | ${prefix} -| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if2} | 2001:3::1 | ${prefix} -| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if1} | 2001:3::2 | ${prefix} -| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if2} | 2001:2::1 | ${prefix} -| | Suppress ICMPv6 router advertisement message | ${nodes} -| | Add Ip Neighbor | ${dut1} | ${dut1_if1} | 2001:1::2 | ${tg1_if1_mac} -| | Add Ip Neighbor | ${dut2} | ${dut2_if2} | 2001:2::2 | ${tg1_if2_mac} -| | Add Ip Neighbor | ${dut1} | ${dut1_if2} | 2001:3::2 | ${dut2_if1_mac} -| | Add Ip Neighbor | ${dut2} | ${dut2_if1} | 2001:3::1 | ${dut1_if2_mac} -| | Vpp Route Add | ${dut1} | 2001:2::0 | ${prefix} | 2001:3::2 | ${dut1_if2} -| | Vpp Route Add | ${dut2} | 2001:1::0 | ${prefix} | 2001:3::1 | ${dut2_if1} - -| Initialize IPv6 forwarding with scaling in 3-node circular topology -| | [Documentation] -| | ... | Custom setup of IPv6 topology with scalability of ip routes on all -| | ... | DUT nodes in 3-node circular topology -| | ... -| | ... | *Arguments:* -| | ... | - ${count} - IP route count. Type: integer -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Initialize IPv6 forwarding with scaling in 3-node circular \ -| | ... | topology \| 100000 \| -| | ... -| | [Arguments] | ${count} -| | ... -| | ${subn_prefix}= | Set Variable | 64 -| | ${host_prefix}= | Set Variable | 128 -| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if1} | 2001:3::1 | ${subn_prefix} -| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if2} | 2001:4::1 | ${subn_prefix} -| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if1} | 2001:4::2 | ${subn_prefix} -| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if2} | 2001:5::1 | ${subn_prefix} -| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} -| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} -| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} -| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} -| | Suppress ICMPv6 router advertisement message | ${nodes} -| | Add Ip Neighbor | ${dut1} | ${dut1_if1} | 2001:3::2 | ${tg1_if1_mac} -| | Add Ip Neighbor | ${dut1} | ${dut1_if2} | 2001:4::2 | ${dut2_if1_mac} -| | Add Ip Neighbor | ${dut2} | ${dut2_if1} | 2001:4::1 | ${dut1_if2_mac} -| | Add Ip Neighbor | ${dut2} | ${dut2_if2} | 2001:5::2 | ${tg1_if2_mac} -| | Vpp Route Add | ${dut1} | 2001:2::0 | ${host_prefix} | 2001:4::2 -| | ... | interface=${dut1_if2} | count=${count} -| | Vpp Route Add | ${dut1} | 2001:1::0 | ${host_prefix} | 2001:3::2 -| | ... | interface=${dut1_if1} | count=${count} -| | Vpp Route Add | ${dut2} | 2001:1::0 | ${host_prefix} | 2001:4::1 -| | ... | interface=${dut2_if1} | count=${count} -| | Vpp Route Add | ${dut2} | 2001:2::0 | ${host_prefix} | 2001:5::2 -| | ... | interface=${dut2_if2} | count=${count} - -| Initialize IPv6 iAcl whitelist in 3-node circular topology -| | [Documentation] -| | ... | Creates classify L3 table on DUTs. IPv6 iAcl security whitelist -| | ... | ingress /64 filter entries applied on links TG - DUT1 and DUT2 - TG. -| | ... -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip6 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip6 | dst | 2001:2::2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip6 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip6 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip6 | dst | 2001:1::2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip6 | ${table_idx} - -| Initialize L2 xconnect in 3-node circular topology -| | [Documentation] -| | ... | Setup L2 xconnect topology by cross connecting two interfaces on -| | ... | each DUT. Interfaces are brought up. -| | ... | -| | Configure L2XC | ${dut1} | ${dut1_if1} | ${dut1_if2} -| | Configure L2XC | ${dut2} | ${dut2_if1} | ${dut2_if2} -| | All Vpp Interfaces Ready Wait | ${nodes} - -| Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | [Documentation] -| | ... | Setup L2 xconnect topology with VXLANoIPv4 by cross connecting -| | ... | physical and vxlan interfaces on each DUT. All interfaces are brought -| | ... | up. IPv4 addresses with prefix /24 are configured on interfaces -| | ... | between DUTs. VXLAN sub-interfaces has same IPv4 address as -| | ... | interfaces. -| | ... -| | Set interfaces in path in 3-node circular topology up -| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} | 172.16.0.1 | 24 -| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} | 172.16.0.2 | 24 -| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} -| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} -| | Add arp on dut | ${dut1} | ${dut1_if2} | 172.16.0.2 | ${dut2_if1_mac} -| | Add arp on dut | ${dut2} | ${dut2_if1} | 172.16.0.1 | ${dut1_if2_mac} -| | ${dut1s_vxlan}= | Create VXLAN interface | ${dut1} | 24 -| | ... | 172.16.0.1 | 172.16.0.2 -| | Configure L2XC | ${dut1} | ${dut1_if1} | ${dut1s_vxlan} -| | ${dut2s_vxlan}= | Create VXLAN interface | ${dut2} | 24 -| | ... | 172.16.0.2 | 172.16.0.1 -| | Configure L2XC | ${dut2} | ${dut2_if2} | ${dut2s_vxlan} - -| Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | [Documentation] -| | ... | Create two Vhost-User interfaces on all defined VPP nodes. Cross -| | ... | connect each Vhost interface with one physical interface. -| | ... -| | ... | *Arguments:* -| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string -| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| L2 xconnect with Vhost-User initialized in a 3-node \ -| | ... | circular topology \| /tmp/sock1 \| /tmp/sock2 \| -| | ... -| | [Arguments] | ${sock1} | ${sock2} -| | ... -| | Configure vhost interfaces for L2BD forwarding | ${dut1} -| | ... | ${sock1} | ${sock2} -| | Configure L2XC | ${dut1} | ${dut1_if1} | ${vhost_if1} -| | Configure L2XC | ${dut1} | ${dut1_if2} | ${vhost_if2} -| | Configure vhost interfaces for L2BD forwarding | ${dut2} -| | ... | ${sock1} | ${sock2} -| | Configure L2XC | ${dut2} | ${dut2_if1} | ${vhost_if1} -| | Configure L2XC | ${dut2} | ${dut2_if2} | ${vhost_if2} -| | All Vpp Interfaces Ready Wait | ${nodes} - -| Initialize L2 xconnect with Vhost-User for '${nr}' in 3-node circular topology -| | [Documentation] -| | ... | Create pairs of Vhost-User interfaces on all defined VPP nodes. Cross -| | ... | connect each Vhost interface with one physical interface or virtual -| | ... | interface to create a chain accross DUT node. -| | ... -| | ... | *Arguments:* -| | ... | _None_ -| | ... -| | ... | *Note:* -| | ... | Socket paths for VM are defined in following format: -| | ... | - /tmp/sock-${VM_ID}-1 -| | ... | - /tmp/sock-${VM_ID}-2 -| | ... -| | ... | *Example:* -| | ... -| | ... | \| L2 xconnect with Vhost-User for '2' initialized in a 3-node \ -| | ... | circular topology \| -| | ... -| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 -| | | ${sock1}= | Set Variable | /tmp/sock-${number}-1 -| | | ${sock2}= | Set Variable | /tmp/sock-${number}-2 -| | | ${prev_index}= | Evaluate | ${number}-1 -| | | Configure vhost interfaces for L2BD forwarding | ${dut1} -| | | ... | ${sock1} | ${sock2} | dut1-vhost-${number}-if1 -| | | ... | dut1-vhost-${number}-if2 -| | | ${dut1_xconnect_if1}= | Set Variable If | ${number}==1 | ${dut1_if1} -| | | ... | ${dut1-vhost-${prev_index}-if2} -| | | Configure L2XC | ${dut1} | ${dut1_xconnect_if1} -| | | ... | ${dut1-vhost-${number}-if1} -| | | Configure vhost interfaces for L2BD forwarding | ${dut2} -| | | ... | ${sock1} | ${sock2} | dut2-vhost-${number}-if1 -| | | ... | dut2-vhost-${number}-if2 -| | | ${dut2_xconnect_if1}= | Set Variable If | ${number}==1 | ${dut2_if1} -| | | ... | ${dut2-vhost-${prev_index}-if2} -| | | Configure L2XC | ${dut2} | ${dut2_xconnect_if1} -| | | ... | ${dut2-vhost-${number}-if1} -| | | Run Keyword If | ${number}==${nr} | Configure L2XC -| | | ... | ${dut1} | ${dut1-vhost-${number}-if2} | ${dut1_if2} -| | | Run Keyword If | ${number}==${nr} | Configure L2XC -| | | ... | ${dut2} | ${dut2-vhost-${number}-if2} | ${dut2_if2} - -| Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | [Documentation] -| | ... | Create two Vhost-User interfaces on all defined VPP nodes. Cross -| | ... | connect each Vhost interface with one physical interface. -| | ... | Setup VLAN between DUTs. All interfaces are brought up. -| | ... -| | ... | *Arguments:* -| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string -| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string -| | ... | - subid - ID of the sub-interface to be created. Type: string -| | ... | - tag_rewrite - Method of tag rewrite. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| L2 xconnect with Vhost-User and VLAN initialized in a 3-node\ -| | ... | circular topology \| /tmp/sock1 \| /tmp/sock2 \| 10 \| pop-1 \| -| | ... -| | [Arguments] | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ... -| | Set interfaces in path in 3-node circular topology up -| | Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | Configure vhost interfaces for L2BD forwarding | ${dut1} -| | ... | ${sock1} | ${sock2} -| | Configure L2XC | ${dut1} | ${dut1_if1} | ${vhost_if1} -| | Configure L2XC | ${dut1} | ${subif_index_1} | ${vhost_if2} -| | Configure vhost interfaces for L2BD forwarding | ${dut2} -| | ... | ${sock1} | ${sock2} -| | Configure L2XC | ${dut2} | ${subif_index_2} | ${vhost_if1} -| | Configure L2XC | ${dut2} | ${dut2_if2} | ${vhost_if2} -| | All Vpp Interfaces Ready Wait | ${nodes} - -| Initialize L2 bridge domain in 3-node circular topology -| | [Documentation] -| | ... | Setup L2 DB topology by adding two interfaces on each DUT into BD -| | ... | that is created automatically with index 1. Learning is enabled. -| | ... | Interfaces are brought up. -| | ... -| | Configure L2BD forwarding | ${dut1} | ${dut1_if1} | ${dut1_if2} -| | Configure L2BD forwarding | ${dut2} | ${dut2_if1} | ${dut2_if2} -| | All Vpp Interfaces Ready Wait | ${nodes} - -| Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | [Documentation] -| | ... | Create two Vhost-User interfaces on all defined VPP nodes. Add each -| | ... | Vhost-User interface into L2 bridge domains with learning enabled -| | ... | with physical inteface. -| | ... -| | ... | *Arguments:* -| | ... | - bd_id1 - Bridge domain ID. Type: integer -| | ... | - bd_id2 - Bridge domain ID. Type: integer -| | ... | - sock1 - Sock path for first Vhost-User interface. Type: string -| | ... | - sock2 - Sock path for second Vhost-User interface. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| L2 bridge domains with Vhost-User initialized in a 3-node \ -| | ... | circular topology \| 1 \| 2 \| /tmp/sock1 \| /tmp/sock2 \| -| | ... -| | [Arguments] | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ... -| | Configure vhost interfaces for L2BD forwarding | ${dut1} -| | ... | ${sock1} | ${sock2} -| | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${bd_id1} -| | Add interface to bridge domain | ${dut1} | ${vhost_if1} | ${bd_id1} -| | Add interface to bridge domain | ${dut1} | ${dut1_if2} | ${bd_id2} -| | Add interface to bridge domain | ${dut1} | ${vhost_if2} | ${bd_id2} -| | Configure vhost interfaces for L2BD forwarding | ${dut2} -| | ... | ${sock1} | ${sock2} -| | Add interface to bridge domain | ${dut2} | ${dut2_if1} | ${bd_id1} -| | Add interface to bridge domain | ${dut2} | ${vhost_if1} | ${bd_id1} -| | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id2} -| | Add interface to bridge domain | ${dut2} | ${vhost_if2} | ${bd_id2} -| | All Vpp Interfaces Ready Wait | ${nodes} - -| Initialize L2 bridge domains with Vhost-User for '${nr}' VMs in 3-node circular topology -| | [Documentation] -| | ... | Create pairs of Vhost-User interfaces for defined number of VMs on all -| | ... | defined VPP nodes. Add each Vhost-User interface into L2 bridge -| | ... | domains with learning enabled with physical inteface or Vhost-User -| | ... | interface of another VM. -| | ... -| | ... | *Arguments:* -| | ... | _None_ -| | ... -| | ... | *Note:* -| | ... | Socket paths for VM are defined in following format: -| | ... | - /tmp/sock-${VM_ID}-1 -| | ... | - /tmp/sock-${VM_ID}-2 -| | ... -| | ... | *Example:* -| | ... -| | ... | \| L2 bridge domains with Vhost-User for '2' VMs initialized in \ -| | ... | a 3-node circular topology \| -| | ... -| | ${bd_id2}= | Evaluate | ${nr}+1 -| | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${1} -| | Add interface to bridge domain | ${dut1} | ${dut1_if2} | ${bd_id2} -| | Add interface to bridge domain | ${dut2} | ${dut2_if1} | ${1} -| | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id2} -| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 -| | | ${sock1}= | Set Variable | /tmp/sock-${number}-1 -| | | ${sock2}= | Set Variable | /tmp/sock-${number}-2 -| | | Configure vhost interfaces for L2BD forwarding | ${dut1} -| | | ... | ${sock1} | ${sock2} | dut1-vhost-${number}-if1 -| | | ... | dut1-vhost-${number}-if2 -| | | ${bd_id2}= | Evaluate | ${number}+1 -| | | Add interface to bridge domain | ${dut1} -| | | ... | ${dut1-vhost-${number}-if1} | ${number} -| | | Add interface to bridge domain | ${dut1} -| | | ... | ${dut1-vhost-${number}-if2} | ${bd_id2} -| | | Configure vhost interfaces for L2BD forwarding | ${dut2} -| | | ... | ${sock1} | ${sock2} | dut2-vhost-${number}-if1 -| | | ... | dut2-vhost-${number}-if2 -| | | Add interface to bridge domain | ${dut2} -| | | ... | ${dut2-vhost-${number}-if1} | ${number} -| | | Add interface to bridge domain | ${dut2} -| | | ... | ${dut2-vhost-${number}-if2} | ${bd_id2} - -| Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | [Documentation] -| | ... | Setup L2 bridge domain topology with VXLANoIPv4 by connecting -| | ... | physical and vxlan interfaces on each DUT. All interfaces are brought -| | ... | up. IPv4 addresses with prefix /24 are configured on interfaces -| | ... | between DUTs. VXLAN sub-interfaces has same IPv4 address as -| | ... | interfaces. -| | ... -| | Set interfaces in path in 3-node circular topology up -| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} | 172.16.0.1 -| | ... | 24 -| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} | 172.16.0.2 -| | ... | 24 -| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} -| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} -| | Add arp on dut | ${dut1} | ${dut1_if2} | 172.16.0.2 | ${dut2_if1_mac} -| | Add arp on dut | ${dut2} | ${dut2_if1} | 172.16.0.1 | ${dut1_if2_mac} -| | ${dut1s_vxlan}= | Create VXLAN interface | ${dut1} | 24 -| | ... | 172.16.0.1 | 172.16.0.2 -| | ${dut2s_vxlan}= | Create VXLAN interface | ${dut2} | 24 -| | ... | 172.16.0.2 | 172.16.0.1 -| | Configure L2BD forwarding | ${dut1} | ${dut1_if1} | ${dut1s_vxlan} -| | Configure L2BD forwarding | ${dut2} | ${dut2_if2} | ${dut2s_vxlan} -| | All Vpp Interfaces Ready Wait | ${nodes} - -| Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology -| | [Documentation] -| | ... | Create two Vhost-User interfaces on all defined VPP nodes. Add each -| | ... | Vhost-User interface into L2 bridge domains with learning enabled -| | ... | with physical inteface. -| | ... | Setup VXLANoIPv4 between DUTs by connecting physical and vxlan -| | ... | interfaces on each DUT. All interfaces are brought up. -| | ... | IPv4 addresses with prefix /24 are configured on interfaces between -| | ... | DUTs. VXLAN sub-interfaces has same IPv4 address as interfaces. -| | ... -| | ... | *Arguments:* -| | ... | - bd_id1 - Bridge domain ID. Type: integer -| | ... | - bd_id2 - Bridge domain ID. Type: integer -| | ... | - sock1 - Sock path for first Vhost-User interface. Type: string -| | ... | - sock2 - Sock path for second Vhost-User interface. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| L2 bridge domains with Vhost-User and VXLANoIPv4 initialized in a\ -| | ... | 3-node circular topology \| 1 \| 2 \| /tmp/sock1 \| /tmp/sock2 \| -| | ... -| | [Arguments] | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ... -| | Set interfaces in path in 3-node circular topology up -| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} | 172.16.0.1 -| | ... | 24 -| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} | 172.16.0.2 -| | ... | 24 -| | ${dut1s_vxlan}= | Create VXLAN interface | ${dut1} | 24 -| | ... | 172.16.0.1 | 172.16.0.2 -| | ${dut2s_vxlan}= | Create VXLAN interface | ${dut2} | 24 -| | ... | 172.16.0.2 | 172.16.0.1 -| | Configure vhost interfaces for L2BD forwarding | ${dut1} -| | ... | ${sock1} | ${sock2} -| | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${bd_id1} -| | Add interface to bridge domain | ${dut1} | ${vhost_if1} | ${bd_id1} -| | Add interface to bridge domain | ${dut1} | ${vhost_if2} | ${bd_id2} -| | Add interface to bridge domain | ${dut1} | ${dut1s_vxlan} | ${bd_id2} -| | Configure vhost interfaces for L2BD forwarding | ${dut2} -| | ... | ${sock1} | ${sock2} -| | Add interface to bridge domain | ${dut2} | ${dut2s_vxlan} | ${bd_id1} -| | Add interface to bridge domain | ${dut2} | ${vhost_if1} | ${bd_id1} -| | Add interface to bridge domain | ${dut2} | ${vhost_if2} | ${bd_id2} -| | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id2} -| | All Vpp Interfaces Ready Wait | ${nodes} - -| Initialize L2 bridge domains with Vhost-User in 2-node circular topology -| | [Documentation] -| | ... | Create two Vhost-User interfaces on all defined VPP nodes. Add each -| | ... | Vhost-User interface into L2 bridge domains with learning enabled -| | ... | with physical inteface. -| | ... -| | ... | *Arguments:* -| | ... | - bd_id1 - Bridge domain ID. Type: integer -| | ... | - bd_id2 - Bridge domain ID. Type: integer -| | ... | - sock1 - Sock path for first Vhost-User interface. Type: string -| | ... | - sock2 - Sock path for second Vhost-User interface. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| L2 bridge domains with Vhost-User initialized in a 2-node \ -| | ... | circular topology \| 1 \| 2 \| /tmp/sock1 \| /tmp/sock2 \| -| | ... -| | [Arguments] | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ... -| | Configure vhost interfaces for L2BD forwarding | ${dut1} -| | ... | ${sock1} | ${sock2} -| | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${bd_id1} -| | Add interface to bridge domain | ${dut1} | ${vhost_if1} | ${bd_id1} -| | Add interface to bridge domain | ${dut1} | ${dut1_if2} | ${bd_id2} -| | Add interface to bridge domain | ${dut1} | ${vhost_if2} | ${bd_id2} -| | All Vpp Interfaces Ready Wait | ${nodes} - -| Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | [Documentation] -| | ... | Create two Vhost-User interfaces on all defined VPP nodes. Add each -| | ... | Vhost-User interface into L2 bridge domains with learning enabled -| | ... | with physical inteface. -| | ... | Setup VLAN between DUTs. All interfaces are brought up. -| | ... -| | ... | *Arguments:* -| | ... | - bd_id1 - Bridge domain ID. Type: integer -| | ... | - bd_id2 - Bridge domain ID. Type: integer -| | ... | - sock1 - Sock path for first Vhost-User interface. Type: string -| | ... | - sock2 - Sock path for second Vhost-User interface. Type: string -| | ... | - subid - ID of the sub-interface to be created. Type: string -| | ... | - tag_rewrite - Method of tag rewrite. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| L2 bridge domains with Vhost-User and VLAN initialized in a 3-node\ -| | ... | circular topology \| 1 \| 2 \| /tmp/sock1 \| /tmp/sock2 \| 10\ -| | ... | pop-1 \| -| | ... -| | [Arguments] | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ... -| | Set interfaces in path in 3-node circular topology up -| | Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | Configure vhost interfaces for L2BD forwarding | ${dut1} -| | ... | ${sock1} | ${sock2} -| | Add interface to bridge domain | ${dut1} | ${dut1_if1} | ${bd_id1} -| | Add interface to bridge domain | ${dut1} | ${vhost_if1} | ${bd_id1} -| | Add interface to bridge domain | ${dut1} | ${vhost_if2} | ${bd_id2} -| | Add interface to bridge domain | ${dut1} | ${subif_index_1} | ${bd_id2} -| | Configure vhost interfaces for L2BD forwarding | ${dut2} -| | ... | ${sock1} | ${sock2} -| | Add interface to bridge domain | ${dut2} | ${subif_index_2} | ${bd_id1} -| | Add interface to bridge domain | ${dut2} | ${vhost_if1} | ${bd_id1} -| | Add interface to bridge domain | ${dut2} | ${vhost_if2} | ${bd_id2} -| | Add interface to bridge domain | ${dut2} | ${dut2_if2} | ${bd_id2} -| | All Vpp Interfaces Ready Wait | ${nodes} - -| Add PCI devices to DUTs in 3-node single link topology -| | [Documentation] -| | ... | Add PCI devices to VPP configuration file. -| | ... -| | ${dut1_if1_pci}= | Get Interface PCI Addr | ${dut1} | ${dut1_if1} -| | ${dut1_if2_pci}= | Get Interface PCI Addr | ${dut1} | ${dut1_if2} -| | ${dut2_if1_pci}= | Get Interface PCI Addr | ${dut2} | ${dut2_if1} -| | ${dut2_if2_pci}= | Get Interface PCI Addr | ${dut2} | ${dut2_if2} -| | Run keyword | DUT1.Add DPDK Dev | ${dut1_if1_pci} | ${dut1_if2_pci} -| | Run keyword | DUT2.Add DPDK Dev | ${dut2_if1_pci} | ${dut2_if2_pci} - -| Add PCI devices to DUTs in 2-node single link topology -| | [Documentation] -| | ... | Add PCI devices to VPP configuration file. -| | ... -| | ${dut1_if1_pci}= | Get Interface PCI Addr | ${dut1} | ${dut1_if1} -| | ${dut1_if2_pci}= | Get Interface PCI Addr | ${dut1} | ${dut1_if2} -| | Run keyword | DUT1.Add DPDK Dev | ${dut1_if1_pci} | ${dut1_if2_pci} - -| Configure guest VM with dpdk-testpmd connected via vhost-user -| | [Documentation] -| | ... | Start QEMU guest with two vhost-user interfaces and interconnecting -| | ... | DPDK testpmd. Qemu Guest uses by default 5 cores and 2048M. Testpmd -| | ... | uses 5 cores (1 main core and 4 cores dedicated to io) mem-channel=4, -| | ... | txq/rxq=256, burst=64, disable-hw-vlan, disable-rss, -| | ... | driver usr/lib/librte_pmd_virtio.so and fwd mode is io. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node to start guest VM on. Type: dictionary -| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string -| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string -| | ... | - vm_name - QemuUtil instance name. Type: string -| | ... | - skip - Number of cpus which will be skipped. Type: integer -| | ... | - count - Number of cpus which will be allocated for qemu. -| | ... | Type: integer -| | ... | - qemu_id - Qemu Id when starting more then one guest VM on DUT node. -| | ... | Type: integer -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Configure guest VM with dpdk-testpmd connected via vhost-user \ -| | ... | \| ${nodes['DUT1']} \| /tmp/sock1 \| /tmp/sock2 \| DUT1_VM \| ${6} \ -| | ... | \| ${5} \| -| | ... | \| Configure guest VM with dpdk-testpmd connected via vhost-user \ -| | ... | \| ${nodes['DUT1']} \| /tmp/sock-2-1 \| /tmp/sock-2-2 \| DUT1_VM2 \ -| | ... | \| qemu_id=${2} \| -| | ... -| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name} | ${skip}=${6} -| | ... | ${count}=${5} | ${qemu_id}=${1} -| | ... -| | Import Library | resources.libraries.python.QemuUtils | qemu_id=${qemu_id} -| | ... | WITH NAME | ${vm_name} -| | ${serial_port}= | Evaluate | ${qemu_id} + ${4555} -| | Run keyword | ${vm_name}.Qemu Set Serial Port | ${serial_port} -| | ${ssh_fwd_port}= | Evaluate | ${qemu_id} + ${10021} -| | Run keyword | ${vm_name}.Qemu Set Ssh Fwd Port | ${ssh_fwd_port} -| | ${dut_numa}= | Get interfaces numa node | ${dut_node} -| | ... | ${dut1_if1} | ${dut1_if2} -| | ${skip_cnt}= | Evaluate | ${skip} + (${qemu_id} - 1) * ${count} -| | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa} -| | ... | skip_cnt=${skip_cnt} | cpu_cnt=${count} | smt_used=${False} -| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1} -| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2} -| | Run Keyword | ${vm_name}.Build QEMU | ${dut_node} | apply_patch=${True} -| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin} -| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node} -| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1 -| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048 -| | Run keyword | ${vm_name}.Qemu Set Disk Image | ${perf_vm_image} -| | ${vm}= | Run keyword | ${vm_name}.Qemu Start -| | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus} -| | Dpdk Testpmd Start | ${vm} | eal_coremask=0x1f | eal_mem_channels=4 -| | ... | pmd_fwd_mode=io | pmd_disable_hw_vlan=${True} -| | ... | pmd_txd=${perf_qemu_qsz} | pmd_rxd=${perf_qemu_qsz} -| | Return From Keyword | ${vm} - -| Configure '${nr}' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | [Documentation] -| | ... | Start QEMU guests with two vhost-user interfaces and interconnecting -| | ... | DPDK testpmd for defined number of VMs on all defined VPP nodes. -| | ... -| | ... | *Arguments:* -| | ... | _None_ -| | ... -| | ... | _NOTE:_ This KW expects following test case variables to be set: -| | ... | - ${system_cpus} - Number of CPUs allocated for OS itself. -| | ... | - ${vpp_cpus} - Number of CPUs allocated for VPP. -| | ... | - ${vm_cpus} - Number of CPUs to be allocated per QEMU instance. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| '2' Configure guest VM with dpdk-testpmd connected via vhost-user \ -| | ... | in a 3-node circular topology \| -| | ... -| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 -| | | ${sock1}= | Set Variable | /tmp/sock-${number}-1 -| | | ${sock2}= | Set Variable | /tmp/sock-${number}-2 -| | | ${skip_cpus}= | Evaluate | ${vpp_cpus}+${system_cpus} -| | | ${vm1}= | Configure guest VM with dpdk-testpmd connected via vhost-user -| | | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM${number} -| | | ... | skip=${skip_cpus} | count=${vm_cpus} | qemu_id=${number} -| | | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM${number} | ${vm1} -| | | ${vm2}= | Configure guest VM with dpdk-testpmd connected via vhost-user -| | | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM${number} -| | | ... | skip=${skip_cpus} | count=${vm_cpus} | qemu_id=${number} -| | | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM${number} | ${vm2} - -| Configure guest VM with dpdk-testpmd using SMT connected via vhost-user -| | [Documentation] -| | ... | Start QEMU guest with two vhost-user interfaces and interconnecting -| | ... | DPDK testpmd. Qemu Guest uses by default 5 cores and 2048M. Testpmd -| | ... | uses 5 cores (1 main core and 4 cores dedicated to io) mem-channel=4, -| | ... | txq/rxq=256, burst=64, disable-hw-vlan, disable-rss, -| | ... | driver usr/lib/librte_pmd_virtio.so and fwd mode is io. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node to start guest VM on. Type: dictionary -| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string -| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string -| | ... | - vm_name - QemuUtil instance name. Type: string -| | ... | - skip - number of cpus which will be skipped. Type: int -| | ... | - count - number of cpus which will be allocated for qemu. Type: int -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Guest VM with dpdk-testpmd using SMT connected via vhost-user is \ -| | ... | setup \| ${nodes['DUT1']} \| /tmp/sock1 \| /tmp/sock2 \| DUT1_VM \ -| | ... | \| ${6} \| ${5} \| -| | ... -| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name} | ${skip}=${6} -| | ... | ${count}=${5} -| | ... -| | Import Library | resources.libraries.python.QemuUtils -| | ... | WITH NAME | ${vm_name} -| | ${dut_numa}= | Get interfaces numa node | ${dut_node} -| | ... | ${dut1_if1} | ${dut1_if2} -| | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa} -| | ... | skip_cnt=${skip} | cpu_cnt=${count} | smt_used=${True} -| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1} -| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2} -| | Run Keyword | ${vm_name}.Build QEMU | ${dut_node} | apply_patch=${True} -| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin} -| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node} -| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1 -| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048 -| | Run keyword | ${vm_name}.Qemu Set Disk Image | ${perf_vm_image} -| | ${vm}= | Run keyword | ${vm_name}.Qemu Start -| | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus} -| | Dpdk Testpmd Start | ${vm} | eal_coremask=0x1f | eal_mem_channels=4 -| | ... | pmd_fwd_mode=io | pmd_disable_hw_vlan=${True} -| | ... | pmd_txd=${perf_qemu_qsz} | pmd_rxd=${perf_qemu_qsz} -| | Return From Keyword | ${vm} - -| Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | [Documentation] -| | ... | Start QEMU guest with two vhost-user interfaces and interconnecting -| | ... | DPDK testpmd. Qemu Guest uses by default 5 cores and 2048M. Testpmd -| | ... | uses 5 cores (1 main core and 4 cores dedicated to io) mem-channel=4, -| | ... | txq/rxq=256, burst=64, disable-hw-vlan, disable-rss, -| | ... | driver usr/lib/librte_pmd_virtio.so and fwd mode is mac rewrite. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node to start guest VM on. Type: dictionary -| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string -| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string -| | ... | - vm_name - QemuUtil instance name. Type: string -| | ... | - eth0_mac - MAC address of first Vhost interface. Type: string -| | ... | - eth1_mac - MAC address of second Vhost interface. Type: string -| | ... | - skip - number of cpus which will be skipped. Type: integer -| | ... | - count - number of cpus which will be allocated for qemu. -| | ... | Type: integer -| | ... | - qemu_id - Qemu Id when starting more then one guest VM on DUT node. -| | ... | Type: integer -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Guest VM with dpdk-testpmd for Vhost L2BD forwarding is setup \ -| | ... | \| ${nodes['DUT1']} \| /tmp/sock1 \| /tmp/sock2 \| DUT1_VM \ -| | ... | \| 00:00:00:00:00:01 \| 00:00:00:00:00:02 \| ${6} \| ${5} \| -| | ... | \| Guest VM with dpdk-testpmd for Vhost L2BD forwarding is setup \ -| | ... | \| ${nodes['DUT1']} \| /tmp/sock-2-1 \| /tmp/sock-2-2 \| DUT1_VM2 \ -| | ... | \| 00:00:00:00:02:01 \| 00:00:00:00:02:02 \| ${6} \| ${5} \ -| | ... | \| qemu_id=${2} \| -| | ... -| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name} -| | ... | ${eth0_mac} | ${eth1_mac} | ${skip}=${6} | ${count}=${5} -| | ... | ${qemu_id}=${1} -| | ... -| | Import Library | resources.libraries.python.QemuUtils | qemu_id=${qemu_id} -| | ... | WITH NAME | ${vm_name} -| | ${serial_port}= | Evaluate | ${qemu_id} + ${4555} -| | Run keyword | ${vm_name}.Qemu Set Serial Port | ${serial_port} -| | ${ssh_fwd_port}= | Evaluate | ${qemu_id} + ${10021} -| | Run keyword | ${vm_name}.Qemu Set Ssh Fwd Port | ${ssh_fwd_port} -| | ${dut_numa}= | Get interfaces numa node | ${dut_node} -| | ... | ${dut1_if1} | ${dut1_if2} -| | ${skip_cnt}= | Evaluate | ${skip} + (${qemu_id} - 1) * ${count} -| | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa} -| | ... | skip_cnt=${skip_cnt} | cpu_cnt=${count} | smt_used=${False} -| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1} -| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2} -| | Run Keyword | ${vm_name}.Build QEMU | ${dut_node} | apply_patch=${True} -| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin} -| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node} -| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1 -| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048 -| | Run keyword | ${vm_name}.Qemu Set Disk Image | ${perf_vm_image} -| | ${vm}= | Run keyword | ${vm_name}.Qemu Start -| | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus} -| | Dpdk Testpmd Start | ${vm} | eal_coremask=0x1f -| | ... | eal_mem_channels=4 | pmd_fwd_mode=mac | pmd_eth_peer_0=0,${eth0_mac} -| | ... | pmd_eth_peer_1=1,${eth1_mac} | pmd_disable_hw_vlan=${True} -| | ... | pmd_txd=${perf_qemu_qsz} | pmd_rxd=${perf_qemu_qsz} -| | Return From Keyword | ${vm} - -| Configure '${nr}' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | [Documentation] -| | ... | Start QEMU guests with two vhost-user interfaces and interconnecting -| | ... | DPDK testpmd with fwd mode set to mac rewrite for defined number of -| | ... | VMs on all defined VPP nodes. -| | ... -| | ... | *Arguments:* -| | ... | _None_ -| | ... -| | ... | _NOTE:_ This KW expects following test case variables to be set: -| | ... | - ${system_cpus} - Number of CPUs allocated for OS itself. -| | ... | - ${vpp_cpus} - Number of CPUs allocated for VPP. -| | ... | - ${vm_cpus} - Number of CPUs to be allocated per QEMU instance. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| '2' Guest VMs with dpdk-testpmd-mac connected via vhost-user is \ -| | ... | setup in a 3-node circular topology \| -| | ... -| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 -| | | ${sock1}= | Set Variable | /tmp/sock-${number}-1 -| | | ${sock2}= | Set Variable | /tmp/sock-${number}-2 -| | | ${skip_cpus}= | Evaluate | ${vpp_cpus}+${system_cpus} -| | | ${vm1}= -| | | ... | Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM${number} -| | | ... | ${dut1-vhost-${number}-if1_mac} -| | | ... | ${dut1-vhost-${number}-if2_mac} | skip=${skip_cpus} -| | | ... | count=${vm_cpus} | qemu_id=${number} -| | | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM${number} | ${vm1} -| | | ${vm2}= -| | | ... | Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM${number} -| | | ... | ${dut2-vhost-${number}-if1_mac} -| | | ... | ${dut2-vhost-${number}-if2_mac} | skip=${skip_cpus} -| | | ... | count=${vm_cpus} | qemu_id=${number} -| | | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM${number} | ${vm2} - -| Configure guest VM with dpdk-testpmd-mac using SMT connected via vhost-user -| | [Documentation] -| | ... | Start QEMU guest with two vhost-user interfaces and interconnecting -| | ... | DPDK testpmd. Qemu Guest uses by default 5 cores and 2048M. Testpmd -| | ... | uses 5 cores (1 main core and 4 cores dedicated to io) mem-channel=4, -| | ... | txq/rxq=256, burst=64, disable-hw-vlan, disable-rss, -| | ... | driver usr/lib/librte_pmd_virtio.so and fwd mode is mac rewrite. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node to start guest VM on. Type: dictionary -| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string -| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string -| | ... | - vm_name - QemuUtil instance name. Type: string -| | ... | - eth0_mac - MAC address of first Vhost interface. Type: string -| | ... | - eth1_mac - MAC address of second Vhost interface. Type: string -| | ... | - skip - number of cpus which will be skipped. Type: int -| | ... | - count - number of cpus which will be allocated for qemu. Type: int -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Configure guest VM with dpdk-testpmd-mac using SMT connected via \ -| | ... | vhost-user \| ${nodes['DUT1']} \| /tmp/sock1 \| /tmp/sock2 \| DUT1_VM\ -| | ... | \| 00:00:00:00:00:01 \| 00:00:00:00:00:02 \| ${6} \| ${5} \| -| | ... -| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name} -| | ... | ${eth0_mac} | ${eth1_mac} | ${skip}=${6} | ${count}=${5} -| | ... -| | Import Library | resources.libraries.python.QemuUtils -| | ... | WITH NAME | ${vm_name} -| | ${dut_numa}= | Get interfaces numa node | ${dut_node} -| | ... | ${dut1_if1} | ${dut1_if2} -| | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa} -| | ... | skip_cnt=${skip} | cpu_cnt=${count} | smt_used=${True} -| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1} -| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2} -| | Run Keyword | ${vm_name}.Build QEMU | ${dut_node} | apply_patch=${True} -| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin} -| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node} -| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1 -| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048 -| | Run keyword | ${vm_name}.Qemu Set Disk Image | ${perf_vm_image} -| | ${vm}= | Run keyword | ${vm_name}.Qemu Start -| | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus} -| | Dpdk Testpmd Start | ${vm} | eal_coremask=0x1f -| | ... | eal_mem_channels=4 | pmd_fwd_mode=mac | pmd_eth_peer_0=0,${eth0_mac} -| | ... | pmd_eth_peer_1=1,${eth1_mac} | pmd_disable_hw_vlan=${True} -| | ... | pmd_txd=${perf_qemu_qsz} | pmd_rxd=${perf_qemu_qsz} -| | Return From Keyword | ${vm} - -| Configure guest VM with linux bridge connected via vhost-user -| | [Documentation] -| | ... | Start QEMU guest with two vhost-user interfaces and interconnecting -| | ... | linux bridge. Qemu Guest uses 2048M. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node to start guest VM on. Type: dictionary -| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string -| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string -| | ... | - vm_name - QemuUtil instance name. Type: string -| | ... | - skip - number of cpus which will be skipped. Type: int -| | ... | - count - number of cpus which will be allocated for qemu. Type: int -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Configure guest VM with linux bridge connected via vhost-user \ -| | ... | \| ${nodes['DUT1']} \| /tmp/sock1 \| /tmp/sock2 \| DUT1_VM \| ${6} \ -| | ... | \| ${5} \| -| | ... -| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name} | ${skip}=${6} -| | ... | ${count}=${5} -| | ... -| | Import Library | resources.libraries.python.QemuUtils -| | ... | WITH NAME | ${vm_name} -| | ${dut_numa}= | Get interfaces numa node | ${dut_node} -| | ... | ${dut1_if1} | ${dut1_if2} -| | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa} -| | ... | skip_cnt=${skip} | cpu_cnt=${count} | smt_used=${False} -| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1} -| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2} -| | Run Keyword | ${vm_name}.Build QEMU | ${dut_node} | apply_patch=${True} -| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin} -| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node} -| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1 -| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048 -| | Run keyword | ${vm_name}.Qemu Set Disk Image | ${perf_vm_image} -| | ${vm}= | Run keyword | ${vm_name}.Qemu Start -| | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus} -| | ${br}= | Set Variable | br0 -| | ${vhost1}= | Get Vhost User If Name By Sock | ${vm} | ${sock1} -| | ${vhost2}= | Get Vhost User If Name By Sock | ${vm} | ${sock2} -| | Linux Add Bridge | ${vm} | ${br} | ${vhost1} | ${vhost2} -| | Set Interface State | ${vm} | ${vhost1} | up | if_type=name -| | Set Interface State | ${vm} | ${vhost2} | up | if_type=name -| | Set Interface State | ${vm} | ${br} | up | if_type=name -| | Return From Keyword | ${vm} - -| Configure guest VM with linux bridge using SMT connected via vhost-user -| | [Documentation] -| | ... | Start QEMU guest with two vhost-user interfaces and interconnecting -| | ... | linux bridge. Qemu Guest uses 2048M. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - DUT node to start guest VM on. Type: dictionary -| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string -| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string -| | ... | - vm_name - QemuUtil instance name. Type: string -| | ... | - skip - number of cpus which will be skipped. Type: int -| | ... | - count - number of cpus which will be allocated for qemu. Type: int -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Guest VM with Linux Bridge using SMT connected via vhost-user is \ -| | ... | setup \| ${nodes['DUT1']} \| /tmp/sock1 \| /tmp/sock2 \| DUT1_VM \ -| | ... | \| ${6}\| ${5} \| -| | ... -| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${vm_name} | ${skip}=${6} -| | ... | ${count}=${5} -| | ... -| | Import Library | resources.libraries.python.QemuUtils -| | ... | WITH NAME | ${vm_name} -| | ${dut_numa}= | Get interfaces numa node | ${dut_node} -| | ... | ${dut1_if1} | ${dut1_if2} -| | ${qemu_cpus}= | Cpu slice of list per node | ${dut_node} | ${dut_numa} -| | ... | skip_cnt=${skip} | cpu_cnt=${count} | smt_used=${True} -| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock1} -| | Run keyword | ${vm_name}.Qemu Add Vhost User If | ${sock2} -| | Run Keyword | ${vm_name}.Build QEMU | ${dut_node} | apply_patch=${True} -| | Run keyword | ${vm_name}.Qemu Set Bin | ${perf_qemu_bin} -| | Run keyword | ${vm_name}.Qemu Set Node | ${dut_node} -| | Run keyword | ${vm_name}.Qemu Set Smp | ${count} | ${count} | 1 | 1 -| | Run keyword | ${vm_name}.Qemu Set Mem Size | 2048 -| | Run keyword | ${vm_name}.Qemu Set Disk Image | ${perf_vm_image} -| | ${vm}= | Run keyword | ${vm_name}.Qemu Start -| | Run keyword | ${vm_name}.Qemu Set Affinity | @{qemu_cpus} -| | ${br}= | Set Variable | br0 -| | ${vhost1}= | Get Vhost User If Name By Sock | ${vm} | ${sock1} -| | ${vhost2}= | Get Vhost User If Name By Sock | ${vm} | ${sock2} -| | Linux Add Bridge | ${vm} | ${br} | ${vhost1} | ${vhost2} -| | Set Interface State | ${vm} | ${vhost1} | up | if_type=name -| | Set Interface State | ${vm} | ${vhost2} | up | if_type=name -| | Set Interface State | ${vm} | ${br} | up | if_type=name -| | Return From Keyword | ${vm} - -| Initialize LISP IPv4 forwarding in 3-node circular topology -| | [Documentation] | Custom setup of IPv4 addresses on all DUT nodes and TG \ -| | ... | Don`t set route. -| | ... -| | ... | *Arguments:* -| | ... | -${dut1_dut2_address} - Ip address from DUT1 to DUT2. Type: string -| | ... | -${dut1_tg_address} - Ip address from DUT1 to tg. Type: string -| | ... | -${dut2_dut1_address} - Ip address from DUT2 to DUT1. Type: string -| | ... | -${dut1_tg_address} - Ip address from DUT1 to tg. Type: string -| | ... | -${duts_prefix} - ip prefix. Type: int -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| Initialize LISP IPv4 forwarding in 3-node circular topology \ -| | ... | \| ${dut1_dut2_address} \| ${dut1_tg_address} \ -| | ... | \| ${dut2_dut1_address} \| ${dut2_tg_address} \| ${duts_prefix} \| -| | ... -| | [Arguments] | ${dut1_dut2_address} | ${dut1_tg_address} -| | ... | ${dut2_dut1_address} | ${dut2_tg_address} | ${duts_prefix} -| | ... -| | Set Interface State | ${dut1} | ${dut1_if1} | up -| | Set Interface State | ${dut1} | ${dut1_if2} | up -| | Set Interface State | ${dut2} | ${dut2_if1} | up -| | Set Interface State | ${dut2} | ${dut2_if2} | up -| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} -| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} -| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} -| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} -| | Add arp on dut | ${dut1} | ${dut1_if1} | 10.10.10.2 | ${tg1_if1_mac} -| | Add arp on dut | ${dut1} | ${dut1_if2} | ${dut2_dut1_address} -| | ... | ${dut2_if1_mac} -| | Add arp on dut | ${dut2} | ${dut2_if1} | ${dut1_dut2_address} -| | ... | ${dut1_if2_mac} -| | Add arp on dut | ${dut2} | ${dut2_if2} | 20.20.20.2 | ${tg1_if2_mac} -| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1} -| | ... | ${dut1_tg_address} | ${duts_prefix} -| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} -| | ... | ${dut1_dut2_address} | ${duts_prefix} -| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} -| | ... | ${dut2_dut1_address} | ${duts_prefix} -| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if2} -| | ... | ${dut2_tg_address} | ${duts_prefix} -| | All Vpp Interfaces Ready Wait | ${nodes} - -| Initialize LISP GPE IPv4 over IPsec in 3-node circular topology -| | [Documentation] | Setup Lisp GPE IPv4 forwarding over IPsec. -| | ... -| | ... | *Arguments:* -| | ... | -${encr_alg} - Encryption algorithm. Type: string -| | ... | -${auth_alg} - Authentication algorithm. Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| Initialize LISP GPE IPv4 over IPsec in 3-node circular topology\ -| | ... | \| ${encr_alg} \| ${auth_alg} -| | ... -| | [Arguments] | ${encr_alg} | ${auth_alg} -| | ... -| | Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Configure manual keyed connection for IPSec -| | ... | ${dut1} | ${dut1_if2} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} -| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} -| | Configure manual keyed connection for IPSec -| | ... | ${dut2} | ${dut2_if1} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} -| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} - -| Initialize LISP IPv6 forwarding in 3-node circular topology -| | [Documentation] | Custom setup of IPv6 topology on all DUT nodes \ -| | ... | Don`t set route. -| | ... -| | ... | *Arguments:* -| | ... | -${dut1_dut2_address} - Ip address from DUT1 to DUT2. Type: string -| | ... | -${dut1_tg_address} - Ip address from DUT1 to tg. Type: string -| | ... | -${dut2_dut1_address} - Ip address from DUT2 to DUT1. Type: string -| | ... | -${dut1_tg_address} - Ip address from DUT1 to tg. Type: string -| | ... | -${duts_prefix} - ip prefix. Type: int -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| Initialize LISP IPv6 forwarding in 3-node circular topology \ -| | ... | \| ${dut1_dut2_address} \| ${dut1_tg_address} \ -| | ... | \| ${dut2_dut1_address} \| ${dut2_tg_address} \| ${duts_prefix} \| -| | ... -| | [Arguments] | ${dut1_dut2_address} | ${dut1_tg_address} -| | ... | ${dut2_dut1_address} | ${dut2_tg_address} | ${prefix} -| | ... -| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} -| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} -| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} -| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} -| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if1} | ${dut1_tg_address} -| | ... | ${prefix} -| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if2} | ${dut1_dut2_address} -| | ... | ${prefix} -| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if1} | ${dut2_dut1_address} -| | ... | ${prefix} -| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if2} | ${dut2_tg_address} -| | ... | ${prefix} -| | Suppress ICMPv6 router advertisement message | ${nodes} -| | Add Ip Neighbor | ${dut1} | ${dut1_if1} | 2001:1::2 | ${tg1_if1_mac} -| | Add Ip Neighbor | ${dut2} | ${dut2_if2} | 2001:2::2 | ${tg1_if2_mac} -| | Add Ip Neighbor | ${dut1} | ${dut1_if2} | ${dut2_dut1_address} -| | ... | ${dut2_if1_mac} -| | Add Ip Neighbor | ${dut2} | ${dut2_if1} | ${dut1_dut2_address} -| | ... | ${dut1_if2_mac} - -| Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | [Documentation] | Custom setup of IPv4 over IPv6 topology on all DUT nodes \ -| | ... | Don`t set route. -| | ... -| | ... | *Arguments:* -| | ... | - ${dut1_dut2_ip6_address} - IPv6 address from DUT1 to DUT2. -| | ... | Type: string -| | ... | - ${dut1_tg_ip4_address} - IPv4 address from DUT1 to tg. Type: string -| | ... | - ${dut2_dut1_ip6_address} - IPv6 address from DUT2 to DUT1. -| | ... | Type: string -| | ... | - ${dut1_tg_ip4_address} - IPv4 address from DUT1 to tg. Type: string -| | ... | - ${prefix4} - IPv4 prefix. Type: int -| | ... | - ${prefix6} - IPv6 prefix. Type: int -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| Lisp IPv4 over IPv6 forwarding initialized in a 3-node circular \ -| | ... | topology \| ${dut1_dut2_ip6_address} \| ${dut1_tg_ip4_address} \ -| | ... | \| ${dut2_dut1_ip6_address} \| ${dut2_tg_ip4_address} \ -| | ... | \| ${prefix4} \| ${prefix6} \| -| | ... -| | [Arguments] | ${dut1_dut2_ip6_address} | ${dut1_tg_ip4_address} -| | ... | ${dut2_dut1_ip6_address} | ${dut2_tg_ip4_address} -| | ... | ${prefix4} | ${prefix6} -| | ... -| | Set Interface State | ${dut1} | ${dut1_if1} | up -| | Set Interface State | ${dut1} | ${dut1_if2} | up -| | Set Interface State | ${dut2} | ${dut2_if1} | up -| | Set Interface State | ${dut2} | ${dut2_if2} | up -| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} -| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} -| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} -| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} -| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1} -| | ... | ${dut1_tg_ip4_address} | ${prefix4} -| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if2} | ${dut1_dut2_ip6_address} -| | ... | ${prefix6} -| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if1} | ${dut2_dut1_ip6_address} -| | ... | ${prefix6} -| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if2} -| | ... | ${dut2_tg_ip4_address} | ${prefix4} -| | Suppress ICMPv6 router advertisement message | ${nodes} -| | Add arp on dut | ${dut1} | ${dut1_if1} | 10.10.10.2 | ${tg1_if1_mac} -| | Add arp on dut | ${dut2} | ${dut2_if2} | 20.20.20.2 | ${tg1_if2_mac} -| | Add Ip Neighbor | ${dut1} | ${dut1_if2} | ${dut2_dut1_ip6_address} -| | ... | ${dut2_if1_mac} -| | Add Ip Neighbor | ${dut2} | ${dut2_if1} | ${dut1_dut2_ip6_address} -| | ... | ${dut1_if2_mac} - -| Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | [Documentation] | Custom setup of IPv4 over IPv6 topology on all DUT nodes \ -| | ... | Don`t set route. -| | ... -| | ... | *Arguments:* -| | ... | - ${dut1_dut2_ip4_address} - IPv4 address from DUT1 to DUT2. -| | ... | Type: string -| | ... | - ${dut1_tg_ip6_address} - IPv6 address from DUT1 to tg. Type: string -| | ... | - ${dut2_dut1_ip4_address} - IPv4 address from DUT2 to DUT1. -| | ... | Type: string -| | ... | - ${dut1_tg_ip6_address} - IPv6 address from DUT1 to tg. Type: string -| | ... | - ${prefix4} - IPv4 prefix. Type: int -| | ... | - ${prefix6} - IPv6 prefix. Type: int -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... | \| Lisp IPv6 over IPv4 forwarding initialized in a 3-node circular \ -| | ... | topology \| ${dut1_dut2_ip4_address} \| ${dut1_tg_ip6_address} \ -| | ... | \| ${dut2_dut1_ip4_address} \| ${dut2_tg_ip6_address} \ -| | ... | \| ${prefix6} \| ${prefix4} \| -| | ... -| | [Arguments] | ${dut1_dut2_ip4_address} | ${dut1_tg_ip6_address} -| | ... | ${dut2_dut1_ip4_address} | ${dut2_tg_ip6_address} -| | ... | ${prefix6} | ${prefix4} -| | ... -| | Set Interface State | ${dut1} | ${dut1_if1} | up -| | Set Interface State | ${dut1} | ${dut1_if2} | up -| | Set Interface State | ${dut2} | ${dut2_if1} | up -| | Set Interface State | ${dut2} | ${dut2_if2} | up -| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} -| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} -| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} -| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} -| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if1} | ${dut1_tg_ip6_address} -| | ... | ${prefix6} -| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} -| | ... | ${dut1_dut2_ip4_address} | ${prefix4} -| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} -| | ... | ${dut2_dut1_ip4_address} | ${prefix4} -| | VPP Set If IPv6 Addr | ${dut2} | ${dut2_if2} | ${dut2_tg_ip6_address} -| | ... | ${prefix6} -| | Suppress ICMPv6 router advertisement message | ${nodes} -| | Add Ip Neighbor | ${dut1} | ${dut1_if1} | 2001:1::2 | ${tg1_if1_mac} -| | Add Ip Neighbor | ${dut2} | ${dut2_if2} | 2001:2::2 | ${tg1_if2_mac} -| | Add arp on dut | ${dut1} | ${dut1_if2} | ${dut2_dut1_ip4_address} -| | ... | ${dut2_if1_mac} -| | Add arp on dut | ${dut2} | ${dut2_if1} | ${dut1_dut2_ip4_address} -| | ... | ${dut1_if2_mac} - -| Initialize SNAT in 3-node circular topology -| | [Documentation] | Initialization of 3-node topology with SNAT between DUTs: -| | ... | - set interfaces up -| | ... | - set IP addresses -| | ... | - set ARP -| | ... | - create routes -| | ... | - set SNAT - only on DUT1 -| | ... -| | Set Interface State | ${dut1} | ${dut1_if1} | up -| | Set Interface State | ${dut1} | ${dut1_if2} | up -| | Set Interface State | ${dut2} | ${dut2_if1} | up -| | Set Interface State | ${dut2} | ${dut2_if2} | up -| | All Vpp Interfaces Ready Wait | ${nodes} -| | ... -| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1} | 10.0.0.1 | 20 -| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} | 11.0.0.1 | 20 -| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} | 11.0.0.2 | 20 -| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if2} | 12.0.0.1 | 20 -| | ... -| | ${tg_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} -| | ${tg_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} -| | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} -| | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} -| | ... -| | Add arp on dut | ${dut1} | ${dut1_if1} | 10.0.0.2 | ${tg_if1_mac} -| | Add arp on dut | ${dut1} | ${dut1_if2} | 11.0.0.2 | ${dut2_if1_mac} -| | Add arp on dut | ${dut2} | ${dut2_if1} | 11.0.0.1 | ${dut1_if2_mac} -| | Add arp on dut | ${dut2} | ${dut2_if2} | 12.0.0.2 | ${tg_if2_mac} -| | ... -| | Vpp Route Add | ${dut1} | 12.0.0.2 | 32 | 11.0.0.2 | ${dut1_if2} -| | Vpp Route Add | ${dut1} | 20.0.0.0 | 18 | 10.0.0.2 | ${dut1_if1} -| | Vpp Route Add | ${dut2} | 12.0.0.0 | 24 | 12.0.0.2 | ${dut2_if2} -| | Vpp Route Add | ${dut2} | 200.0.0.0 | 30 | 11.0.0.1 | ${dut2_if1} -| | ... -| | Configure inside and outside interfaces -| | ... | ${dut1} | ${dut1_if1} | ${dut1_if2} -| | Configure deterministic mode for SNAT -| | ... | ${dut1} | 20.0.0.0 | 18 | 200.0.0.0 | 30 diff --git a/resources/libraries/robot/performance_setup.robot b/resources/libraries/robot/performance_setup.robot deleted file mode 100644 index da23ca8196..0000000000 --- a/resources/libraries/robot/performance_setup.robot +++ /dev/null @@ -1,532 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_configuration.robot -| Resource | resources/libraries/robot/performance_utils.robot -| Documentation | Performance suite keywords - Suite and test setups and -| ... | teardowns. - -*** Keywords *** - -# Keywords used in setups and teardowns - -| Set variables in 2-node circular topology -| | [Documentation] -| | ... | Compute path for testing on two given nodes in circular -| | ... | topology and set corresponding suite variables. -| | ... -| | ... | _NOTE:_ This KW sets following suite variables: -| | ... | - tg - TG node -| | ... | - tg_if1 - 1st TG interface towards DUT. -| | ... | - tg_if2 - 2nd TG interface towards DUT. -| | ... | - dut1 - DUT1 node -| | ... | - dut1_if1 - 1st DUT interface towards TG. -| | ... | - dut1_if2 - 2nd DUT interface towards TG. -| | ... -| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | Compute Path | always_same_link=${FALSE} -| | ${tg_if1} | ${tg}= | First Interface -| | ${dut1_if1} | ${dut1}= | First Ingress Interface -| | ${dut1_if2} | ${dut1}= | Last Egress Interface -| | ${tg_if2} | ${tg}= | Last Interface -| | Set Suite Variable | ${tg} -| | Set Suite Variable | ${tg_if1} -| | Set Suite Variable | ${tg_if2} -| | Set Suite Variable | ${dut1} -| | Set Suite Variable | ${dut1_if1} -| | Set Suite Variable | ${dut1_if2} - -| Set variables in 3-node circular topology -| | [Documentation] -| | ... | Compute path for testing on three given nodes in circular -| | ... | topology and set corresponding suite variables. -| | ... -| | ... | _NOTE:_ This KW sets following suite variables: -| | ... | - tg - TG node -| | ... | - tg_if1 - TG interface towards DUT1. -| | ... | - tg_if2 - TG interface towards DUT2. -| | ... | - dut1 - DUT1 node -| | ... | - dut1_if1 - DUT1 interface towards TG. -| | ... | - dut1_if2 - DUT1 interface towards DUT2. -| | ... | - dut2 - DUT2 node -| | ... | - dut2_if1 - DUT2 interface towards DUT1. -| | ... | - dut2_if2 - DUT2 interface towards TG. -| | ... -| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} -| | ... | ${nodes['TG']} -| | Compute Path -| | ${tg_if1} | ${tg}= | Next Interface -| | ${dut1_if1} | ${dut1}= | Next Interface -| | ${dut1_if2} | ${dut1}= | Next Interface -| | ${dut2_if1} | ${dut2}= | Next Interface -| | ${dut2_if2} | ${dut2}= | Next Interface -| | ${tg_if2} | ${tg}= | Next Interface -| | Set Suite Variable | ${tg} -| | Set Suite Variable | ${tg_if1} -| | Set Suite Variable | ${tg_if2} -| | Set Suite Variable | ${dut1} -| | Set Suite Variable | ${dut1_if1} -| | Set Suite Variable | ${dut1_if2} -| | Set Suite Variable | ${dut2} -| | Set Suite Variable | ${dut2_if1} -| | Set Suite Variable | ${dut2_if2} - -| Set variables in 2-node circular topology with DUT interface model -| | [Documentation] -| | ... | Compute path for testing on two given nodes in circular topology -| | ... | based on interface model provided as an argument and set -| | ... | corresponding suite variables. -| | ... -| | ... | *Arguments:* -| | ... | - iface_model - Interface model. Type: string -| | ... -| | ... | _NOTE:_ This KW sets following suite variables: -| | ... | - tg - TG node -| | ... | - tg_if1 - 1st TG interface towards DUT. -| | ... | - tg_if2 - 2nd TG interface towards DUT. -| | ... | - dut1 - DUT1 node -| | ... | - dut1_if1 - 1st DUT interface towards TG. -| | ... | - dut1_if2 - 2nd DUT interface towards TG. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Set variables in 2-node circular topology with DUT interface model\ -| | ... | \| Intel-X520-DA2 \| -| | ... -| | [Arguments] | ${iface_model} -| | ... -| | ${iface_model_list}= | Create list | ${iface_model} -| | Append Node | ${nodes['TG']} -| | Append Node | ${nodes['DUT1']} | filter_list=${iface_model_list} -| | Append Node | ${nodes['TG']} -| | Compute Path | always_same_link=${FALSE} -| | ${tg_if1} | ${tg}= | First Interface -| | ${dut1_if1} | ${dut1}= | First Ingress Interface -| | ${dut1_if2} | ${dut1}= | Last Egress Interface -| | ${tg_if2} | ${tg}= | Last Interface -| | Set Suite Variable | ${tg} -| | Set Suite Variable | ${tg_if1} -| | Set Suite Variable | ${tg_if2} -| | Set Suite Variable | ${dut1} -| | Set Suite Variable | ${dut1_if1} -| | Set Suite Variable | ${dut1_if2} - -| Set variables in 3-node circular topology with DUT interface model -| | [Documentation] -| | ... | Compute path for testing on three given nodes in circular topology -| | ... | based on interface model provided as an argument and set -| | ... | corresponding suite variables. -| | ... -| | ... | *Arguments:* -| | ... | - iface_model - Interface model. Type: string -| | ... -| | ... | _NOTE:_ This KW sets following suite variables: -| | ... | - tg - TG node -| | ... | - tg_if1 - TG interface towards DUT1. -| | ... | - tg_if2 - TG interface towards DUT2. -| | ... | - dut1 - DUT1 node -| | ... | - dut1_if1 - DUT1 interface towards TG. -| | ... | - dut1_if2 - DUT1 interface towards DUT2. -| | ... | - dut2 - DUT2 node -| | ... | - dut2_if1 - DUT2 interface towards TG. -| | ... | - dut2_if2 - DUT2 interface towards DUT1. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Set variables in 3-node circular topology with DUT interface model\ -| | ... | \| Intel-X520-DA2 \| -| | ... -| | [Arguments] | ${iface_model} -| | ... -| | ${iface_model_list}= | Create list | ${iface_model} -| | Append Node | ${nodes['TG']} -| | Append Node | ${nodes['DUT1']} | filter_list=${iface_model_list} -| | Append Node | ${nodes['DUT2']} | filter_list=${iface_model_list} -| | Append Node | ${nodes['TG']} -| | Compute Path -| | ${tg_if1} | ${tg}= | Next Interface -| | ${dut1_if1} | ${dut1}= | Next Interface -| | ${dut1_if2} | ${dut1}= | Next Interface -| | ${dut2_if1} | ${dut2}= | Next Interface -| | ${dut2_if2} | ${dut2}= | Next Interface -| | ${tg_if2} | ${tg}= | Next Interface -| | Set Suite Variable | ${tg} -| | Set Suite Variable | ${tg_if1} -| | Set Suite Variable | ${tg_if2} -| | Set Suite Variable | ${dut1} -| | Set Suite Variable | ${dut1_if1} -| | Set Suite Variable | ${dut1_if2} -| | Set Suite Variable | ${dut2} -| | Set Suite Variable | ${dut2_if1} -| | Set Suite Variable | ${dut2_if2} - -| Tear down guest VM with dpdk-testpmd -| | [Documentation] -| | ... | Stop all qemu processes with dpdk-testpmd running on ${dut_node}. -| | ... | Argument is dictionary of all qemu nodes running with its names. -| | ... | Dpdk-testpmd is stopped gracefully with printing stats. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - Node where to clean qemu. Type: dictionary -| | ... | - dut_vm_refs - VM references on node. Type: dictionary -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Tear down guest VM with dpdk-testpmd \| ${node['DUT1']} \ -| | ... | \| ${dut_vm_refs} \| -| | ... -| | [Arguments] | ${dut_node} | ${dut_vm_refs} -| | ${vms_number}= | Get Length | ${dut_vm_refs} -| | ${index}= | Set Variable | ${0} -| | :FOR | ${vm_name} | IN | @{dut_vm_refs} -| | | ${vm}= | Get From Dictionary | ${dut_vm_refs} | ${vm_name} -| | | ${index}= | Evaluate | ${index} + 1 -| | | Dpdk Testpmd Stop | ${vm} -| | | Run Keyword | ${vm_name}.Qemu Set Node | ${dut_node} -| | | Run Keyword | ${vm_name}.Qemu Clear Socks -| | | Run Keyword If | '${index}' == '${vms_number}' | ${vm_name}.Qemu Kill All - -| Tear down guest VM -| | [Documentation] -| | ... | Stop all qemu processes running on ${dut_node}. -| | ... | Argument is dictionary of all qemu nodes running with its names. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - Node where to clean qemu. Type: dictionary -| | ... | - dut_vm_refs - VM references on node. Type: dictionary -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Tear down guest VM \| ${node['DUT1']} \ -| | ... | \| ${dut_vm_refs} \| -| | ... -| | [Arguments] | ${dut_node} | ${dut_vm_refs} -| | ${vms_number}= | Get Length | ${dut_vm_refs} -| | ${index}= | Set Variable | ${0} -| | :FOR | ${vm_name} | IN | @{dut_vm_refs} -| | | ${vm}= | Get From Dictionary | ${dut_vm_refs} | ${vm_name} -| | | ${index}= | Evaluate | ${index} + 1 -| | | Run Keyword | ${vm_name}.Qemu Set Node | ${dut_node} -| | | Run Keyword | ${vm_name}.Qemu Clear Socks -| | | Run Keyword If | '${index}' == '${vms_number}' | ${vm_name}.Qemu Kill All - -# Suite setups - -| Set up 2-node performance topology with DUT's NIC model -| | [Documentation] -| | ... | Suite preparation phase that setup default startup configuration of -| | ... | VPP on all DUTs. Updates interfaces on all nodes and setup global -| | ... | variables used in test cases based on interface model provided as an -| | ... | argument. Initializes traffic generator. -| | ... -| | ... | *Arguments:* -| | ... | - topology_type - Topology type. Type: string -| | ... | - nic_model - Interface model. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| 2-node Performance Suite Setup \| L2 \| Intel-X520-DA2 \| -| | ... -| | [Arguments] | ${topology_type} | ${nic_model} -| | ... -| | Show vpp version on all DUTs -| | Set variables in 2-node circular topology with DUT interface model -| | ... | ${nic_model} -| | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2} -| | ... | ${dut1} | ${dut1_if1} | ${dut1} | ${dut1_if2} | ${topology_type} - -| Set up 2-node-switched performance topology with DUT's NIC model -| | [Documentation] -| | ... | Suite preparation phase that setup default startup configuration of -| | ... | VPP on all DUTs. Updates interfaces on all nodes and setup global -| | ... | variables used in test cases based on interface model provided as an -| | ... | argument. Initializes traffic generator. -| | ... -| | ... | *Arguments:* -| | ... | - topology_type - Topology type. Type: string -| | ... | - nic_model - Interface model. Type: string -| | ... | - tg_if1_dest_mac - Interface 1 destination MAC address. Type: string -| | ... | - tg_if2_dest_mac - Interface 2 destination MAC address. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| 2-node Performance Suite Setup \| L2 \| Intel-X520-DA2 \ -| | ... | \| 22:22:33:44:55:66 \| 22:22:33:44:55:55 \| -| | ... -| | [Arguments] | ${topology_type} | ${nic_model} | ${tg_if1_dest_mac} -| | ... | ${tg_if2_dest_mac} -| | ... -| | Show vpp version on all DUTs -| | Set variables in 2-node circular topology with DUT interface model -| | ... | ${nic_model} -| | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2} -| | ... | ${dut1} | ${dut1_if1} | ${dut1} | ${dut1_if2} | ${topology_type} -| | ... | ${tg_if1_dest_mac} | ${tg_if2_dest_mac} - -| Set up 3-node performance topology with DUT's NIC model -| | [Documentation] -| | ... | Suite preparation phase that setup default startup configuration of -| | ... | VPP on all DUTs. Updates interfaces on all nodes and setup global -| | ... | variables used in test cases based on interface model provided as an -| | ... | argument. Initializes traffic generator. -| | ... -| | ... | *Arguments:* -| | ... | - topology_type - Topology type. Type: string -| | ... | - nic_model - Interface model. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Set up 3-node performance topology with DUT's NIC model \| L2 \ -| | ... | \| Intel-X520-DA2 \| -| | ... -| | [Arguments] | ${topology_type} | ${nic_model} -| | ... -| | Show vpp version on all DUTs -| | Set variables in 3-node circular topology with DUT interface model -| | ... | ${nic_model} -| | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2} -| | ... | ${dut1} | ${dut1_if1} | ${dut2} | ${dut2_if2} | ${topology_type} - -| Set up DPDK 2-node performance topology with DUT's NIC model -| | [Documentation] -| | ... | Updates interfaces on all nodes and setup global -| | ... | variables used in test cases based on interface model provided as an -| | ... | argument. Initializes traffic generator. Initializes DPDK test -| | ... | environment. -| | ... -| | ... | *Arguments:* -| | ... | - topology_type - Topology type. Type: string -| | ... | - nic_model - Interface model. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Set up DPDK 2-node performance topology with DUT's NIC model \ -| | ... | \| L2 \| Intel-X520-DA2 \| -| | ... -| | [Arguments] | ${topology_type} | ${nic_model} -| | ... -| | Set variables in 2-node circular topology with DUT interface model -| | ... | ${nic_model} -| | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2} -| | ... | ${dut1} | ${dut1_if1} | ${dut1} | ${dut1_if2} | ${topology_type} -| | Initialize DPDK Environment | ${dut1} | ${dut1_if1} | ${dut1_if2} - -| Set up DPDK 3-node performance topology with DUT's NIC model -| | [Documentation] -| | ... | Updates interfaces on all nodes and setup global -| | ... | variables used in test cases based on interface model provided as an -| | ... | argument. Initializes traffic generator. Initializes DPDK test -| | ... | environment. -| | ... -| | ... | *Arguments:* -| | ... | - topology_type - Topology type. Type: string -| | ... | - nic_model - Interface model. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| 3-node Performance Suite Setup \| L2 \| Intel-X520-DA2 \| -| | ... -| | [Arguments] | ${topology_type} | ${nic_model} -| | ... -| | Set variables in 3-node circular topology with DUT interface model -| | ... | ${nic_model} -| | Initialize traffic generator | ${tg} | ${tg_if1} | ${tg_if2} -| | ... | ${dut1} | ${dut1_if1} | ${dut2} | ${dut2_if2} | ${topology_type} -| | Initialize DPDK Environment | ${dut1} | ${dut1_if1} | ${dut1_if2} -| | Initialize DPDK Environment | ${dut2} | ${dut2_if1} | ${dut2_if2} - -| Set up IPSec performance test suite -| | [Documentation] -| | ... | Suite preparation phase that sets default startup configuration of -| | ... | VPP on all DUTs. Updates interfaces on all nodes and sets global -| | ... | variables used in test cases based on interface model provided as an -| | ... | argument. Initializes traffic generator. -| | ... | Then it configures crypto device and kernel module on all DUTs. -| | ... -| | ... | *Arguments:* -| | ... | - topology_type - Topology type. Type: string -| | ... | - nic_model - Interface model. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Set up IPSec performance test suite \| L2 \ -| | ... | \| Intel-X520-DA2 \| -| | ... -| | [Arguments] | ${topology_type} | ${nic_model} -| | ... -| | Set up 3-node performance topology with DUT's NIC model -| | ... | ${topology_type} | ${nic_model} -| | Configure crypto device on all DUTs | force_init=${True} -| | Configure kernel module on all DUTs | igb_uio | force_load=${True} - -# Suite teardowns - -| Tear down 3-node performance topology -| | [Documentation] -| | ... | Suite teardown phase with traffic generator teardown. -| | ... -| | Teardown traffic generator | ${tg} - -| Tear down 2-node performance topology -| | [Documentation] -| | ... | Suite teardown phase with traffic generator teardown. -| | ... -| | Teardown traffic generator | ${tg} - -# Tests setups - -| Set up performance test -| | [Documentation] | Common test setup for performance tests. -| | ... -| | Reset VAT History On All DUTs | ${nodes} -| | Create base startup configuration of VPP on all DUTs - -# Tests teardowns - -| Tear down performance discovery test -| | [Documentation] | Common test teardown for ndrdisc and pdrdisc performance \ -| | ... | tests. -| | ... -| | ... | *Arguments:* -| | ... | - rate - Rate for sending packets. Type: string -| | ... | - framesize - L2 Frame Size [B]. Type: integer -| | ... | - topology_type - Topology type. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Tear down performance discovery test \| 4.0mpps \| 64 \ -| | ... | \| 3-node-IPv4 \| -| | ... -| | [Arguments] | ${rate} | ${framesize} | ${topology_type} -| | ... -| | Show VAT History On All DUTs | ${nodes} -| | Show statistics on all DUTs -| | Run Keyword If Test Failed -| | ... | Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${topology_type} | fail_on_loss=${False} - -| Tear down performance ndrchk test -| | [Documentation] | Common test teardown for ndrchk performance tests. -| | ... -| | Show VAT History On All DUTs | ${nodes} -| | Show statistics on all DUTs - -| Tear down performance pdrchk test -| | [Documentation] | Common test teardown for pdrchk performance tests. -| | ... -| | Show VAT History On All DUTs | ${nodes} -| | Show statistics on all DUTs - -| Tear down performance test with vhost and VM with dpdk-testpmd -| | [Documentation] | Common test teardown for performance tests which use -| | ... | vhost(s) and VM(s) with dpdk-testpmd. -| | ... -| | ... | *Arguments:* -| | ... | - rate - Rate for sending packets. Type: string -| | ... | - framesize - L2 Frame Size [B]. Type: integer -| | ... | - topology_type - Topology type. Type: string -| | ... | - dut1_node - Node where to clean qemu. Type: dictionary -| | ... | - dut1_vm_refs - VM references on node. Type: dictionary -| | ... | - dut2_node - Node where to clean qemu. Type: dictionary -| | ... | - dut2_vm_refs - VM references on node. Type: dictionary -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Tear down performance test with vhost and VM with dpdk-testpmd \ -| | ... | \| 4.0mpps \| 64 \| 3-node-IPv4 \| ${node['DUT1']} \| ${dut_vm_refs} \ -| | ... | \| ${node['DUT2']} \| ${dut_vm_refs} \| -| | ... -| | [Arguments] | ${rate} | ${framesize} | ${topology_type} -| | ... | ${dut1_node}=${None} | ${dut1_vm_refs}=${None} -| | ... | ${dut2_node}=${None} | ${dut2_vm_refs}=${None} -| | ... -| | Show VAT History On All DUTs | ${nodes} -| | Show VPP vhost on all DUTs -| | Show statistics on all DUTs -| | Run Keyword If Test Failed -| | ... | Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${topology_type} | fail_on_loss=${False} -| | Run keyword unless | ${dut1_node}==${None} -| | ... | Tear down guest VM with dpdk-testpmd | ${dut1} | ${dut1_vm_refs} -| | Run keyword unless | ${dut2_node}==${None} -| | ... | Tear down guest VM with dpdk-testpmd | ${dut2} | ${dut2_vm_refs} - -| Tear down performance pdrchk test with vhost and VM with dpdk-testpmd -| | [Documentation] | Common test teardown for performance pdrchk tests which \ -| | ... | use vhost(s) and VM(s) with dpdk-testpmd. -| | ... -| | ... | *Arguments:* -| | ... | - rate - Rate for sending packets. Type: string -| | ... | - framesize - L2 Frame Size [B]. Type: integer -| | ... | - topology_type - Topology type. Type: string -| | ... | - dut1_node - Node where to clean qemu. Type: dictionary -| | ... | - dut1_vm_refs - VM references on node. Type: dictionary -| | ... | - dut2_node - Node where to clean qemu. Type: dictionary -| | ... | - dut2_vm_refs - VM references on node. Type: dictionary -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Tear down performance pdrchk test with vhost and VM with \ -| | ... | dpdk-testpmd \| 4.0mpps \| 64 \| 3-node-IPv4 \| ${node['DUT1']} \ -| | ... | \| ${dut_vm_refs} \| ${node['DUT2']} \| ${dut_vm_refs} \| -| | ... -| | [Arguments] | ${rate} | ${framesize} | ${topology_type} -| | ... | ${dut1_node}=${None} | ${dut1_vm_refs}=${None} -| | ... | ${dut2_node}=${None} | ${dut2_vm_refs}=${None} -| | ... -| | Show VAT History On All DUTs | ${nodes} -| | Show VPP vhost on all DUTs -| | Show statistics on all DUTs -| | Run keyword unless | ${dut1_node}==${None} -| | ... | Tear down guest VM with dpdk-testpmd | ${dut1} | ${dut1_vm_refs} -| | Run keyword unless | ${dut2_node}==${None} -| | ... | Tear down guest VM with dpdk-testpmd | ${dut2} | ${dut2_vm_refs} - -| Tear down DPDK 3-node performance topology -| | [Documentation] -| | ... | Suite teardown phase with traffic generator teardown. -| | ... | Cleanup DPDK test environment. -| | ... -| | Teardown traffic generator | ${tg} -| | Cleanup DPDK Environment | ${dut1} | ${dut1_if1} | ${dut1_if2} -| | Cleanup DPDK Environment | ${dut2} | ${dut2_if1} | ${dut2_if2} - -| Tear down DPDK 2-node performance topology -| | [Documentation] -| | ... | Suite teardown phase with traffic generator teardown. -| | ... | Cleanup DPDK test environment. -| | ... -| | Teardown traffic generator | ${tg} -| | Cleanup DPDK Environment | ${dut1} | ${dut1_if1} | ${dut1_if2} - -| Tear down performance discovery test with SNAT -| | [Documentation] | Common test teardown for ndrdisc and pdrdisc performance \ -| | ... | tests with SNAT feature used. -| | ... -| | ... | *Arguments:* -| | ... | - rate - Rate for sending packets. Type: string -| | ... | - framesize - L2 Frame Size [B]. Type: integer -| | ... | - topology_type - Topology type. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Tear down performance discovery test with SNAT \| 4.0mpps \| 64 \ -| | ... | \| ${traffic_profile} \| -| | ... -| | [Arguments] | ${rate} | ${framesize} | ${traffic_profile} -| | ... -| | Tear down performance discovery test | ${rate}pps | ${framesize} -| | ... | ${traffic_profile} -| | Show SNAT verbose | ${dut1} -| | Show SNAT verbose | ${dut2} diff --git a/resources/libraries/robot/performance_utils.robot b/resources/libraries/robot/performance_utils.robot deleted file mode 100644 index 76f88b31dd..0000000000 --- a/resources/libraries/robot/performance_utils.robot +++ /dev/null @@ -1,545 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | Collections -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.DpdkUtil -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.VhostUser -| Library | resources.libraries.python.TrafficGenerator -| Library | resources.libraries.python.TrafficGenerator.TGDropRateSearchImpl -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/counters.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/l2_xconnect.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/tagging.robot -| Documentation | Performance suite keywords - utilities to find and verify NDR -| ... | and PDR. - -*** Keywords *** -| Calculate pps -| | [Documentation] -| | ... | Calculate pps for given rate and L2 frame size, -| | ... | additional 20B are added to L2 frame size as padding. -| | ... -| | ... | *Arguments* -| | ... | - bps - Rate in bps. Type: integer -| | ... | - framesize - L2 frame size in Bytes. Type: integer -| | ... -| | ... | *Return* -| | ... | - Calculated pps. Type: integer -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Calculate pps \| 10000000000 \| 64 \| -| | ... -| | [Arguments] | ${bps} | ${framesize} -| | ... -| | ${framesize}= | Get Frame Size | ${framesize} -| | ${ret}= | Evaluate | (${bps}/((${framesize}+20)*8)).__trunc__() -| | Return From Keyword | ${ret} - -| Get Frame Size -| | [Documentation] -| | ... | Framesize can be either integer in case of a single packet -| | ... | in stream, or set of packets in case of IMIX type or simmilar. -| | ... | This keyword returns average framesize. -| | ... -| | ... | *Arguments:* -| | ... | - framesize - Framesize. Type: integer or string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Get Frame Size \| IMIX_v4_1 \| -| | ... -| | [Arguments] | ${framesize} -| | ... -| | Run Keyword If | '${framesize}' == 'IMIX_v4_1' -| | ... | Return From Keyword | 353.83333 -| | Return From Keyword | ${framesize} - -| Is DPDK performance test -| | [Documentation] -| | ... | Return TRUE if variable DPDK_TEST exist, otherwise FALSE. -| | ${ret} | ${tmp}= | Run Keyword And Ignore Error -| | ... | Variable Should Exist | ${DPDK_TEST} -| | Return From Keyword If | "${ret}" == "PASS" | ${TRUE} -| | Return From Keyword | ${FALSE} - -| Find NDR using linear search and pps -| | [Documentation] -| | ... | Find throughput by using RFC2544 linear search with non drop rate. -| | ... -| | ... | *Arguments:* -| | ... | - framesize - L2 Frame Size [B]. Type: integer -| | ... | - start_rate - Initial start rate [pps]. Type: float -| | ... | - step_rate - Step of linear search [pps]. Type: float -| | ... | - topology_type - Topology type. Type: string -| | ... | - min_rate - Lower limit of search [pps]. Type: float -| | ... | - max_rate - Upper limit of search [pps]. Type: float -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Find NDR using linear search and pps \| 64 \| 5000000 \ -| | ... | \| 100000 \| 3-node-IPv4 \| 100000 \| 14880952 \| -| | ... -| | [Arguments] | ${framesize} | ${start_rate} | ${step_rate} -| | ... | ${topology_type} | ${min_rate} | ${max_rate} -| | ... -| | ${duration}= | Set Variable | ${perf_trial_duration} -| | Set Duration | ${duration} -| | Set Search Rate Boundaries | ${max_rate} | ${min_rate} -| | Set Search Linear Step | ${step_rate} -| | Set Search Frame Size | ${framesize} -| | Set Search Rate Type pps -| | Linear Search | ${start_rate} | ${topology_type} -| | ${rate_per_stream} | ${lat}= | Verify Search Result -| | ${tmp}= | Create List | 100%NDR | ${lat} -| | ${latency}= | Create List | ${tmp} -| | ${rate_50p}= | Evaluate | int(${rate_per_stream}*0.5) -| | ${lat_50p}= | Measure latency pps | ${duration} | ${rate_50p} -| | ... | ${framesize} | ${topology_type} -| | ${tmp}= | Create List | 50%NDR | ${lat_50p} -| | Append To List | ${latency} | ${tmp} -| | ${rate_10p}= | Evaluate | int(${rate_per_stream}*0.1) -| | ${lat_10p}= | Measure latency pps | ${duration} | ${rate_10p} -| | ... | ${framesize} | ${topology_type} -| | ${tmp}= | Create List | 10%NDR | ${lat_10p} -| | Append To List | ${latency} | ${tmp} -| | Display result of NDR search | ${rate_per_stream} | ${framesize} | 2 -| | ... | ${latency} -| | Traffic should pass with no loss | ${duration} | ${rate_per_stream}pps -| | ... | ${framesize} | ${topology_type} | fail_on_loss=${False} - -| Find PDR using linear search and pps -| | [Documentation] -| | ... | Find throughput by using RFC2544 linear search with partial drop rate -| | ... | with PDR threshold and type specified by parameter. -| | ... -| | ... | *Arguments:* -| | ... | - framesize - L2 Frame Size [B]. Type: integer -| | ... | - start_rate - Initial start rate [pps]. Type: float -| | ... | - step_rate - Step of linear search [pps]. Type: float -| | ... | - topology_type - Topology type. Type: string -| | ... | - min_rate - Lower limit of search [pps]. Type: float -| | ... | - max_rate - Upper limit of search [pps]. Type: float -| | ... | - loss_acceptance - Accepted loss during search. Type: float -| | ... | - loss_acceptance_type - Percentage or frames. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Find PDR using linear search and pps \| 64 \| 5000000 \ -| | ... | \| 100000 \| 3-node-IPv4 \| 100000 \| 14880952 \| 0.5 \| percentage \| -| | ... -| | [Arguments] | ${framesize} | ${start_rate} | ${step_rate} -| | ... | ${topology_type} | ${min_rate} | ${max_rate} -| | ... | ${loss_acceptance}=0 | ${loss_acceptance_type}='frames' -| | ... -| | ${duration}= | Set Variable | ${perf_trial_duration} -| | Set Duration | ${duration} -| | Set Search Rate Boundaries | ${max_rate} | ${min_rate} -| | Set Search Linear Step | ${step_rate} -| | Set Search Frame Size | ${framesize} -| | Set Search Rate Type pps -| | Set Loss Acceptance | ${loss_acceptance} -| | Run Keyword If | '${loss_acceptance_type}' == 'percentage' -| | ... | Set Loss Acceptance Type Percentage -| | Linear Search | ${start_rate} | ${topology_type} -| | ${rate_per_stream} | ${lat}= | Verify Search Result -| | ${tmp}= | Create List | 100%PDR | ${lat} -| | ${latency}= | Create List | ${tmp} -| | Display result of PDR search | ${rate_per_stream} | ${framesize} | 2 -| | ... | ${loss_acceptance} | ${loss_acceptance_type} | ${latency} -| | Traffic should pass with partial loss | ${duration} | ${rate_per_stream}pps -| | ... | ${framesize} | ${topology_type} | ${loss_acceptance} -| | ... | ${loss_acceptance_type} | fail_on_loss=${False} - -| Find NDR using binary search and pps -| | [Documentation] -| | ... | Find throughput by using RFC2544 binary search with non drop rate. -| | ... -| | ... | *Arguments:* -| | ... | - framesize - L2 Frame Size [B]. Type: integer -| | ... | - binary_min - Lower boundary of search [pps]. Type: float -| | ... | - binary_max - Upper boundary of search [pps]. Type: float -| | ... | - topology_type - Topology type. Type: string -| | ... | - min_rate - Lower limit of search [pps]. Type: float -| | ... | - max_rate - Upper limit of search [pps]. Type: float -| | ... | - threshold - Threshold to stop search [pps]. Type: integer -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Find NDR using binary search and pps \| 64 \| 6000000 \ -| | ... | \| 12000000 \| 3-node-IPv4 \| 100000 \| 14880952 \| 50000 \| -| | ... -| | [Arguments] | ${framesize} | ${binary_min} | ${binary_max} -| | ... | ${topology_type} | ${min_rate} | ${max_rate} | ${threshold} -| | ... -| | ${duration}= | Set Variable | ${perf_trial_duration} -| | Set Duration | ${duration} -| | Set Search Rate Boundaries | ${max_rate} | ${min_rate} -| | Set Search Frame Size | ${framesize} -| | Set Search Rate Type pps -| | Set Binary Convergence Threshold | ${threshold} -| | Binary Search | ${binary_min} | ${binary_max} | ${topology_type} -| | ${rate_per_stream} | ${lat}= | Verify Search Result -| | ${tmp}= | Create List | 100%NDR | ${lat} -| | ${latency}= | Create List | ${tmp} -| | ${rate_50p}= | Evaluate | int(${rate_per_stream}*0.5) -| | ${lat_50p}= | Measure latency pps | ${duration} | ${rate_50p} -| | ... | ${framesize} | ${topology_type} -| | ${tmp}= | Create List | 50%NDR | ${lat_50p} -| | Append To List | ${latency} | ${tmp} -| | ${rate_10p}= | Evaluate | int(${rate_per_stream}*0.1) -| | ${lat_10p}= | Measure latency pps | ${duration} | ${rate_10p} -| | ... | ${framesize} | ${topology_type} -| | ${tmp}= | Create List | 10%NDR | ${lat_10p} -| | Append To List | ${latency} | ${tmp} -| | Display result of NDR search | ${rate_per_stream} | ${framesize} | 2 -| | ... | ${latency} -| | Traffic should pass with no loss | ${duration} | ${rate_per_stream}pps -| | ... | ${framesize} | ${topology_type} | fail_on_loss=${False} - -| Find PDR using binary search and pps -| | [Documentation] -| | ... | Find throughput by using RFC2544 binary search with partial drop rate -| | ... | with PDR threshold and type specified by parameter. -| | ... -| | ... | *Arguments:* -| | ... | - framesize - L2 Frame Size [B]. Type: integer -| | ... | - binary_min - Lower boundary of search [pps]. Type: float -| | ... | - binary_max - Upper boundary of search [pps]. Type: float -| | ... | - topology_type - Topology type. Type: string -| | ... | - min_rate - Lower limit of search [pps]. Type: float -| | ... | - max_rate - Upper limit of search [pps]. Type: float -| | ... | - threshold - Threshold to stop search [pps]. Type: integer -| | ... | - loss_acceptance - Accepted loss during search. Type: float -| | ... | - loss_acceptance_type - Percentage or frames. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Find PDR using binary search and pps \| 64 \| 6000000 \ -| | ... | \| 12000000 \| 3-node-IPv4 \| 100000 \| 14880952 \| 50000 \| 0.5 \ -| | ... | \| percentage \| -| | ... -| | [Arguments] | ${framesize} | ${binary_min} | ${binary_max} -| | ... | ${topology_type} | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${loss_acceptance}=0 | ${loss_acceptance_type}='frames' -| | ... -| | ${duration}= | Set Variable | ${perf_trial_duration} -| | Set Duration | ${duration} -| | Set Search Rate Boundaries | ${max_rate} | ${min_rate} -| | Set Search Frame Size | ${framesize} -| | Set Search Rate Type pps -| | Set Loss Acceptance | ${loss_acceptance} -| | Run Keyword If | '${loss_acceptance_type}' == 'percentage' -| | ... | Set Loss Acceptance Type Percentage -| | Set Binary Convergence Threshold | ${threshold} -| | Binary Search | ${binary_min} | ${binary_max} | ${topology_type} -| | ${rate_per_stream} | ${lat}= | Verify Search Result -| | ${tmp}= | Create List | 100%PDR | ${lat} -| | ${latency}= | Create List | ${tmp} -| | Display result of PDR search | ${rate_per_stream} | ${framesize} | 2 -| | ... | ${loss_acceptance} | ${loss_acceptance_type} | ${latency} -| | Traffic should pass with partial loss | ${duration} | ${rate_per_stream}pps -| | ... | ${framesize} | ${topology_type} | ${loss_acceptance} -| | ... | ${loss_acceptance_type} | fail_on_loss=${False} - -| Find NDR using combined search and pps -| | [Documentation] -| | ... | Find throughput by using RFC2544 combined search (linear+binary) with -| | ... | non drop rate. -| | ... -| | ... | *Arguments:* -| | ... | - framesize - L2 Frame Size [B]. Type: integer -| | ... | - start_rate - Initial start rate [pps]. Type: float -| | ... | - step_rate - Step of linear search [pps]. Type: float -| | ... | - topology_type - Topology type. Type: string -| | ... | - min_rate - Lower limit of search [pps]. Type: float -| | ... | - max_rate - Upper limit of search [pps]. Type: float -| | ... | - threshold - Threshold to stop search [pps]. Type: integer -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Find NDR using combined search and pps \| 64 \| 5000000 \ -| | ... | \| 100000 \| 3-node-IPv4 \| 100000 \| 14880952 \| 5000 \| -| | ... -| | [Arguments] | ${framesize} | ${start_rate} | ${step_rate} -| | ... | ${topology_type} | ${min_rate} | ${max_rate} | ${threshold} -| | ... -| | ${duration}= | Set Variable | ${perf_trial_duration} -| | Set Duration | ${duration} -| | Set Search Rate Boundaries | ${max_rate} | ${min_rate} -| | Set Search Linear Step | ${step_rate} -| | Set Search Frame Size | ${framesize} -| | Set Search Rate Type pps -| | Set Binary Convergence Threshold | ${threshold} -| | Combined Search | ${start_rate} | ${topology_type} -| | ${rate_per_stream} | ${lat}= | Verify Search Result -| | ${tmp}= | Create List | 100%NDR | ${lat} -| | ${latency}= | Create List | ${tmp} -| | ${rate_50p}= | Evaluate | int(${rate_per_stream}*0.5) -| | ${lat_50p}= | Measure latency pps | ${duration} | ${rate_50p} -| | ... | ${framesize} | ${topology_type} -| | ${tmp}= | Create List | 50%NDR | ${lat_50p} -| | Append To List | ${latency} | ${tmp} -| | ${rate_10p}= | Evaluate | int(${rate_per_stream}*0.1) -| | ${lat_10p}= | Measure latency pps | ${duration} | ${rate_10p} -| | ... | ${framesize} | ${topology_type} -| | ${tmp}= | Create List | 10%NDR | ${lat_10p} -| | Append To List | ${latency} | ${tmp} -| | Display result of NDR search | ${rate_per_stream} | ${framesize} | 2 -| | ... | ${latency} -| | Traffic should pass with no loss | ${duration} | ${rate_per_stream}pps -| | ... | ${framesize} | ${topology_type} -| | ... | fail_on_loss=${False} - -| Find PDR using combined search and pps -| | [Documentation] -| | ... | Find throughput by using RFC2544 combined search (linear+binary) with -| | ... | partial drop rate with PDR threshold and type specified by parameter. -| | ... -| | ... | *Arguments:* -| | ... | - framesize - L2 Frame Size [B]. Type: integer -| | ... | - start_rate - Initial start rate [pps]. Type: float -| | ... | - step_rate - Step of linear search [pps]. Type: float -| | ... | - topology_type - Topology type. Type: string -| | ... | - min_rate - Lower limit of search [pps]. Type: float -| | ... | - max_rate - Upper limit of search [pps]. Type: float -| | ... | - threshold - Threshold to stop search [pps]. Type: integer -| | ... | - loss_acceptance - Accepted loss during search. Type: float -| | ... | - loss_acceptance_type - Percentage or frames. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Find PDR using combined search and pps \| 64 \| 5000000 \ -| | ... | \| 100000 \| 3-node-IPv4 \| 100000 \| 14880952 \| 5000 \| 0.5 \ -| | ... | \| percentage \| -| | ... -| | [Arguments] | ${framesize} | ${start_rate} | ${step_rate} -| | ... | ${topology_type} | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${loss_acceptance}=0 | ${loss_acceptance_type}='frames' -| | ... -| | ${duration}= | Set Variable | ${perf_trial_duration} -| | Set Duration | ${duration} -| | Set Search Rate Boundaries | ${max_rate} | ${min_rate} -| | Set Search Linear Step | ${step_rate} -| | Set Search Frame Size | ${framesize} -| | Set Search Rate Type pps -| | Set Loss Acceptance | ${loss_acceptance} -| | Run Keyword If | '${loss_acceptance_type}' == 'percentage' -| | ... | Set Loss Acceptance Type Percentage -| | Set Binary Convergence Threshold | ${threshold} -| | Combined Search | ${start_rate} | ${topology_type} -| | ${rate_per_stream} | ${lat}= | Verify Search Result -| | ${tmp}= | Create List | 100%PDR | ${lat} -| | ${latency}= | Create List | ${tmp} -| | Display result of PDR search | ${rate_per_stream} | ${framesize} | 2 -| | ... | ${loss_acceptance} | ${loss_acceptance_type} | ${latency} -| | Traffic should pass with partial loss | ${duration} | ${rate_per_stream}pps -| | ... | ${framesize} | ${topology_type} | ${loss_acceptance} -| | ... | ${loss_acceptance_type} | fail_on_loss=${False} - -| Display result of NDR search -| | [Documentation] -| | ... | Display result of NDR search in packet per seconds (total and per -| | ... | stream) and Gbps total bandwidth with untagged packet. -| | ... | Througput is calculated as: -| | ... | Measured rate per stream * Total number of streams -| | ... | Bandwidth is calculated as: -| | ... | (Througput * (L2 Frame Size + IPG) * 8) / Max bitrate of NIC -| | ... -| | ... | *Arguments:* -| | ... | - rate_per_stream - Measured rate per stream [pps]. Type: string -| | ... | - framesize - L2 Frame Size [B]. Type: integer -| | ... | - nr_streams - Total number of streams. Type: integer -| | ... | - latency - Latency stats. Type: dictionary -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Display result of NDR search \| 4400000 \| 64 \| 2 \ -| | ... | \| [100%NDR, [10/10/10, 1/2/3]] \| -| | ... -| | [Arguments] | ${rate_per_stream} | ${framesize} | ${nr_streams} | ${latency} -| | ... -| | ${framesize}= | Get Frame Size | ${framesize} -| | ${rate_total}= | Evaluate | ${rate_per_stream}*${nr_streams} -| | ${bandwidth_total}= | Evaluate | ${rate_total}*(${framesize}+20)*8/(10**9) -| | Set Test Message | FINAL_RATE: ${rate_total} pps -| | Set Test Message | (${nr_streams}x ${rate_per_stream} pps) | append=yes -| | Set Test Message | ${\n}FINAL_BANDWIDTH: ${bandwidth_total} Gbps (untagged) -| | ... | append=yes -| | Set Test Message | ${\n}LATENCY usec [min/avg/max] | append=yes -| | :FOR | ${lat} | IN | @{latency} -| | | Set Test Message | ${\n}LAT_${lat[0]}: ${lat[1]} | append=yes - -| Display result of PDR search -| | [Documentation] -| | ... | Display result of PDR search in packet per seconds (total and per -| | ... | stream) and Gbps total bandwidth with untagged packet. -| | ... | Througput is calculated as: -| | ... | Measured rate per stream * Total number of streams -| | ... | Bandwidth is calculated as: -| | ... | (Througput * (L2 Frame Size + IPG) * 8) / Max bitrate of NIC -| | ... -| | ... | *Arguments:* -| | ... | - rate_per_stream - Measured rate per stream [pps]. Type: string -| | ... | - framesize - L2 Frame Size [B]. Type: integer -| | ... | - nr_streams - Total number of streams. Type: integer -| | ... | - loss_acceptance - Accepted loss during search. Type: float -| | ... | - loss_acceptance_type - Percentage or frames. Type: string -| | ... | - latency - Latency stats. Type: dictionary -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Display result of PDR search \| 4400000 \| 64 \| 2 \| 0.5 \ -| | ... | \| percentage \| [100%NDR, [10/10/10, 1/2/3]] \| -| | ... -| | [Arguments] | ${rate_per_stream} | ${framesize} | ${nr_streams} -| | ... | ${loss_acceptance} | ${loss_acceptance_type} | ${latency} -| | ... -| | ${framesize}= | Get Frame Size | ${framesize} -| | ${rate_total}= | Evaluate | ${rate_per_stream}*${nr_streams} -| | ${bandwidth_total}= | Evaluate | ${rate_total}*(${framesize}+20)*8/(10**9) -| | Set Test Message | FINAL_RATE: ${rate_total} pps -| | Set Test Message | (${nr_streams}x ${rate_per_stream} pps) | append=yes -| | Set Test Message | ${\n}FINAL_BANDWIDTH: ${bandwidth_total} Gbps (untagged) -| | ... | append=yes -| | Set Test Message | ${\n}LATENCY usec [min/avg/max] | append=yes -| | :FOR | ${lat} | IN | @{latency} -| | | Set Test Message | ${\n}LAT_${lat[0]}: ${lat[1]} | append=yes -| | Set Test Message -| | ... | ${\n}LOSS_ACCEPTANCE: ${loss_acceptance} ${loss_acceptance_type} -| | ... | append=yes - -| Measure latency pps -| | [Documentation] -| | ... | Send traffic at specified rate. Measure min/avg/max latency -| | ... -| | ... | *Arguments:* -| | ... | - duration - Duration of traffic run [s]. Type: integer -| | ... | - rate - Rate for sending packets. Type: integer -| | ... | - framesize - L2 Frame Size [B]. Type: integer -| | ... | - topology_type - Topology type. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Measure latency \| 10 \| 4.0 \| 64 \| 3-node-IPv4 \| -| | ... -| | [Arguments] | ${duration} | ${rate} | ${framesize} | ${topology_type} -| | ... -| | Return From Keyword If | ${rate} <= 10000 | ${-1} -| | ${ret}= | Is DPDK performance test -| | Run Keyword If | ${ret}==${FALSE} | Clear all counters on all DUTs -| | Send traffic on tg | ${duration} | ${rate}pps | ${framesize} -| | ... | ${topology_type} | warmup_time=0 -| | Run Keyword If | ${ret}==${FALSE} | Show statistics on all DUTs -| | Run keyword and return | Get latency - -| Traffic should pass with no loss -| | [Documentation] -| | ... | Send traffic at specified rate. No packet loss is accepted at loss -| | ... | evaluation. -| | ... -| | ... | *Arguments:* -| | ... | - duration - Duration of traffic run [s]. Type: integer -| | ... | - rate - Rate for sending packets. Type: string -| | ... | - framesize - L2 Frame Size [B]. Type: integer -| | ... | - topology_type - Topology type. Type: string -| | ... | - fail_on_loss - If True, the keyword fails if loss occurred. -| | ... | Type: boolean -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Traffic should pass with no loss \| 10 \| 4.0mpps \| 64 \ -| | ... | \| 3-node-IPv4 \| -| | ... -| | [Arguments] | ${duration} | ${rate} | ${framesize} | ${topology_type} -| | ... | ${fail_on_loss}=${True} -| | ... -| | Clear and show runtime counters with running traffic | ${duration} -| | ... | ${rate} | ${framesize} | ${topology_type} -| | ${ret}= | Is DPDK performance test -| | Run Keyword If | ${ret}==${FALSE} | Clear all counters on all DUTs -| | Send traffic on tg | ${duration} | ${rate} | ${framesize} -| | ... | ${topology_type} | warmup_time=0 -| | Run Keyword If | ${ret}==${FALSE} | Show statistics on all DUTs -| | Run Keyword If | ${fail_on_loss} | No traffic loss occurred - -| Traffic should pass with partial loss -| | [Documentation] -| | ... | Send traffic at specified rate. Partial packet loss is accepted -| | ... | within loss acceptance value specified as argument. -| | ... -| | ... | *Arguments:* -| | ... | - duration - Duration of traffic run [s]. Type: integer -| | ... | - rate - Rate for sending packets. Type: string -| | ... | - framesize - L2 Frame Size [B]. Type: integer -| | ... | - topology_type - Topology type. Type: string -| | ... | - loss_acceptance - Accepted loss during search. Type: float -| | ... | - loss_acceptance_type - Percentage or frames. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Traffic should pass with partial loss \| 10 \| 4.0mpps \| 64 \ -| | ... | \| 3-node-IPv4 \| 0.5 \| percentage \| -| | ... -| | [Arguments] | ${duration} | ${rate} | ${framesize} | ${topology_type} -| | ... | ${loss_acceptance} | ${loss_acceptance_type} -| | ... | ${fail_on_loss}=${True} -| | ... -| | Clear and show runtime counters with running traffic | ${duration} -| | ... | ${rate} | ${framesize} | ${topology_type} -| | ${ret}= | Is DPDK performance test -| | Run Keyword If | ${ret}==${FALSE} | Clear all counters on all DUTs -| | Send traffic on tg | ${duration} | ${rate} | ${framesize} -| | ... | ${topology_type} | warmup_time=0 -| | Run Keyword If | ${ret}==${FALSE} | Show statistics on all DUTs -| | Run Keyword If | ${fail_on_loss} | Partial traffic loss accepted -| | ... | ${loss_acceptance} | ${loss_acceptance_type} - -| Clear and show runtime counters with running traffic -| | [Documentation] -| | ... | Start traffic at specified rate then clear runtime counters on all -| | ... | DUTs. Wait for specified amount of time and capture runtime counters -| | ... | on all DUTs. Finally stop traffic -| | ... -| | ... | *Arguments:* -| | ... | - duration - Duration of traffic run [s]. Type: integer -| | ... | - rate - Rate for sending packets. Type: string -| | ... | - framesize - L2 Frame Size [B]. Type: integer -| | ... | - topology_type - Topology type. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Traffic should pass with partial loss \| 10 \| 4.0mpps \| 64 \ -| | ... | \| 3-node-IPv4 \| 0.5 \| percentage \| -| | ... -| | [Arguments] | ${duration} | ${rate} | ${framesize} | ${topology_type} -| | ... -| | Send traffic on tg | -1 | ${rate} | ${framesize} | ${topology_type} -| | ... | warmup_time=0 | async_call=${True} | latency=${False} -| | ${ret}= | Is DPDK performance test -| | Run Keyword If | ${ret}==${FALSE} | Clear runtime counters on all DUTs -| | Sleep | ${duration} -| | Run Keyword If | ${ret}==${FALSE} | Show runtime counters on all DUTs -| | Stop traffic on tg diff --git a/resources/libraries/robot/policer.robot b/resources/libraries/robot/policer.robot deleted file mode 100644 index 6e75a45965..0000000000 --- a/resources/libraries/robot/policer.robot +++ /dev/null @@ -1,99 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Library | resources.libraries.python.Policer -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.IPv4Util -| Library | resources.libraries.python.TrafficScriptExecutor -| Library | resources.libraries.python.IPv6Util -| Library | resources.libraries.python.IPv6Setup -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} -| ... | WITH NAME | dut1_v4 -| Documentation | *Policer keywords* - -*** Keywords *** -| Configure topology for IPv4 policer test -| | [Documentation] | Setup topology for IPv4 policer testing. -| | ... -| | ... | _NOTE:_ This KW sets following test case variables: -| | ... | - dut_to_tg_if1_ip - DUT first interface IP address. Type: string -| | ... | - dut_to_tg_if2_ip - DUT second interface IP address. Type: string -| | ... | - tg_to_dut_if1_ip - TG first interface IP address. Type: string -| | ... | - tg_to_dut_if2_ip - TG second interface IP address. Type: string -| | Configure path in 2-node circular topology | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['TG']} -| | Set interfaces in 2-node circular topology up -| | Set Interface Address | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${dut_to_tg_if1_ip4} | ${ip4_plen} -| | Set Interface Address | ${dut_node} | ${dut_to_tg_if2} -| | ... | ${dut_to_tg_if2_ip4} | ${ip4_plen} -| | dut1_v4.Set ARP | ${dut_to_tg_if2} | ${tg_to_dut_if2_ip4} -| | ... | ${tg_to_dut_if2_mac} -| | Set Test Variable | ${dut_to_tg_if1_ip} | ${dut_to_tg_if1_ip4} -| | Set Test Variable | ${dut_to_tg_if2_ip} | ${dut_to_tg_if2_ip4} -| | Set Test Variable | ${tg_to_dut_if1_ip} | ${tg_to_dut_if1_ip4} -| | Set Test Variable | ${tg_to_dut_if2_ip} | ${tg_to_dut_if2_ip4} - -| Configure topology for IPv6 policer test -| | [Documentation] | Setup topology for IPv6 policer testing. -| | ... -| | ... | _NOTE:_ This KW sets following test case variables: -| | ... | - dut_to_tg_if1_ip - DUT first interface IP address. Type: string -| | ... | - dut_to_tg_if2_ip - DUT second interface IP address. Type: string -| | ... | - tg_to_dut_if1_ip - TG first interface IP address. Type: string -| | ... | - tg_to_dut_if2_ip - TG second interface IP address. Type: string -| | Configure path in 2-node circular topology | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['TG']} -| | Set interfaces in 2-node circular topology up -| | Vpp Set If IPv6 Addr | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${dut_to_tg_if1_ip6} | ${ip6_plen} -| | Vpp Set If IPv6 Addr | ${dut_node} | ${dut_to_tg_if2} -| | ... | ${dut_to_tg_if2_ip6} | ${ip6_plen} -| | Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${tg_to_dut_if2_ip6} -| | ... | ${tg_to_dut_if2_mac} -| | Vpp All RA Suppress Link Layer | ${nodes} -| | Set Test Variable | ${dut_to_tg_if1_ip} | ${dut_to_tg_if1_ip6} -| | Set Test Variable | ${dut_to_tg_if2_ip} | ${dut_to_tg_if2_ip6} -| | Set Test Variable | ${tg_to_dut_if1_ip} | ${tg_to_dut_if1_ip6} -| | Set Test Variable | ${tg_to_dut_if2_ip} | ${tg_to_dut_if2_ip6} - -| Send packet and verify marking -| | [Documentation] | Send packet and verify DSCP of the received packet. -| | ... -| | ... | *Arguments:* -| | ... | - node - TG node. Type: dictionary -| | ... | - tx_if - TG transmit interface. Type: string -| | ... | - rx_if - TG receive interface. Type: string -| | ... | - src_mac - Packet source MAC. Type: string -| | ... | - dst_mac - Packet destination MAC. Type: string -| | ... | - src_ip - Packet source IP address. Type: string -| | ... | - dst_ip - Packet destination IP address. Type: string -| | ... | - dscp - DSCP value to verify. Type: enum -| | ... -| | ... | *Example:* -| | ... | \| ${dscp}= \| DSCP AF22 \| -| | ... | \| Send packet and verify marking \| ${nodes['TG']} \| eth1 \| eth2 \ -| | ... | \| 08:00:27:87:4d:f7 \| 52:54:00:d4:d8:22 \| 192.168.122.2 \ -| | ... | \| 192.168.122.1 \| ${dscp} \| -| | [Arguments] | ${node} | ${tx_if} | ${rx_if} | ${src_mac} | ${dst_mac} -| | ... | ${src_ip} | ${dst_ip} | ${dscp} -| | ${tx_if_name}= | Get Interface Name | ${node} | ${tx_if} -| | ${rx_if_name}= | Get Interface Name | ${node} | ${rx_if} -| | ${args}= | Traffic Script Gen Arg | ${rx_if_name} | ${tx_if_name} -| | ... | ${src_mac} | ${dst_mac} | ${src_ip} | ${dst_ip} -| | ${dscp_num}= | Get DSCP Num Value | ${dscp} -| | ${args}= | Set Variable | ${args} --dscp ${dscp_num} -| | Run Traffic Script On Node | policer.py | ${node} | ${args} diff --git a/resources/libraries/robot/qemu.robot b/resources/libraries/robot/qemu.robot deleted file mode 100644 index 097f3cb1a8..0000000000 --- a/resources/libraries/robot/qemu.robot +++ /dev/null @@ -1,99 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -*** Settings *** -| Library | resources.libraries.python.QemuUtils -| Library | resources.libraries.python.ssh.SSH - -*** Keywords *** - -| QEMU build list should exist -| | [Documentation] | Return TRUE if variable QEMU_BUILD exist, otherwise FALSE -| | ${ret} | ${tmp}= | Run Keyword And Ignore Error -| | ... | Variable Should Exist | @{QEMU_BUILD} -| | Return From Keyword If | "${ret}" == "PASS" | ${TRUE} -| | Return From Keyword | ${FALSE} - -| Is QEMU ready on node -| | [Documentation] | Check if QEMU was built on the node before -| | [Arguments] | ${node} -| | ${ret}= | QEMU build list should exist -| | Return From Keyword If | ${ret} == ${FALSE} | ${FALSE} -| | ${ret} | ${tmp}= | Run Keyword And Ignore Error -| | ... | Should Contain | ${QEMU_BUILD} | ${node['host']} -| | Return From Keyword If | "${ret}" == "PASS" | ${TRUE} -| | Return From Keyword | ${FALSE} - -| Add node to QEMU build list -| | [Documentation] | Add node to the list of nodes with builded QEMU (global -| | ... | variable QEMU_BUILD) -| | [Arguments] | ${node} -| | ${ret}= | QEMU build list should exist -| | Run Keyword If | ${ret} == ${TRUE} -| | ... | Append To List | ${QEMU_BUILD} | ${node['host']} -| | ... | ELSE | Set Global Variable | @{QEMU_BUILD} | ${node['host']} - -| Build QEMU on node -| | [Documentation] | Build QEMU from sources on the Node. Nodes with successful -| | ... | QEMU build are stored in global variable list QEMU_BUILD -| | ... -| | ... | *Arguments:* -| | ... | - node - Node on which to build qemu. Type: dictionary -| | ... | - force_install - If True, then remove previous build. Type: bool -| | ... | - apply_patch - If True, then apply patches from qemu_patches dir. -| | ... | Type: bool -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Build QEMU on node \| ${node['DUT1']} \| False \| False \| -| | ... -| | [Arguments] | ${node} | ${force_install}=${False} | ${apply_patch}=${False} -| | ${ready}= | Is QEMU ready on node | ${node} -| | Return From Keyword If | ${ready} == ${TRUE} -| | Build QEMU | ${node} -| | Add node to QEMU build list | ${node} - -| Build QEMU on all DUTs -| | [Documentation] | Build QEMU from sources on all DUTs. Nodes with successful -| | ... | QEMU build are stored in global variable list QEMU_BUILD -| | ... -| | ... | *Arguments:* -| | ... | - force_install - If True, then remove previous build. Type: bool -| | ... | - apply_patch - If True, then apply patches from qemu_patches dir. -| | ... | Type: bool -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Build QEMU on all DUTs \| False \| False \| -| | ... -| | [Arguments] | ${force_install}=${False} | ${apply_patch}=${False} -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Build QEMU on node | ${nodes['${dut}']} | ${force_install} | -| | | ... | ${apply_patch} - -| Stop and clear QEMU -| | [Documentation] | Stop QEMU, clear used sockets and close SSH connection -| | ... | running on ${dut}, ${vm} is VM node info dictionary -| | ... | returned by qemu_start or None. -| | [Arguments] | ${dut} | ${vm} -| | Qemu Set Node | ${dut} -| | Qemu Kill -| | Qemu Clear Socks -| | Run Keyword If | ${vm} is not None | Disconnect | ${vm} - -| Kill Qemu on all DUTs -| | [Documentation] | Kill QEMU processes on all DUTs. -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | Qemu Set Node | ${nodes['${dut}']} -| | | Qemu Kill diff --git a/resources/libraries/robot/shared/counters.robot b/resources/libraries/robot/shared/counters.robot new file mode 100644 index 0000000000..3591dd5fe7 --- /dev/null +++ b/resources/libraries/robot/shared/counters.robot @@ -0,0 +1,91 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Documentation | VPP counters keywords +| Library | resources/libraries/python/VppCounters.py + +*** Keywords *** +| Clear interface counters on all vpp nodes in topology +| | [Documentation] | Clear interface counters on all VPP nodes in topology +| | [Arguments] | ${nodes} +| | Vpp Nodes Clear Interface Counters | ${nodes} + +| Get interface statistics +| | [Documentation] | Dump stats table on VPP node +| | [Arguments] | ${node} +| | Vpp Dump Stats Table | ${node} + +| Get interface ipv6 counter +| | [Documentation] | Return IPv6 statistics for node interface +| | [Arguments] | ${node} | ${interface} +| | ${ipv6_counter}= | Vpp Get Ipv6 Interface Counter | ${node} | ${interface} +| | [Return] | ${ipv6_counter} + +| Check ipv4 interface counter +| | [Documentation] | Check that ipv4 interface counter has right value +| | [Arguments] | ${node} | ${interface} | ${value} +| | ${ipv4_counter}= | Vpp get ipv4 interface counter | ${node} | ${interface} +| | Should Be Equal | ${ipv4_counter} | ${value} + +| Show statistics on all DUTs +| | [Documentation] | Show VPP statistics on all DUTs +| | Sleep | 10 | Waiting for statistics to be collected +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Show vpp statistics | ${nodes['${dut}']} + +| Show vpp statistics +| | [Documentation] | Show [error, hardware, interface] stats +| | [Arguments] | ${node} +| | Vpp Show Errors | ${node} +| | Vpp Show Hardware Detail | ${node} +| | Vpp Show Runtime | ${node} + +| Clear all counters on all DUTs +| | [Documentation] | Clear runtime, interface, hardware and error counters +| | ... | on all DUTs with VPP instance +| | Clear runtime counters on all DUTs +| | Clear interface counters on all DUTs +| | Clear hardware counters on all DUTs +| | Clear error counters on all DUTs + +| Clear runtime counters on all DUTs +| | [Documentation] | Clear VPP runtime counters on all DUTs +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Vpp clear runtime | ${nodes['${dut}']} + +| Clear interface counters on all DUTs +| | [Documentation] | Clear VPP interface counters on all DUTs +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Vpp clear interface counters | ${nodes['${dut}']} + +| Clear hardware counters on all DUTs +| | [Documentation] | Clear VPP hardware counters on all DUTs +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Vpp clear hardware counters | ${nodes['${dut}']} + +| Clear error counters on all DUTs +| | [Documentation] | Clear VPP errors counters on all DUTs +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Vpp clear errors counters | ${nodes['${dut}']} + +| Show runtime counters on all DUTs +| | [Documentation] | Show VPP runtime counters on all DUTs +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Vpp show runtime | ${nodes['${dut}']} diff --git a/resources/libraries/robot/shared/default.robot b/resources/libraries/robot/shared/default.robot new file mode 100644 index 0000000000..96bdd5344e --- /dev/null +++ b/resources/libraries/robot/shared/default.robot @@ -0,0 +1,357 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/vm/qemu.robot +| Variables | resources/libraries/python/topology.py +| Variables | resources/libraries/python/VatHistory.py +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.VatHistory +| Library | resources.libraries.python.CpuUtils +| Library | resources.libraries.python.DUTSetup +| Library | resources.libraries.python.SchedUtils +| Library | resources.libraries.python.TGSetup +| Library | resources.libraries.python.L2Util +| Library | resources.libraries.python.Tap +| Library | resources/libraries/python/VppConfigGenerator.py +| Library | resources/libraries/python/VppCounters.py +| Library | Collections + +*** Keywords *** +| Configure all DUTs before test +| | [Documentation] | Setup all DUTs in topology before test execution. +| | ... +| | Setup All DUTs | ${nodes} + +| Configure all TGs for traffic script +| | [Documentation] | Prepare all TGs before traffic scripts execution. +| | ... +| | All TGs Set Interface Default Driver | ${nodes} + +| Show VPP version on all DUTs +| | [Documentation] | Show VPP version verbose on all DUTs. +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Vpp show version verbose | ${nodes['${dut}']} + +| Show Vpp Errors On All DUTs +| | [Documentation] | Show VPP errors verbose on all DUTs. +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Vpp Show Errors | ${nodes['${dut}']} + +| Show VPP trace dump on all DUTs +| | [Documentation] | Save API trace and dump output on all DUTs. +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Vpp api trace save | ${nodes['${dut}']} +| | | Vpp api trace dump | ${nodes['${dut}']} + +| Show VPP vhost on all DUTs +| | [Documentation] | Show Vhost User on all DUTs. +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Vpp Show Vhost | ${nodes['${dut}']} + +| Show Bridge Domain Data On All DUTs +| | [Documentation] | Show Bridge Domain data on all DUTs. +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Vpp Get Bridge Domain Data | ${nodes['${dut}']} + +| Setup Scheduler Policy for Vpp On All DUTs +| | [Documentation] | Set realtime scheduling policy (SCHED_RR) with priority 1 +| | ... | on all VPP worker threads on all DUTs. +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Set VPP Scheduling rr | ${nodes['${dut}']} + +| Configure crypto device on all DUTs +| | [Documentation] | Verify if Crypto QAT device virtual functions are +| | ... | initialized on all DUTs. If parameter force_init is set to True, then +| | ... | try to initialize. +| | ... +| | ... | *Arguments:* +| | ... | - ${force_init} - Try to initialize. Type: boolean +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure crypto device on all DUTs \| ${True} \| +| | ... +| | [Arguments] | ${force_init}=${False} +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Crypto Device Verify | ${nodes['${dut}']} | force_init=${force_init} + +| Configure kernel module on all DUTs +| | [Documentation] | Verify if specific kernel module is loaded on all DUTs. +| | ... | If parameter force_load is set to True, then try to initialize. +| | ... +| | ... | *Arguments:* +| | ... | - ${module} - Module to verify. Type: string +| | ... | - ${force_load} - Try to load module. Type: boolean +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure kernel module on all DUTs \| ${True} \| +| | ... +| | [Arguments] | ${module} | ${force_load}=${False} +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Kernel Module Verify | ${nodes['${dut}']} | ${module} +| | | ... | force_load=${force_load} + +| Create base startup configuration of VPP on all DUTs +| | [Documentation] | Create base startup configuration of VPP to all DUTs. +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Import Library | resources.libraries.python.VppConfigGenerator +| | | ... | WITH NAME | ${dut} +| | | Run keyword | ${dut}.Set Node | ${nodes['${dut}']} +| | | Run keyword | ${dut}.Add Unix Log +| | | Run keyword | ${dut}.Add Unix CLI Listen +| | | Run keyword | ${dut}.Add Unix Nodaemon +| | | Run keyword | ${dut}.Add DPDK Socketmem | "1024,1024" +| | | Run keyword | ${dut}.Add Heapsize | "3G" +| | | Run keyword | ${dut}.Add IP6 Hash Buckets | "2000000" +| | | Run keyword | ${dut}.Add IP6 Heap Size | "3G" + +| Add '${m}' worker threads and '${n}' rxqueues in 3-node single-link circular topology +| | [Documentation] | Setup M worker threads and N rxqueues in vpp startup\ +| | ... | configuration on all DUTs in 3-node single-link topology. +| | ... +| | ${m_int}= | Convert To Integer | ${m} +| | ${dut1_numa}= | Get interfaces numa node | ${dut1} +| | ... | ${dut1_if1} | ${dut1_if2} +| | ${dut2_numa}= | Get interfaces numa node | ${dut2} +| | ... | ${dut2_if1} | ${dut2_if2} +| | ${dut1_cpu_main}= | Cpu list per node str | ${dut1} | ${dut1_numa} +| | ... | skip_cnt=${1} | cpu_cnt=${1} +| | ${dut1_cpu_w}= | Cpu list per node str | ${dut1} | ${dut1_numa} +| | ... | skip_cnt=${2} | cpu_cnt=${m_int} +| | ${dut2_cpu_main}= | Cpu list per node str | ${dut2} | ${dut2_numa} +| | ... | skip_cnt=${1} | cpu_cnt=${1} +| | ${dut2_cpu_w}= | Cpu list per node str | ${dut2} | ${dut2_numa} +| | ... | skip_cnt=${2} | cpu_cnt=${m_int} +| | Run keyword | DUT1.Add CPU Main Core | ${dut1_cpu_main} +| | Run keyword | DUT2.Add CPU Main Core | ${dut2_cpu_main} +| | Run keyword | DUT1.Add CPU Corelist Workers | ${dut1_cpu_w} +| | Run keyword | DUT2.Add CPU Corelist Workers | ${dut2_cpu_w} +| | Run keyword | DUT1.Add DPDK Dev Default RXQ | ${n} +| | Run keyword | DUT2.Add DPDK Dev Default RXQ | ${n} + +| Add '${m}' worker threads and '${n}' rxqueues in 2-node single-link circular topology +| | [Documentation] | Setup M worker threads and N rxqueues in vpp startup\ +| | ... | configuration on all DUTs in 2-node single-link topology. +| | ... +| | ${m_int}= | Convert To Integer | ${m} +| | ${dut1_numa}= | Get interfaces numa node | ${dut1} +| | ... | ${dut1_if1} | ${dut1_if2} +| | ${dut1_cpu_main}= | Cpu list per node str | ${dut1} | ${dut1_numa} +| | ... | skip_cnt=${1} | cpu_cnt=${1} +| | ${dut1_cpu_w}= | Cpu list per node str | ${dut1} | ${dut1_numa} +| | ... | skip_cnt=${2} | cpu_cnt=${m_int} +| | Run keyword | DUT1.Add CPU Main Core | ${dut1_cpu_main} +| | Run keyword | DUT1.Add CPU Corelist Workers | ${dut1_cpu_w} +| | Run keyword | DUT1.Add DPDK Dev Default RXQ | ${n} + +| Add '${m}' worker threads using SMT and '${n}' rxqueues in 3-node single-link circular topology +| | [Documentation] | Setup M worker threads using SMT and N rxqueues in vpp\ +| | ... | startup configuration on all DUTs in 3-node single-link topology. +| | ... +| | ${m_int}= | Convert To Integer | ${m} +| | ${dut1_numa}= | Get interfaces numa node | ${dut1} +| | ... | ${dut1_if1} | ${dut1_if2} +| | ${dut2_numa}= | Get interfaces numa node | ${dut2} +| | ... | ${dut2_if1} | ${dut2_if2} +| | ${dut1_cpu_main}= | Cpu list per node str | ${dut1} | ${dut1_numa} +| | ... | skip_cnt=${1} | cpu_cnt=${1} | smt_used=${True} +| | ${dut1_cpu_w}= | Cpu list per node str | ${dut1} | ${dut1_numa} +| | ... | skip_cnt=${2} | cpu_cnt=${m_int} | smt_used=${True} +| | ${dut2_cpu_main}= | Cpu list per node str | ${dut2} | ${dut2_numa} +| | ... | skip_cnt=${1} | cpu_cnt=${1} | smt_used=${True} +| | ${dut2_cpu_w}= | Cpu list per node str | ${dut2} | ${dut2_numa} +| | ... | skip_cnt=${2} | cpu_cnt=${m_int} | smt_used=${True} +| | Run keyword | DUT1.Add CPU Main Core | ${dut1_cpu_main} +| | Run keyword | DUT2.Add CPU Main Core | ${dut2_cpu_main} +| | Run keyword | DUT1.Add CPU Corelist Workers | ${dut1_cpu_w} +| | Run keyword | DUT2.Add CPU Corelist Workers | ${dut2_cpu_w} +| | Run keyword | DUT1.Add DPDK Dev Default RXQ | ${n} +| | Run keyword | DUT2.Add DPDK Dev Default RXQ | ${n} + +| Add '${m}' worker threads using SMT and '${n}' rxqueues in 2-node single-link circular topology +| | [Documentation] | Setup M worker threads and N rxqueues in vpp startup\ +| | ... | configuration on all DUTs in 2-node single-link topology. +| | ... +| | ${m_int}= | Convert To Integer | ${m} +| | ${dut1_numa}= | Get interfaces numa node | ${dut1} +| | ... | ${dut1_if1} | ${dut1_if2} +| | ${dut1_cpu_main}= | Cpu list per node str | ${dut1} | ${dut1_numa} +| | ... | skip_cnt=${1} | cpu_cnt=${1} | smt_used=${True} +| | ${dut1_cpu_w}= | Cpu list per node str | ${dut1} | ${dut1_numa} +| | ... | skip_cnt=${2} | cpu_cnt=${m_int} | smt_used=${True} +| | Run keyword | DUT1.Add CPU Main Core | ${dut1_cpu_main} +| | Run keyword | DUT1.Add CPU Corelist Workers | ${dut1_cpu_w} +| | Run keyword | DUT1.Add DPDK Dev Default RXQ | ${n} + +| Add no multi seg to all DUTs +| | [Documentation] | Add No Multi Seg to VPP startup configuration to all DUTs. +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Run keyword | ${dut}.Add DPDK No Multi Seg + +| Add SNAT to all DUTs +| | [Documentation] | Add SNAT configuration to all DUTs. +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Run keyword | ${dut}.Add SNAT + +| Add cryptodev to all DUTs +| | [Documentation] | Add Cryptodev to VPP startup configuration to all DUTs. +| | ... +| | ... | *Arguments:* +| | ... | - ${count} - Number of QAT devices. Type: integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Add cryptodev to all DUTs \| ${4} \| +| | ... +| | [Arguments] | ${count} +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Run keyword | ${dut}.Add DPDK Cryptodev | ${count} + +| Apply startup configuration on all VPP DUTs +| | [Documentation] | Write startup configuration and restart VPP on all DUTs. +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Run keyword | ${dut}.Apply Config +| | Update All Interface Data On All Nodes | ${nodes} | skip_tg=${TRUE} + +| Save VPP PIDs +| | [Documentation] | Get PIDs of VPP processes from all DUTs in topology and\ +| | ... | set it as a test variable. The PIDs are stored as dictionary items\ +| | ... | where the key is the host and the value is the PID. +| | ... +| | ${setup_vpp_pids}= | Get VPP PIDs | ${nodes} +| | ${keys}= | Get Dictionary Keys | ${setup_vpp_pids} +| | :FOR | ${key} | IN | @{keys} +| | | ${pid}= | Get From Dictionary | ${setup_vpp_pids} | ${key} +| | | Run Keyword If | $pid is None | FAIL | No VPP PID found on node ${key} +| | | Run Keyword If | ',' in '${pid}' +| | | ... | FAIL | More then one VPP PID found on node ${key}: ${pid} +| | Set Test Variable | ${setup_vpp_pids} + +| Verify VPP PID in Teardown +| | [Documentation] | Check if the VPP PIDs on all DUTs are the same at the end\ +| | ... | of test as they were at the begining. If they are not, only a message\ +| | ... | is printed on console and to log. The test will not fail. +| | ... +| | ${teardown_vpp_pids}= | Get VPP PIDs | ${nodes} +| | ${err_msg}= | Catenate | ${SUITE NAME} - ${TEST NAME} +| | ... | \nThe VPP PIDs are not equal!\nTest Setup VPP PIDs: +| | ... | ${setup_vpp_pids}\nTest Teardown VPP PIDs: ${teardown_vpp_pids} +| | ${rc} | ${msg}= | Run keyword and ignore error +| | ... | Dictionaries Should Be Equal +| | ... | ${setup_vpp_pids} | ${teardown_vpp_pids} +| | Run Keyword And Return If | '${rc}'=='FAIL' | Log | ${err_msg} +| | ... | console=yes | level=WARN + +| Set up functional test +| | [Documentation] | Common test setup for functional tests. +| | ... +| | Configure all DUTs before test +| | Save VPP PIDs +| | Configure all TGs for traffic script +| | Update All Interface Data On All Nodes | ${nodes} +| | Reset VAT History On All DUTs | ${nodes} + +| Tear down functional test +| | [Documentation] | Common test teardown for functional tests. +| | ... +| | Show Packet Trace on All DUTs | ${nodes} +| | Show VAT History On All DUTs | ${nodes} +| | Vpp Show Errors On All DUTs | ${nodes} +| | Verify VPP PID in Teardown + +| Tear down LISP functional test +| | [Documentation] | Common test teardown for functional tests with LISP. +| | ... +| | Show Packet Trace on All DUTs | ${nodes} +| | Show VAT History On All DUTs | ${nodes} +| | Show Vpp Settings | ${nodes['DUT1']} +| | Show Vpp Settings | ${nodes['DUT2']} +| | Vpp Show Errors On All DUTs | ${nodes} +| | Verify VPP PID in Teardown + +| Tear down LISP functional test with QEMU +| | [Documentation] | Common test teardown for functional tests with LISP and\ +| | ... | QEMU. +| | ... +| | ... | *Arguments:* +| | ... | - vm_node - VM to stop. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Tear down LISP functional test with QEMU \| ${vm_node} \| +| | ... +| | [Arguments] | ${vm_node} +| | ... +| | Show Packet Trace on All DUTs | ${nodes} +| | Show VAT History On All DUTs | ${nodes} +| | Show Vpp Settings | ${nodes['DUT1']} +| | Show Vpp Settings | ${nodes['DUT2']} +| | Vpp Show Errors On All DUTs | ${nodes} +| | Stop and clear QEMU | ${nodes['DUT1']} | ${vm_node} +| | Verify VPP PID in Teardown + +| Set up TAP functional test +| | [Documentation] | Common test setup for functional tests with TAP. +| | ... +| | Set up functional test +| | Clean Up Namespaces | ${nodes['DUT1']} + +| Tear down TAP functional test +| | [Documentation] | Common test teardown for functional tests with TAP. +| | ... +| | Tear down functional test +| | Clean Up Namespaces | ${nodes['DUT1']} + +| Tear down TAP functional test with Linux bridge +| | [Documentation] | Common test teardown for functional tests with TAP and +| | ... | a Linux bridge. +| | ... +| | ... | *Arguments:* +| | ... | - bid_TAP - Bridge name. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Tear down TAP functional test with Linux bridge \| ${bid_TAP} \| +| | ... +| | [Arguments] | ${bid_TAP} +| | ... +| | Tear down functional test +| | Linux Del Bridge | ${nodes['DUT1']} | ${bid_TAP} +| | Clean Up Namespaces | ${nodes['DUT1']} diff --git a/resources/libraries/robot/shared/interfaces.robot b/resources/libraries/robot/shared/interfaces.robot new file mode 100644 index 0000000000..c2b897d6a0 --- /dev/null +++ b/resources/libraries/robot/shared/interfaces.robot @@ -0,0 +1,35 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*** Settings *** +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.VatExecutor + +*** Keywords *** +| VPP reports interfaces through VAT on '${node}' +| | Execute Script | dump_interfaces.vat | ${node} +| | Script Should Have Passed + +| Configure MTU on TG based on MTU on DUT +| | [Documentation] | Type of the tg_node must be TG and dut_node must be DUT +| | [Arguments] | ${tg_node} | ${dut_node} +| | Append Nodes | ${tg_node} | ${dut_node} +| | Compute Path +| | ${tg_port} | ${tg_node}= | First Interface +| | ${dut_port} | ${dut_node}= | Last Interface +| | # get physical layer MTU (max. size of Ethernet frame) +| | ${mtu}= | Get Interface MTU | ${dut_node} | ${dut_port} +| | # Ethernet MTU is physical layer MTU minus size of Ethernet header and FCS +| | ${eth_mtu}= | Evaluate | ${mtu} - 14 - 4 +| | Set Interface Ethernet MTU | ${tg_node} | ${tg_port} | ${eth_mtu} + diff --git a/resources/libraries/robot/shared/lxc.robot b/resources/libraries/robot/shared/lxc.robot new file mode 100644 index 0000000000..83bd5c1837 --- /dev/null +++ b/resources/libraries/robot/shared/lxc.robot @@ -0,0 +1,257 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Documentation | Keywords related to linux container (LXC) +| Library | resources.libraries.python.LXCUtils +| Library | resources.libraries.python.CpuUtils +| Library | resources.libraries.python.topology.Topology + +*** Keywords *** +| Create LXC container on DUT node +| | [Documentation] | Setup lxc container on DUT node. +| | ... +| | ... | *Arguments:* +| | ... +| | ... | - dut_node - DUT node. Type: dictionary +| | ... | - lxc_name - Name of LXC container. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Create LXC container on DUT node \| ${nodes['DUT1']} \ +| | ... | \| DUT1_slave_1 \| +| | ... +| | [Arguments] | ${dut_node} | ${lxc_name} +| | ... +| | Import Library | resources.libraries.python.LXCUtils +| | ... | container_name=${lxc_name} | WITH NAME | ${lxc_name} +| | Run keyword | ${lxc_name}.Set node | ${dut_node} +| | Run keyword | ${lxc_name}.Create container | force_create=${TRUE} +| | Run keyword | ${lxc_name}.Mount host dir in container + +| Create LXC container on DUT node with cpuset +| | [Documentation] | Create LXC container on DUT node with cpuset. +| | ... +| | ... | *Arguments:* +| | ... +| | ... | - dut_node - DUT node. Type: dictionary +| | ... | - lxc_name - Name of LXC container. Type: dictionary +| | ... | - skip - number of cpus which will be skipped. Type: integer +| | ... | - count - number of cpus which will be allocated for lxc. Type: +| | ... | integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Create LXC container on DUT node with cpuset \ +| | ... | \| ${nodes['DUT1']} \| DUT1_slave_1 \| 6 \| 1 \| +| | ... +| | [Arguments] | ${dut_node} | ${lxc_name} | ${skip}=${6} | ${count}=${1} +| | ... +| | Import Library | resources.libraries.python.LXCUtils +| | ... | container_name=${lxc_name} | WITH NAME | ${lxc_name} +| | ${dut_numa}= | Get interfaces numa node | ${dut_node} +| | ... | ${dut1_if1} | ${dut1_if2} +| | ${lxc_cpus}= | CPU list per node str | ${dut_node} | ${dut_numa} +| | ... | skip_cnt=${skip} | cpu_cnt=${count} | smt_used=${False} +| | Set Suite Variable | ${lxc_cpus} +| | Run keyword | ${lxc_name}.Set node | ${dut_node} +| | Run keyword | ${lxc_name}.Create container | force_create=${TRUE} +| | Run keyword | ${lxc_name}.Mount host dir in container +| | Run keyword | ${lxc_name}.Container cpuset cpus | 0,${lxc_cpus} + +| Create '${nr}' LXC containers on '${dut}' node +| | [Documentation] | Create and start multiple lxc containers on DUT node. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Create 5 LXC containers on DUT1 node \| +| | ... +| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 +| | | Create LXC container on DUT node | ${nodes['${dut}']} +| | | ... | ${dut}_${lxc_base_name}_${number} + +| Create '${nr}' LXC containers on all DUT nodes +| | [Documentation] | Create and start multiple LXC containers on all DUT nodes. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Create 5 LXC containers on all DUT nodes \| +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Create '${nr}' LXC containers on '${dut}' node + +| Create '${nr}' LXC containers on '${dut}' node with '${count}' cpus +| | [Documentation] | Create and start multiple LXC containers on DUT node. +| | ... | Set the cpuset.cpus cgroup profile for pin of cpus. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Create 5 LXC containers on DUT1 node with 2 cpus \| +| | ... +| | ${skip_cpus}= | Evaluate | ${vpp_cpus}+${system_cpus} +| | ${count_int}= | Convert To Integer | ${count} +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 +| | | ${skip}= | Evaluate | ${skip_cpus} + (${nr} - 1) * ${count} +| | | Create LXC container on DUT node with cpuset | ${nodes['${dut}']} +| | | ... | ${dut}_${lxc_base_name}_${number} | ${skip} | ${count_int} + +| Create '${nr}' LXC containers on all DUT nodes with '${count}' cpus +| | [Documentation] | Create and start multiple LXC containers on all DUT nodes. +| | ... | Set the cpuset.cpus cgroup profile for pin of cpus. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Create 5 LXC containers on all DUT nodes with 2 cpus \| +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Create '${nr}' LXC containers on '${dut}' node with '${count}' cpus + +| Destroy LXC container on DUT node +| | [Documentation] | Stop and destroy LXC container on DUT node. +| | ... +| | ... | *Arguments:* +| | ... +| | ... | - dut_node - DUT node. Type: dictionary +| | ... | - lxc_name - Name of LXC container. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Destroy LXC container on DUT node \| ${nodes['DUT1']} \ +| | ... | \| DUT1_slave_1 \| +| | ... +| | [Arguments] | ${dut_node} | ${lxc_name} +| | ... +| | Import Library | resources.libraries.python.LXCUtils +| | ... | container_name=${lxc_name} | WITH NAME | ${lxc_name} +| | Run keyword | ${lxc_name}.Set node | ${dut_node} +| | Run keyword | ${lxc_name}.Destroy container + +| Destroy '${nr}' LXC containers on '${dut}' node +| | [Documentation] | Stop and destroy multiple LXC containers on DUT node. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Destroy 5 LXC containers on DUT1 node \| +| | ... +| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 +| | | Destroy LXC container on DUT node | ${nodes['${dut}']} +| | | ... | ${dut}_${lxc_base_name}_${number} + +| Destroy '${nr}' LXC containers on all DUT nodes +| | [Documentation] | Stop and destroy multiple LXC containers on all DUT nodes. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Destroy 5 LXC containers on all DUT nodes \| +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Destroy '${nr}' LXC containers on '${dut}' node + +| Install VPP on LXC container on DUT node +| | [Documentation] | Install vpp on LXC container on DUT node. +| | ... +| | ... | *Arguments:* +| | ... +| | ... | - dut_node - DUT node. Type: dictionary +| | ... | - lxc_name - Name of LXC container. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Install VPP on LXC container on DUT node \| ${nodes['DUT1']} \ +| | ... | \| DUT1_slave_1 \| +| | ... +| | [Arguments] | ${dut_node} | ${lxc_name} +| | ... +| | Import Library | resources.libraries.python.LXCUtils +| | ... | container_name=${lxc_name} | WITH NAME | ${lxc_name} +| | Run keyword | ${lxc_name}.Set node | ${dut_node} +| | Run keyword | ${lxc_name}.Install VPP in container + +| Install VPP on '${nr}' LXC containers on '${dut}' node +| | [Documentation] | Install VPP on multiple LXC containers on DUT node. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Install VPP on 5 LXC containers on DUT1 node \| +| | ... +| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 +| | | Install VPP on LXC container on DUT node | ${nodes['${dut}']} +| | | ... | ${dut}_${lxc_base_name}_${number} + +| Install VPP on '${nr}' LXC containers on all DUT nodes +| | [Documentation] | Install VPP on multiple LXC containers on all DUT nodes. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Install VPP on 5 LXC containers on all DUT nodes \| +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Install VPP on '${nr}' LXC containers on '${dut}' node + +| Create startup configuration of VPP on LXC container on DUT node +| | [Documentation] | Create base startup configuration of VPP on LXC container +| | ... | on DUT node. +| | ... +| | ... | *Arguments:* +| | ... +| | ... | - dut_node - DUT node. Type: dictionary +| | ... | - lxc_name - Name of LXC container. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Create startup configuration of VPP on LXC container on DUT node \ +| | ... | \| ${nodes['DUT1']} \| DUT1_slave_1 \| +| | ... +| | [Arguments] | ${dut_node} | ${lxc_name} +| | ... +| | Import Library | resources.libraries.python.VppConfigGenerator +| | ... | WITH NAME | ${lxc_name}_conf +| | Run keyword | ${lxc_name}_conf.Set node | ${dut_node} +| | Run keyword | ${lxc_name}_conf.Add unix CLI listen +| | Run keyword | ${lxc_name}_conf.Add unix nodaemon +| | Run keyword | ${lxc_name}_conf.Add unix exec | "/tmp/running.exec" +| | Run keyword | ${lxc_name}_conf.Add CPU main core | "0" +| | Run keyword | ${lxc_name}_conf.Add CPU corelist workers | ${lxc_cpus} +| | Run keyword | ${lxc_name}_conf.Add plugin disable | "dpdk_plugin.so" +| | Run Keyword | ${lxc_name}_conf.Apply config LXC | ${lxc_name} + +| Create startup configuration of VPP on '${nr}' LXC containers on '${dut}' node +| | [Documentation] | Create base startup configuration of VPP on multiple LXC +| | ... | container on DUT node. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Create startup configuration of VPP on 1 LXC containers on DUT1 \ +| | ... | node \| +| | ... +| | :FOR | ${number} | IN RANGE | 1 | ${nr}+1 +| | | Create startup configuration of VPP on LXC container on DUT node +| | | ... | ${nodes['${dut}']} | ${dut}_${lxc_base_name}_${number} + +| Create startup configuration of VPP on '${nr}' LXC containers on all DUT nodes +| | [Documentation] | Create base startup configuration of VPP on multiple LXC +| | ... | container on all DUT nodes. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Create startup configuration of VPP on 1 LXC containers on all \ +| | ... | DUT nodes \| +| | ... +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Create startup configuration of VPP on '${nr}' LXC containers on '${dut}' node diff --git a/resources/libraries/robot/shared/testing_path.robot b/resources/libraries/robot/shared/testing_path.robot new file mode 100644 index 0000000000..b7543e1c4d --- /dev/null +++ b/resources/libraries/robot/shared/testing_path.robot @@ -0,0 +1,353 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.NodePath + +*** Keywords *** +| Configure path in 2-node circular topology +| | [Documentation] | Compute path for testing on two given nodes in circular +| | ... | topology and set corresponding test case variables. +| | ... +| | ... | *Arguments:* +| | ... | - ${tg_node} - TG node. Type: dictionary +| | ... | - ${dut_node} - DUT node. Type: dictionary +| | ... | - ${tg2_node} - Node where the path ends. Must be the same as TG node +| | ... | parameter in circular topology. Type: dictionary +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | _NOTE:_ This KW sets following test case variables: +| | ... | - ${tg_node} - TG node. +| | ... | - ${tg_to_dut_if1} - 1st TG interface towards DUT. +| | ... | - ${tg_to_dut_if2} - 2nd TG interface towards DUT. +| | ... | - ${dut_node} - DUT node. +| | ... | - ${dut_to_tg_if1} - 1st DUT interface towards TG. +| | ... | - ${dut_to_tg_if2} - 2nd DUT interface towards TG. +| | ... | - ${tg_to_dut_if1_mac} +| | ... | - ${tg_to_dut_if2_mac} +| | ... | - ${dut_to_tg_if1_mac} +| | ... | - ${dut_to_tg_if2_mac} +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Given Configure path in 2-node circular topology \| ${nodes['TG']} \ +| | ... | \| ${nodes['DUT1']} \| ${nodes['TG']} \| +| | ... +| | [Arguments] | ${tg_node} | ${dut_node} | ${tg2_node} +| | Should Be Equal | ${tg_node} | ${tg2_node} +| | Append Nodes | ${tg_node} | ${dut_node} | ${tg_node} +| | Compute Path | always_same_link=${FALSE} +| | ${tg_to_dut_if1} | ${tmp}= | First Interface +| | ${tg_to_dut_if2} | ${tmp}= | Last Interface +| | ${dut_to_tg_if1} | ${tmp}= | First Ingress Interface +| | ${dut_to_tg_if2} | ${tmp}= | Last Egress Interface +| | ${tg_to_dut_if1_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut_if1} +| | ${tg_to_dut_if2_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut_if2} +| | ${dut_to_tg_if1_mac}= | Get interface mac | ${dut_node} | ${dut_to_tg_if1} +| | ${dut_to_tg_if2_mac}= | Get interface mac | ${dut_node} | ${dut_to_tg_if2} +| | Set Test Variable | ${tg_to_dut_if1} +| | Set Test Variable | ${tg_to_dut_if2} +| | Set Test Variable | ${dut_to_tg_if1} +| | Set Test Variable | ${dut_to_tg_if2} +| | Set Test Variable | ${tg_to_dut_if1_mac} +| | Set Test Variable | ${tg_to_dut_if2_mac} +| | Set Test Variable | ${dut_to_tg_if1_mac} +| | Set Test Variable | ${dut_to_tg_if2_mac} +| | Set Test Variable | ${tg_node} +| | Set Test Variable | ${dut_node} + +| Set interfaces in 2-node circular topology up +| | [Documentation] | Set UP state on interfaces in 2-node path on nodes and +| | ... | wait for all interfaces are ready. Requires more than +| | ... | one link between nodes. +| | ... +| | ... | *Arguments:* +| | ... | - No arguments. +| | ... +| | ... | *Return:* +| | ... | - No value returned. +| | ... +| | ... | _NOTE:_ This KW uses test variables sets in +| | ... | "Configure path in 2-node circular topology" KW. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Given Configure path in 2-node circular topology \| ${nodes['TG']} \ +| | ... | \| ${nodes['DUT1']} \| ${nodes['TG']} \| +| | ... | \| And Set interfaces in 2-node circular topology up \| +| | ... +| | Set Interface State | ${tg_node} | ${tg_to_dut_if1} | up +| | Set Interface State | ${tg_node} | ${tg_to_dut_if2} | up +| | Set Interface State | ${dut_node} | ${dut_to_tg_if1} | up +| | Set Interface State | ${dut_node} | ${dut_to_tg_if2} | up +| | Vpp Node Interfaces Ready Wait | ${dut_node} + +| Configure path in 3-node circular topology +| | [Documentation] | Compute path for testing on three given nodes in circular +| | ... | topology and set corresponding test case variables. +| | ... +| | ... | *Arguments:* +| | ... | - ${tg_node} - TG node. Type: dictionary +| | ... | - ${dut1_node} - DUT1 node. Type: dictionary +| | ... | - ${dut2_node} - DUT2 node. Type: dictionary +| | ... | - ${tg2_node} - Node where the path ends. Must be the same as TG node +| | ... | parameter in circular topology. Type: dictionary +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... | +| | ... | _NOTE:_ This KW sets following test case variables: +| | ... | - ${tg_node} - TG node. +| | ... | - ${tg_to_dut1} - TG interface towards DUT1. +| | ... | - ${tg_to_dut2} - TG interface towards DUT2. +| | ... | - ${dut1_node} - DUT1 node. +| | ... | - ${dut1_to_tg} - DUT1 interface towards TG. +| | ... | - ${dut1_to_dut2} - DUT1 interface towards DUT2. +| | ... | - ${dut2_node} - DUT2 node. +| | ... | - ${dut2_to_tg} - DUT2 interface towards TG. +| | ... | - ${dut2_to_dut1} - DUT2 interface towards DUT1. +| | ... | - ${tg_to_dut1_mac} +| | ... | - ${tg_to_dut2_mac} +| | ... | - ${dut1_to_tg_mac} +| | ... | - ${dut1_to_dut2_mac} +| | ... | - ${dut2_to_tg_mac} +| | ... | - ${dut2_to_dut1_mac} +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Given Configure path in 3-node circular topology \| ${nodes['TG']} \ +| | ... | \| ${nodes['DUT1']} \| ${nodes['DUT2']} \| ${nodes['TG']} \| +| | ... +| | [Arguments] | ${tg_node} | ${dut1_node} | ${dut2_node} | ${tg2_node} +| | Should Be Equal | ${tg_node} | ${tg2_node} +| | Append Nodes | ${tg_node} | ${dut1_node} | ${dut2_node} | ${tg_node} +| | Compute Path +| | ${tg_to_dut1} | ${tmp}= | Next Interface +| | ${dut1_to_tg} | ${tmp}= | Next Interface +| | ${dut1_to_dut2} | ${tmp}= | Next Interface +| | ${dut2_to_dut1} | ${tmp}= | Next Interface +| | ${dut2_to_tg} | ${tmp}= | Next Interface +| | ${tg_to_dut2} | ${tmp}= | Next Interface +| | ${tg_to_dut1_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut1} +| | ${tg_to_dut2_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut2} +| | ${dut1_to_tg_mac}= | Get interface mac | ${dut1_node} | ${dut1_to_tg} +| | ${dut1_to_dut2_mac}= | Get interface mac | ${dut1_node} | ${dut1_to_dut2} +| | ${dut2_to_tg_mac}= | Get interface mac | ${dut2_node} | ${dut2_to_tg} +| | ${dut2_to_dut1_mac}= | Get interface mac | ${dut2_node} | ${dut2_to_dut1} +| | Set Test Variable | ${tg_to_dut1} +| | Set Test Variable | ${dut1_to_tg} +| | Set Test Variable | ${tg_to_dut2} +| | Set Test Variable | ${dut2_to_tg} +| | Set Test Variable | ${dut1_to_dut2} +| | Set Test Variable | ${dut2_to_dut1} +| | Set Test Variable | ${tg_to_dut1_mac} +| | Set Test Variable | ${tg_to_dut2_mac} +| | Set Test Variable | ${dut1_to_tg_mac} +| | Set Test Variable | ${dut1_to_dut2_mac} +| | Set Test Variable | ${dut2_to_tg_mac} +| | Set Test Variable | ${dut2_to_dut1_mac} +| | Set Test Variable | ${tg_node} +| | Set Test Variable | ${dut1_node} +| | Set Test Variable | ${dut2_node} + +| Set interfaces in 3-node circular topology up +| | [Documentation] +| | ... | Set UP state on interfaces in 3-node path on nodes and \ +| | ... | wait until all interfaces are ready. +| | ... +| | ... | *Arguments:* +| | ... | - No arguments. +| | ... +| | ... | *Return:* +| | ... | - No value returned. +| | ... +| | ... | _NOTE:_ This KW uses test variables sets in +| | ... | "Configure path in 3-node circular topology" KW. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Given Configure path in 3-node circular topology \| ${nodes['TG']} \ +| | ... | \| ${nodes['DUT1']} \| ${nodes['TG']} \| +| | ... | \| And Set interfaces in 3-node circular topology up \| +| | ... +| | Set Interface State | ${tg_node} | ${tg_to_dut1} | up +| | Set Interface State | ${tg_node} | ${tg_to_dut2} | up +| | Set Interface State | ${dut1_node} | ${dut1_to_tg} | up +| | Set Interface State | ${dut1_node} | ${dut1_to_dut2} | up +| | Set Interface State | ${dut2_node} | ${dut2_to_tg} | up +| | Set Interface State | ${dut2_node} | ${dut2_to_dut1} | up +| | Vpp Node Interfaces Ready Wait | ${dut1_node} +| | Vpp Node Interfaces Ready Wait | ${dut2_node} + +| Configure path in double-link 3-node circular topology +| | [Documentation] +| | ... | Compute path for testing on three given nodes in circular \ +| | ... | topology with double link and set corresponding \ +| | ... | test case variables. +| | ... +| | ... | *Arguments:* +| | ... | - ${tg_node} - TG node. Type: dictionary +| | ... | - ${dut1_node} - DUT1 node. Type: dictionary +| | ... | - ${dut2_node} - DUT2 node. Type: dictionary +| | ... | - ${tg2_node} - Node where the path ends. Must be the same as TG node +| | ... | parameter in circular topology. Type: dictionary +| | ... +| | ... | *Return:* +| | ... | - No value returned. +| | ... | +| | ... | _NOTE:_ This KW sets following test case variables: +| | ... | - ${tg_node} - TG node. +| | ... | - ${tg_to_dut1_if1} - TG interface towards DUT1 interface 1. +| | ... | - ${tg_to_dut1_if2} - TG interface towards DUT1 interface 2. +| | ... | - ${tg_to_dut1_mac_if1} - TG towards DUT1 MAC address interface 1. +| | ... | - ${tg_to_dut1_mac_if2} - TG towards DUT1 MAC address interface 2. +| | ... | - ${tg_to_dut2_if1} - TG interface towards DUT2 interface 1. +| | ... | - ${tg_to_dut2_if2} - TG interface towards DUT2 interface 2. +| | ... | - ${tg_to_dut2_mac_if1} - TG towards DUT2 MAC address interface 1. +| | ... | - ${tg_to_dut2_mac_if2} - TG towards DUT2 MAC address interface 2. +| | ... | - ${dut1_node} - DUT1 node. +| | ... | - ${dut1_to_tg_if1} - DUT1 interface towards TG interface 1. +| | ... | - ${dut1_to_tg_if2} - DUT1 interface towards TG interface 2. +| | ... | - ${dut1_to_tg_mac_if1} - DUT1 towards TG MAC address interface 1. +| | ... | - ${dut1_to_tg_mac_if2} - DUT1 towards TG MAC address interface 2. +| | ... | - ${dut1_to_dut2_if1} - DUT1 interface towards DUT2 interface 1. +| | ... | - ${dut1_to_dut2_if2} - DUT1 interface towards DUT2 interface 2. +| | ... | - ${dut1_to_dut2_mac_if1} - DUT1 towards DUT2 MAC address interface 1. +| | ... | - ${dut1_to_dut2_mac_if2} - DUT1 towards DUT2 MAC address interface 2. +| | ... | - ${dut2_node} - DUT2 node. +| | ... | - ${dut2_to_tg_if1} - DUT2 interface towards TG interface 1. +| | ... | - ${dut2_to_tg_if2} - DUT2 interface towards TG interface 2. +| | ... | - ${dut2_to_tg_mac_if1} - DUT2 towards TG MAC address interface 1. +| | ... | - ${dut2_to_tg_mac_if2} - DUT2 towards TG MAC address interface 2. +| | ... | - ${dut2_to_dut1_if1} - DUT2 interface towards DUT1 interface 1. +| | ... | - ${dut2_to_dut1_if2} - DUT2 interface towards DUT1 interface 2. +| | ... | - ${dut2_to_dut1_mac_if1} - DUT2 towards DUT1 MAC address interface 1. +| | ... | - ${dut2_to_dut1_mac_if2} - DUT2 towards DUT1 MAC address interface 2. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure path in double-link 3-node circular topology \| ${nodes['TG']} \ +| | ... | \| ${nodes['DUT1']} \| ${nodes['DUT2']} \| ${nodes['TG']} \| +| | ... +| | [Arguments] | ${tg_node} | ${dut1_node} | ${dut2_node} | ${tg2_node} +| | Should Be Equal | ${tg_node} | ${tg2_node} +| | # Compute path TG - DUT1 with two links in between +| | Append Nodes | ${tg_node} | ${dut1_node} | ${tg_node} +| | Compute Path | always_same_link=${FALSE} +| | ${tg_to_dut1_if1} | ${tmp}= | First Interface +| | ${tg_to_dut1_if2} | ${tmp}= | Last Interface +| | ${dut1_to_tg_if1} | ${tmp}= | First Ingress Interface +| | ${dut1_to_tg_if2} | ${tmp}= | Last Egress Interface +| | # Compute path TG - DUT2 with two links in between +| | Clear Path +| | Append Nodes | ${tg_node} | ${dut2_node} | ${tg_node} +| | Compute Path | always_same_link=${FALSE} +| | ${tg_to_dut2_if1} | ${tmp}= | First Interface +| | ${tg_to_dut2_if2} | ${tmp}= | Last Interface +| | ${dut2_to_tg_if1} | ${tmp}= | First Ingress Interface +| | ${dut2_to_tg_if2} | ${tmp}= | Last Egress Interface +| | # Compute path DUT1 - DUT2 with one link in between +| | Clear Path +| | Append Nodes | ${dut1_node} | ${dut2_node} | ${dut1_node} +| | Compute Path | always_same_link=${FALSE} +| | ${dut1_to_dut2_if1} | ${tmp}= | First Interface +| | ${dut1_to_dut2_if2} | ${tmp}= | Last Interface +| | ${dut2_to_dut1_if1} | ${tmp}= | First Ingress Interface +| | ${dut2_to_dut1_if2} | ${tmp}= | Last Egress Interface +| | # Set test variables +| | Set Test Variable | ${tg_to_dut1_if1} +| | Set Test Variable | ${tg_to_dut1_if2} +| | Set Test Variable | ${tg_to_dut2_if1} +| | Set Test Variable | ${tg_to_dut2_if2} +| | Set Test Variable | ${dut1_to_tg_if1} +| | Set Test Variable | ${dut1_to_tg_if2} +| | Set Test Variable | ${dut2_to_tg_if1} +| | Set Test Variable | ${dut2_to_tg_if2} +| | Set Test Variable | ${dut1_to_dut2_if1} +| | Set Test Variable | ${dut1_to_dut2_if2} +| | Set Test Variable | ${dut2_to_dut1_if1} +| | Set Test Variable | ${dut2_to_dut1_if2} +| | Set Test Variable | ${tg_node} +| | Set Test Variable | ${dut1_node} +| | Set Test Variable | ${dut2_node} +| | # Set Mac Addresses +| | ${tg_to_dut1_if1_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut1_if1} +| | ${tg_to_dut1_if2_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut1_if2} +| | ${tg_to_dut2_if1_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut2_if1} +| | ${tg_to_dut2_if2_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut2_if2} +| | ${dut1_to_tg_if1_mac}= | Get interface mac | ${dut1_node} +| | ... | ${dut1_to_tg_if1} +| | ${dut1_to_tg_if2_mac}= | Get interface mac | ${dut1_node} +| | ... | ${dut1_to_tg_if2} +| | ${dut1_to_dut2_if1_mac}= | Get interface mac | ${dut1_node} +| | ... | ${dut1_to_dut2_if1} +| | ${dut1_to_dut2_if2_mac}= | Get interface mac | ${dut1_node} +| | ... | ${dut1_to_dut2_if2} +| | ${dut2_to_tg_if1_mac}= | Get interface mac | ${dut2_node} +| | ... | ${dut2_to_tg_if1} +| | ${dut2_to_tg_if2_mac}= | Get interface mac | ${dut2_node} +| | ... | ${dut2_to_tg_if2} +| | ${dut2_to_dut1_if1_mac}= | Get interface mac | ${dut2_node} +| | ... | ${dut2_to_dut1_if1} +| | ${dut2_to_dut1_if2_mac}= | Get interface mac | ${dut2_node} +| | ... | ${dut2_to_dut1_if2} +| | Set Test Variable | ${tg_to_dut1_if1_mac} +| | Set Test Variable | ${tg_to_dut1_if2_mac} +| | Set Test Variable | ${tg_to_dut2_if1_mac} +| | Set Test Variable | ${tg_to_dut2_if2_mac} +| | Set Test Variable | ${dut1_to_tg_if1_mac} +| | Set Test Variable | ${dut1_to_tg_if2_mac} +| | Set Test Variable | ${dut1_to_dut2_if1_mac} +| | Set Test Variable | ${dut1_to_dut2_if2_mac} +| | Set Test Variable | ${dut2_to_tg_if1_mac} +| | Set Test Variable | ${dut2_to_tg_if2_mac} +| | Set Test Variable | ${dut2_to_dut1_if1_mac} +| | Set Test Variable | ${dut2_to_dut1_if2_mac} + +| Set interfaces in double-link 3-node circular topology up +| | [Documentation] +| | ... | Set UP state on interfaces in 3-node double link path \ +| | ... | wait until all interfaces are ready. +| | ... +| | ... | *Arguments:* +| | ... | - No arguments. +| | ... +| | ... | *Return:* +| | ... | - No value returned. +| | ... +| | ... | _NOTE:_ This KW uses test variables sets in +| | ... | "Configure path in double-link 3-node circular topology" KW. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Configure path in double-link 3-node circular topology \| ${nodes['TG']} \ +| | ... | \| ${nodes['DUT1']} \| ${nodes['TG']} \| +| | ... | \| Interfaces in Double-Link 3-node testing are UP \| +| | ... +| | Set Interface State | ${tg_node} | ${tg_to_dut1_if1} | up +| | Set Interface State | ${tg_node} | ${tg_to_dut1_if2} | up +| | Set Interface State | ${tg_node} | ${tg_to_dut2_if1} | up +| | Set Interface State | ${tg_node} | ${tg_to_dut2_if2} | up +| | Set Interface State | ${dut1_node} | ${dut1_to_tg_if1} | up +| | Set Interface State | ${dut1_node} | ${dut1_to_tg_if2} | up +| | Set Interface State | ${dut2_node} | ${dut2_to_tg_if1} | up +| | Set Interface State | ${dut2_node} | ${dut2_to_tg_if2} | up +| | Set Interface State | ${dut1_node} | ${dut1_to_dut2_if1} | up +| | Set Interface State | ${dut1_node} | ${dut1_to_dut2_if2} | up +| | Set Interface State | ${dut2_node} | ${dut2_to_dut1_if1} | up +| | Set Interface State | ${dut2_node} | ${dut2_to_dut1_if2} | up +| | Vpp Node Interfaces Ready Wait | ${dut1_node} +| | Vpp Node Interfaces Ready Wait | ${dut2_node} \ No newline at end of file diff --git a/resources/libraries/robot/shared/traffic.robot b/resources/libraries/robot/shared/traffic.robot new file mode 100644 index 0000000000..3a5cacee50 --- /dev/null +++ b/resources/libraries/robot/shared/traffic.robot @@ -0,0 +1,459 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Traffic keywords""" + +*** Settings *** +| Library | resources.libraries.python.IPv6Util +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.TrafficScriptExecutor +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Routing +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.topology.Topology +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/counters.robot +| Documentation | Traffic keywords + +*** Keywords *** +| Send packet and verify headers +| | [Documentation] | Sends packet from IP (with source mac) to IP +| | ... | (with dest mac). There has to be 4 MAC addresses +| | ... | when using 2 node + +| | ... | xconnect (one for each eth). +| | ... +| | ... | *Arguments:* +| | ... +| | ... | _NOTE:_ Arguments are based on topology: +| | ... | TG(if1)->(if1)DUT(if2)->TG(if2) +| | ... +| | ... | - tg_node - Node to execute scripts on (TG). Type: dictionary +| | ... | - src_ip - IP of source interface (TG-if1). Type: string +| | ... | - dst_ip - IP of destination interface (TG-if2). Type: string +| | ... | - tx_src_port - Interface of TG-if1. Type: string +| | ... | - tx_src_mac - MAC address of TG-if1. Type: string +| | ... | - tx_dst_mac - MAC address of DUT-if1. Type: string +| | ... | - rx_port - Interface of TG-if1. Type: string +| | ... | - rx_src_mac - MAC address of DUT1-if2. Type: string +| | ... | - rx_dst_mac - MAC address of TG-if2. Type: string +| | ... | - encaps_tx - Expected encapsulation on TX side: Dot1q or Dot1ad +| | ... | (Optional). Type: string +| | ... | - vlan_tx - VLAN (inner) tag on TX side (Optional). Type: integer +| | ... | - vlan_outer_tx - .1AD VLAN (outer) tag on TX side (Optional). +| | ... | Type: integer +| | ... | - encaps_rx - Expected encapsulation on RX side: Dot1q or Dot1ad +| | ... | (Optional). Type: string +| | ... | - vlan_rx - VLAN (inner) tag on RX side (Optional). Type: integer +| | ... | - vlan_outer_rx - .1AD VLAN (outer) tag on RX side (Optional). +| | ... | Type: integer +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send packet and verify headers \| ${nodes['TG']} \| 10.0.0.1 \ +| | ... | \| 32.0.0.1 \| eth2 \| 08:00:27:ee:fd:b3 \| 08:00:27:a2:52:5b \ +| | ... | \| eth3 \| 08:00:27:4d:ca:7a \| 08:00:27:7d:fd:10 \| +| | ... +| | [Arguments] | ${tg_node} | ${src_ip} | ${dst_ip} | ${tx_src_port} | +| | ... | ${tx_src_mac} | ${tx_dst_mac} | ${rx_port} | ${rx_src_mac} +| | ... | ${rx_dst_mac} +| | ... | ${encaps_tx}=${EMPTY} | ${vlan_tx}=${EMPTY} | ${vlan_outer_tx}=${EMPTY} +| | ... | ${encaps_rx}=${EMPTY} | ${vlan_rx}=${EMPTY} | ${vlan_outer_rx}=${EMPTY} +| | ${tx_port_name}= | Get interface name | ${tg_node} | ${tx_src_port} +| | ${rx_port_name}= | Get interface name | ${tg_node} | ${rx_port} +| | ${args}= | Catenate | --tg_src_mac | ${tx_src_mac} | --tg_dst_mac | +| | ... | ${rx_dst_mac} | --dut_if1_mac | ${tx_dst_mac} | --dut_if2_mac | +| | ... | ${rx_src_mac} | --src_ip | ${src_ip} | --dst_ip | ${dst_ip} | +| | ... | --tx_if | ${tx_port_name} | --rx_if | ${rx_port_name} +| | ${args}= | Run Keyword If | '${encaps_tx}' == '${EMPTY}' +| | | ... | Set Variable | ${args} +| | ... | ELSE | Catenate +| | ... | ${args} | --encaps_tx ${encaps_tx} | --vlan_tx ${vlan_tx} +| | ${args}= | Run Keyword If | '${encaps_rx}' == '${EMPTY}' +| | | ... | Set Variable | ${args} +| | ... | ELSE | Catenate +| | ... | ${args} | --encaps_rx ${encaps_rx} | --vlan_rx ${vlan_rx} +| | ${args}= | Run Keyword If | '${vlan_outer_tx}' == '${EMPTY}' +| | | ... | Set Variable | ${args} +| | ... | ELSE | Catenate | ${args} | --vlan_outer_tx ${vlan_outer_tx} +| | ${args}= | Run Keyword If | '${vlan_outer_rx}' == '${EMPTY}' +| | | ... | Set Variable | ${args} +| | ... | ELSE | Catenate | ${args} | --vlan_outer_rx ${vlan_outer_rx} +| | Run Traffic Script On Node | send_icmp_check_headers.py | ${tg_node} | +| | ... | ${args} + +| Packet transmission from port to port should fail +| | [Documentation] | Sends packet from ip (with specified mac) to ip +| | ... | (with dest mac). Using keyword : Send packet And Check +| | ... | Headers and subsequently checks the return value +| | ... +| | ... | *Arguments:* +| | ... +| | ... | _NOTE:_ Arguments are based on topology: +| | ... | TG(if1)->(if1)DUT(if2)->TG(if2) +| | ... +| | ... | - tg_node - Node to execute scripts on (TG). Type: dictionary +| | ... | - src_ip - IP of source interface (TG-if1). Type: string +| | ... | - dst_ip - IP of destination interface (TG-if2). Type: string +| | ... | - tx_src_port - Interface of TG-if1. Type: string +| | ... | - tx_src_mac - MAC address of TG-if1. Type: string +| | ... | - tx_dst_mac - MAC address of DUT-if1. Type: string +| | ... | - rx_port - Interface of TG-if1. Type: string +| | ... | - rx_src_mac - MAC address of DUT1-if2. Type: string +| | ... | - rx_dst_mac - MAC address of TG-if2. Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Packet transmission from port to port should fail \| ${nodes['TG']} \ +| | ... | \| 10.0.0.1 \ \| 32.0.0.1 \| eth2 \| 08:00:27:ee:fd:b3 \ +| | ... | \| 08:00:27:a2:52:5b \| eth3 \| 08:00:27:4d:ca:7a \ +| | ... | \| 08:00:27:7d:fd:10 \| +| | [Arguments] | ${tg_node} | ${src_ip} | ${dst_ip} | ${tx_src_port} | +| | ... | ${tx_src_mac} | ${tx_dst_mac} | ${rx_port} | ${rx_src_mac} | +| | ... | ${rx_dst_mac} +| | ${tx_port_name}= | Get interface name | ${tg_node} | ${tx_src_port} +| | ${rx_port_name}= | Get interface name | ${tg_node} | ${rx_port} +| | ${args}= | Catenate | --tg_src_mac | ${tx_src_mac} | --tg_dst_mac | +| | ... | ${rx_dst_mac} | --dut_if1_mac | ${tx_dst_mac} | --dut_if2_mac | +| | ... | ${rx_src_mac} | --src_ip | ${src_ip} | --dst_ip | ${dst_ip} | +| | ... | --tx_if | ${tx_port_name} | --rx_if | ${rx_port_name} +| | Run Keyword And Expect Error | ICMP echo Rx timeout | +| | ... | Run Traffic Script On Node | send_icmp_check_headers.py +| | ... | ${tg_node} | ${args} + +| Send packet and verify ARP request +| | [Documentation] | Send IP packet from tx_port and check if ARP Request\ +| | ... | packet is received on rx_port. +| | ... +| | ... | *Arguments:* +| | ... +| | ... | _NOTE:_ Arguments are based on topology: +| | ... | TG(if1)->(if1)DUT(if2)->TG(if2) +| | ... +| | ... | - tg_node - Node to execute scripts on (TG). Type: dictionary +| | ... | - tx_src_ip - Source IP address of transferred packet (TG-if1). +| | ... | Type: string +| | ... | - tx_dst_ip - Destination IP address of transferred packet (TG-if2). +| | ... | Type: string +| | ... | - tx_port - Interface from which the IP packet is sent (TG-if1). +| | ... | Type: string +| | ... | - tx_dst_mac - Destination MAC address of IP packet (DUT-if1). +| | ... | Type: string +| | ... | - rx_port - Interface where the IP packet is received (TG-if2). +| | ... | Type: string +| | ... | - rx_src_mac - Source MAC address of ARP packet (DUT-if2). +| | ... | Type: string +| | ... | - rx_arp_src_ip - Source IP address of ARP packet (DUT-if2). +| | ... | Type: string +| | ... | - rx_arp_dst_ip - Destination IP address of ARP packet. Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send Packet And Check ARP Packet \| ${nodes['TG']} \| 16.0.0.1 \ +| | ... | \| 32.0.0.1 \| eth2 \| 08:00:27:cc:4f:54 \ +| | ... | \| eth4 \| 08:00:27:5b:49:dd \| 192.168.2.1 \| 192.168.2.2 \| +| | ... +| | [Arguments] | ${tg_node} | ${tx_src_ip} | ${tx_dst_ip} | ${tx_port} +| | ... | ${tx_dst_mac} | ${rx_port} | ${rx_src_mac} | ${rx_arp_src_ip} +| | ... | ${rx_arp_dst_ip} +| | ${tx_port_name}= | Get interface name | ${tg_node} | ${tx_port} +| | ${rx_port_name}= | Get interface name | ${tg_node} | ${rx_port} +| | ${args}= | Catenate +| | ... | --tx_dst_mac | ${tx_dst_mac} | --rx_src_mac | ${rx_src_mac} +| | ... | --tx_src_ip | ${tx_src_ip} | --tx_dst_ip | ${tx_dst_ip} +| | ... | --tx_if | ${tx_port_name} | --rx_if | ${rx_port_name} +| | ... | --rx_arp_src_ip ${rx_arp_src_ip} | --rx_arp_dst_ip ${rx_arp_dst_ip} +| | Run Traffic Script On Node | send_icmp_check_arp.py | ${tg_node} | ${args} + +| Send TCP or UDP packet and verify received packet +| | [Documentation] | Sends TCP or UDP packet with specified source +| | ... | and destination port. +| | ... +| | ... | *Arguments:* +| | ... +| | ... | _NOTE:_ Arguments are based on topology: +| | ... | TG(if1)->(if1)DUT(if2)->TG(if2) +| | ... +| | ... | - tg_node - Node to execute scripts on (TG). Type: dictionary +| | ... | - src_ip - IP of source interface (TG-if1). Type: integer +| | ... | - dst_ip - IP of destination interface (TG-if2). Type: integer +| | ... | - tx_port - Source interface (TG-if1). Type: string +| | ... | - tx_mac - MAC address of source interface (TG-if1). Type: string +| | ... | - rx_port - Destionation interface (TG-if1). Type: string +| | ... | - rx_mac - MAC address of destination interface (TG-if1). Type: string +| | ... | - protocol - Type of protocol. Type: string +| | ... | - source_port - Source TCP/UDP port. Type: string or integer +| | ... | - destination_port - Destination TCP/UDP port. Type: string or integer +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send TCP or UDP packet and verify received packet \| ${nodes['TG']} \ +| | ... | \| 16.0.0.1 \| 32.0.0.1 \| eth2 \| 08:00:27:cc:4f:54 \ +| | ... | \| eth4 \| 08:00:27:c9:6a:d5 \| TCP \| 20 \| 80 \| +| | ... +| | [Arguments] | ${tg_node} | ${src_ip} | ${dst_ip} | ${tx_port} | +| | ... | ${tx_mac} | ${rx_port} | ${rx_mac} | ${protocol} | ${source_port} +| | ... | ${destination_port} +| | ${tx_port_name}= | Get interface name | ${tg_node} | ${tx_port} +| | ${rx_port_name}= | Get interface name | ${tg_node} | ${rx_port} +| | ${args}= | Catenate | --tx_mac | ${tx_mac} +| | ... | --rx_mac | ${rx_mac} +| | ... | --src_ip | ${src_ip} +| | ... | --dst_ip | ${dst_ip} +| | ... | --tx_if | ${tx_port_name} +| | ... | --rx_if | ${rx_port_name} +| | ... | --protocol | ${protocol} +| | ... | --source_port | ${source_port} +| | ... | --destination_port | ${destination_port} +| | Run Traffic Script On Node | send_tcp_udp.py +| | ... | ${tg_node} | ${args} + +| TCP or UDP packet transmission should fail +| | [Documentation] | Sends TCP or UDP packet with specified source +| | ... | and destination port. +| | ... +| | ... | *Arguments:* +| | ... +| | ... | _NOTE:_ Arguments are based on topology: +| | ... | TG(if1)->(if1)DUT(if2)->TG(if2) +| | ... +| | ... | - tg_node - Node to execute scripts on (TG). Type: dictionary +| | ... | - src_ip - IP of source interface (TG-if1). Type: integer +| | ... | - dst_ip - IP of destination interface (TG-if2). Type: integer +| | ... | - tx_port - Source interface (TG-if1). Type: string +| | ... | - tx_mac - MAC address of source interface (TG-if1). Type: string +| | ... | - rx_port - Destionation interface (TG-if1). Type: string +| | ... | - rx_mac - MAC address of destination interface (TG-if1). Type: string +| | ... | - protocol - Type of protocol. Type: string +| | ... | - source_port - Source TCP/UDP port. Type: string or integer +| | ... | - destination_port - Destination TCP/UDP port. Type: string or integer +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| TCP or UDP packet transmission should fail \| ${nodes['TG']} \ +| | ... | \| 16.0.0.1 \| 32.0.0.1 \| eth2 \| 08:00:27:cc:4f:54 \ +| | ... | \| eth4 \| 08:00:27:c9:6a:d5 \| TCP \| 20 \| 80 \| +| | ... +| | [Arguments] | ${tg_node} | ${src_ip} | ${dst_ip} | ${tx_port} | +| | ... | ${tx_mac} | ${rx_port} | ${rx_mac} | ${protocol} | ${source_port} +| | ... | ${destination_port} +| | ${tx_port_name}= | Get interface name | ${tg_node} | ${tx_port} +| | ${rx_port_name}= | Get interface name | ${tg_node} | ${rx_port} +| | ${args}= | Catenate | --tx_mac | ${tx_mac} +| | ... | --rx_mac | ${rx_mac} +| | ... | --src_ip | ${src_ip} +| | ... | --dst_ip | ${dst_ip} +| | ... | --tx_if | ${tx_port_name} +| | ... | --rx_if | ${rx_port_name} +| | ... | --protocol | ${protocol} +| | ... | --source_port | ${source_port} +| | ... | --destination_port | ${destination_port} +| | Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Run Traffic Script On Node | send_tcp_udp.py +| | ... | ${tg_node} | ${args} + +| Receive and verify router advertisement packet +| | [Documentation] | Wait until RA packet is received and then verify\ +| | ... | specific fields of received RA packet. +| | ... +| | ... | *Arguments:* +| | ... +| | ... | - node - Node where to check for RA packet. Type: dictionary +| | ... | - rx_port - Interface where the packet is received. Type: string +| | ... | - src_mac - MAC address of source interface from which the link-local\ +| | ... | IPv6 address is constructed and checked. Type: string +| | ... | - interval - Configured retransmit interval. Optional. Type: integer +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Receive and verify router advertisement packet \ +| | ... | \| ${nodes['DUT1']} \| eth2 \| 08:00:27:cc:4f:54 \| +| | ... +| | [Arguments] | ${node} | ${rx_port} | ${src_mac} | ${interval}=${0} +| | ${rx_port_name}= | Get interface name | ${node} | ${rx_port} +| | ${args}= | Catenate +| | ... | --rx_if ${rx_port_name} +| | ... | --src_mac ${src_mac} +| | ... | --interval ${interval} +| | Run Traffic Script On Node | check_ra_packet.py | ${node} | ${args} + +| Send router solicitation and verify response +| | [Documentation] | Send RS packet, wait for response and then verify\ +| | ... | specific fields of received RA packet. +| | ... +| | ... | *Arguments:* +| | ... +| | ... | - tg_node - TG node to send RS packet from. Type: dictionary +| | ... | - dut_node - DUT node to send RS packet to. Type: dictionary +| | ... | - rx_port - Interface where the packet is sent from. Type: string +| | ... | - tx_port - Interface where the packet is sent to. Type: string +| | ... | - src_ip - Source IP address of RS packet. Optional. If not provided,\ +| | ... | link local address will be used. Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send router solicitation and verify response \ +| | ... | \| ${nodes['TG']} \| ${nodes['DUT1']} \| eth2 \ +| | ... | \| GigabitEthernet0/8/0 \| 10::10 \| +| | ... +| | [Arguments] | ${tg_node} | ${dut_node} | ${tx_port} | ${rx_port} +| | ... | ${src_ip}='' +| | ${src_mac}= | Get Interface Mac | ${tg_node} | ${tx_port} +| | ${dst_mac}= | Get Interface Mac | ${dut_node} | ${rx_port} +| | ${src_int_name}= | Get interface name | ${tg_node} | ${tx_port} +| | ${dst_int_name}= | Get interface name | ${dut_node} | ${rx_port} +| | ${args}= | catenate +| | ... | --rx_if ${dst_int_name} --tx_if ${src_int_name} +| | ... | --src_mac ${src_mac} | --dst_mac ${dst_mac} +| | ... | --src_ip ${src_ip} +| | Run Traffic Script On Node | send_rs_check_ra.py +| | ... | ${tg_node} | ${args} + +| Send ARP Request +| | [Documentation] | Send ARP Request and check if the ARP Response is received. +| | ... +| | ... | *Arguments:* +| | ... +| | ... | _NOTE:_ Arguments are based on topology: +| | ... | TG(if1)<->(if1)DUT +| | ... +| | ... | - tg_node - Node to execute scripts on (TG). Type: dictionary +| | ... | - tx_port - Interface from which the ARP packet is sent (TG-if1). +| | ... | Type: string +| | ... | - src_mac - Source MAC address of ARP packet (TG-if1). +| | ... | Type: string +| | ... | - tgt_mac - Target MAC address which is expected in the response +| | ... | (DUT-if1). Type: string +| | ... | - src_ip - Source IP address of ARP packet (TG-if1). +| | ... | Type: string +| | ... | - tgt_ip - Target IP address of ARP packet (DUT-if1). +| | ... | Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send ARP Request \| ${nodes['TG']} \| eth3 \ +| | ... | \| 08:00:27:cc:4f:54 \| 08:00:27:c9:6a:d5 \ +| | ... | \| 10.0.0.100 \| 192.168.1.5 \| +| | ... +| | [Arguments] | ${tg_node} | ${tx_port} +| | ... | ${src_mac} | ${tgt_mac} +| | ... | ${src_ip} | ${tgt_ip} +| | ${args}= | Catenate | --tx_if | ${tx_port} +| | ... | --src_mac | ${src_mac} | --dst_mac | ${tgt_mac} +| | ... | --src_ip | ${src_ip} | --dst_ip | ${tgt_ip} +| | Run Traffic Script On Node | arp_request.py | ${tg_node} | ${args} + +| ARP request should fail +| | [Documentation] | Send ARP Request and +| | ... | the ARP Response should not be received. +| | ... +| | ... | *Arguments:* +| | ... +| | ... | _NOTE:_ Arguments are based on topology: +| | ... | TG(if1)<->(if1)DUT +| | ... +| | ... | - tg_node - Node to execute scripts on (TG). Type: dictionary +| | ... | - tx_port - Interface from which the ARP packet is sent (TG-if1). +| | ... | Type: string +| | ... | - src_mac - Source MAC address of ARP packet (TG-if1). +| | ... | Type: string +| | ... | - tgt_mac - Target MAC address which is expected in the response +| | ... | (DUT-if1). Type: string +| | ... | - src_ip - Source IP address of ARP packet (TG-if1). +| | ... | Type: string +| | ... | - tgt_ip - Target IP address of ARP packet (DUT-if1). +| | ... | Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| ARP request should fail \| ${nodes['TG']} \| eth3 \ +| | ... | \| 08:00:27:cc:4f:54 \| 08:00:27:c9:6a:d5 \ +| | ... | \| 10.0.0.100 \| 192.168.1.5 \| +| | ... +| | [Arguments] | ${tg_node} | ${tx_port} +| | ... | ${src_mac} | ${tgt_mac} +| | ... | ${src_ip} | ${tgt_ip} +| | ${args}= | Catenate | --tx_if | ${tx_port} +| | ... | --src_mac | ${src_mac} | --dst_mac | ${tgt_mac} +| | ... | --src_ip | ${src_ip} | --dst_ip | ${tgt_ip} +| | Run Keyword And Expect Error | ARP reply timeout +| | ... | Run Traffic Script On Node | arp_request.py | ${tg_node} | ${args} + +| Send packets and verify multipath routing +| | [Documentation] | Send 100 IP ICMP packets traffic and check if it is\ +| | ... | divided into two paths. +| | ... +| | ... | *Arguments:* +| | ... +| | ... | _NOTE:_ Arguments are based on topology: +| | ... | TG(if1)->(if1)DUT(if2)->TG(if2) +| | ... +| | ... | - tg_node - Node to execute scripts on (TG). Type: dictionary +| | ... | - src_port - Interface of TG-if1. Type: string +| | ... | - dst_port - Interface of TG-if2. Type: string +| | ... | - src_ip - IP of source interface (TG-if1). Type: string +| | ... | - dst_ip - IP of destination interface (TG-if2). Type: string +| | ... | - tx_src_mac - MAC address of TG-if1. Type: string +| | ... | - tx_dst_mac - MAC address of DUT-if1. Type: string +| | ... | - rx_src_mac - MAC address of DUT-if2. Type: string +| | ... | - rx_dst_mac_1 - MAC address of interface for path 1. Type: string +| | ... | - rx_dst_mac_2 - MAC address of interface for path 2. Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send Packet And Check Multipath Routing \| ${nodes['TG']} \ +| | ... | \| eth2 \| eth3 \| 16.0.0.1 \| 32.0.0.1 \ +| | ... | \| 08:00:27:cc:4f:54 \| 08:00:27:c9:6a:d5 \| 08:00:27:54:59:f9 \ +| | ... | \| 02:00:00:00:00:02 \| 02:00:00:00:00:03 \| +| | ... +| | [Arguments] | ${tg_node} | ${src_port} | ${dst_port} | ${src_ip} | ${dst_ip} +| | ... | ${tx_src_mac} | ${tx_dst_mac} | ${rx_src_mac} +| | ... | ${rx_dst_mac_1} | ${rx_dst_mac_2} +| | ${src_port_name}= | Get interface name | ${tg_node} | ${src_port} +| | ${dst_port_name}= | Get interface name | ${tg_node} | ${dst_port} +| | ${args}= | Catenate | --tx_if | ${src_port_name} +| | ... | --rx_if | ${dst_port_name} | --src_ip | ${src_ip} +| | ... | --dst_ip | ${dst_ip} | --tg_if1_mac | ${tx_src_mac} +| | ... | --dut_if1_mac | ${tx_dst_mac} | --dut_if2_mac | ${rx_src_mac} +| | ... | --path_1_mac | ${rx_dst_mac_1} | --path_2_mac | ${rx_dst_mac_2} +| | Run Traffic Script On Node | send_icmp_check_multipath.py | ${tg_node} +| | ... | ${args} diff --git a/resources/libraries/robot/snat.robot b/resources/libraries/robot/snat.robot deleted file mode 100644 index 610a9150ee..0000000000 --- a/resources/libraries/robot/snat.robot +++ /dev/null @@ -1,150 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.SNATUtil -| Library | resources.libraries.python.NAT.NATUtil -| Documentation | Keywords for SNAT feature in VPP. - -*** Keywords *** -| Configure inside and outside interfaces -| | [Documentation] | Configure inside and outside interfaces for SNAT. -| | ... -| | ... | *Arguments:* -| | ... | - node - DUT node to set SNAT interfaces on. Type: dictionary -| | ... | - int_in - Inside interface. Type: string -| | ... | - int_out - Outside interface. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Configure inside and outside interfaces \| ${nodes['DUT1']} \ -| | ... | \| FortyGigabitEtherneta/0/0 \| FortyGigabitEtherneta/0/1 \| -| | ... -| | [Arguments] | ${node} | ${int_in} | ${int_out} -| | ... -| | ${int_in_name}= | Set variable | ${node['interfaces']['${int_in}']['name']} -| | ${int_out_name}= | Set variable | ${node['interfaces']['${int_out}']['name']} -| | Set SNAT Interfaces | ${node} | ${int_in_name} | ${int_out_name} - -| Configure deterministic mode for SNAT -| | [Documentation] | Set deterministic behaviour of SNAT. -| | ... -| | ... | *Arguments:* -| | ... | - node - DUT node to set deterministic mode for SNAT on. -| | ... | Type: dictionary -| | ... | - ip_in - Inside IP. Type: string -| | ... | - subnet_in - Inside IP subnet. Type: string -| | ... | - ip_out - Outside IP. Type: string -| | ... | - subnet_out - Outside IP subnet. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Configure deterministic mode for SNAT \| ${nodes['DUT1']} \ -| | ... | \| 100.0.0.0 \| 12 \| 12.1.1.0 \| 24 \| -| | ... -| | [Arguments] | ${node} | ${ip_in} | ${subnet_in} | ${ip_out} | ${subnet_out} -| | ... -| | Set SNAT deterministic | ${node} | ${ip_in} | ${subnet_in} | ${ip_out} -| | ... | ${subnet_out} - -| Configure workers for SNAT -| | [Documentation] | Configure workers for SNAT. -| | ... -| | ... | *Arguments:* -| | ... | - node - DUT node to set SNAT workers on. Type: dictionary -| | ... | - lcores - list of cores, format: range e.g. 1-5 or list of ranges \ -| | ... | e.g.: 1-5,18-22. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Configure workers for SNAT \| ${nodes['DUT1']} \| 12-23,36-47 \| -| | ... -| | [Arguments] | ${node} | ${lcores} -| | ... -| | Set SNAT workers | ${node} | ${lcores} - -| Show SNAT verbose -| | [Documentation] | Get the SNAT settings on the node. -| | ... -| | ... | *Arguments:* -| | ... | - node - DUT node to show SNAT. Type: dictionary -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Show SNAT verbose \| ${nodes['DUT1']} \| -| | ... -| | [Arguments] | ${node} -| | ... -| | Show SNAT | ${node} - -| Get SNAT deterministic forward -| | [Documentation] | Show forward IP address and port(s). -| | ... -| | ... | *Arguments:* -| | ... | - node - DUT node to get SNAT deterministic forward on. -| | ... | Type: dictionary -| | ... | - ip - IP address. Type: string -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Get SNAT deterministic forward \| ${nodes['DUT1']} \| 10.0.0.2 \| -| | ... -| | [Arguments] | ${node} | ${ip} -| | ... -| | Show SNAT deterministic forward | ${node} | ${ip} - -| Get SNAT deterministic reverse -| | [Documentation] | Show reverse IP address. -| | ... -| | ... | *Arguments:* -| | ... | - node - DUT node to get SNAT deterministic reverse on. -| | ... | Type: dictionary -| | ... | - ip - IP address. Type: string -| | ... | - port - Port. Type: string or integer -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Get SNAT deterministic reverse \| ${nodes['DUT1']} \| 10.0.0.2 \ -| | ... | \| 1025 \| -| | ... -| | [Arguments] | ${node} | ${ip} | ${port} -| | ... -| | Show SNAT deterministic reverse | ${node} | ${ip} | ${port} - -| Get NAT interfaces -| | [Documentation] | Get list of interfaces configured with NAT from VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - node - DUT node to get SNAT interfaces on. Type: dictionary -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Get NAT interfaces \| ${nodes['DUT1']} \| -| | ... -| | [Arguments] | ${node} -| | ... -| | VPP get NAT interfaces | ${node} - -| Get NAT static mappings -| | [Documentation] | Get NAT static mappings from VPP node. -| | ... -| | ... | *Arguments:* -| | ... | - node - DUT node to get SNAT static mappings on. Type: dictionary -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Get NAT static mappings \| ${nodes['DUT1']} \| -| | ... -| | [Arguments] | ${node} -| | ... -| | VPP get NAT static mappings | ${node} diff --git a/resources/libraries/robot/tagging.robot b/resources/libraries/robot/tagging.robot deleted file mode 100644 index 431812b3ab..0000000000 --- a/resources/libraries/robot/tagging.robot +++ /dev/null @@ -1,219 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Documentation | Keywords for VLAN tests -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/l2_xconnect.robot -| Library | resources.libraries.python.L2Util -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.NodePath - -*** Keywords *** - -| Initialize VLAN sub-interfaces in 3-node circular topology -| | [Arguments] | ${DUT1} | ${INT1} | ${DUT2} | ${INT2} | ${SUB_ID} -| | ... | ${OUTER_VLAN_ID} | ${INNER_VLAN_ID} | ${TYPE_SUBIF} -| | [Documentation] | *Create two subinterfaces on DUTs.* -| | ... -| | ... | *Arguments:* -| | ... | - DUT1 - Node to add sub-interface. -| | ... | - INT1 - Interface name on which create sub-interface. -| | ... | - DUT2 - Node to add sub-interface. -| | ... | - INT2 - Interface name on which create sub-interface. -| | ... | - SUB_ID - ID of the sub-interface to be created. -| | ... | - OUTER_VLAN_ID - Outer VLAN ID. -| | ... | - INNER_VLAN_ID - Inner VLAN ID. -| | ... | - TYPE_SUBIF - Type of sub-interface. -| | ... -| | ... | _Set testcase variables with name and index of created interfaces:_ -| | ... | - subif_name_1 -| | ... | - subif_index_1 -| | ... | - subif_name_2 -| | ... | - subif_index_2 -| | ... -| | ${INT1_name}= | Get interface name | ${DUT1} | ${INT1} -| | ${subif_name_1} | ${subif_index_1}= | Create subinterface | ${DUT1} -| | ... | ${INT1_name} | ${SUB_ID} -| | ... | ${OUTER_VLAN_ID} | ${INNER_VLAN_ID} -| | ... | ${TYPE_SUBIF} -| | ${INT2_name}= | Get interface name | ${DUT2} | ${INT2} -| | ${subif_name_2} | ${subif_index_2}= | Create subinterface | ${DUT2} -| | ... | ${INT2_name} | ${SUB_ID} -| | ... | ${OUTER_VLAN_ID} | ${INNER_VLAN_ID} -| | ... | ${TYPE_SUBIF} -| | Set Interface State | ${DUT1} | ${subif_index_1} | up -| | Set Interface State | ${DUT2} | ${subif_index_2} | up -| | Set Test Variable | ${subif_name_1} -| | Set Test Variable | ${subif_index_1} -| | Set Test Variable | ${subif_name_2} -| | Set Test Variable | ${subif_index_2} - -| Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | [Arguments] | ${DUT1} | ${INT1} | ${DUT2} | ${INT2} | ${SUB_ID} -| | [Documentation] | *Create two dot1q subinterfaces on DUTs.* -| | ... -| | ... | *Arguments:* -| | ... | - DUT1 - Node to add sub-interface. -| | ... | - INT1 - Interface name on which create VLAN sub-interface. -| | ... | - DUT2 - Node to add sub-interface. -| | ... | - INT2 - Interface name on which create VLAN sub-interface. -| | ... | - SUB_ID - ID of the sub-interface to be created. -| | ... -| | ... | _Set testcase variables with name and index of created interfaces:_ -| | ... | - subif_name_1 -| | ... | - subif_index_1 -| | ... | - subif_name_2 -| | ... | - subif_index_2 -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Initialize VLAN dot1q sub-interfaces in 3-node circular topology \ -| | ... | \| ${nodes['DUT1']} \| ${dut1_if2} \| ${nodes['DUT2']} \ -| | ... | \| ${dut1_if2} \| 10 \| -| | ... -| | ${INT1_NAME}= | Get interface name | ${DUT1} | ${INT1} -| | ${INT2_NAME}= | Get interface name | ${DUT2} | ${INT2} -| | ${subif_name_1} | ${subif_index_1}= | Create Vlan Subinterface -| | | ... | ${DUT1} | ${INT1_NAME} | ${SUB_ID} -| | ${subif_name_2} | ${subif_index_2}= | Create Vlan Subinterface -| | | ... | ${DUT2} | ${INT2_NAME} | ${SUB_ID} -| | Set Interface State | ${DUT1} | ${subif_index_1} | up -| | Set Interface State | ${DUT2} | ${subif_index_2} | up -| | Set Test Variable | ${subif_name_1} -| | Set Test Variable | ${subif_index_1} -| | Set Test Variable | ${subif_name_2} -| | Set Test Variable | ${subif_index_2} - -| Configure L2 tag rewrite method on interfaces -| | [Arguments] | ${DUT1} | ${SUB_INT1} | ${DUT2} | ${SUB_INT2} -| | ... | ${TAG_REWRITE_METHOD} -| | [Documentation] | *Setup tag rewrite on sub-interfaces on DUTs.* -| | ... -| | ... | *Arguments:* -| | ... | - DUT1 - Node to rewrite tags. -| | ... | - SUB_INT1 - Interface on which rewrite tags. -| | ... | - DUT2 - Node to rewrite tags. -| | ... | - SUB_INT2 - Interface on which rewrite tags. -| | ... | - TAG_REWRITE_METHOD - Method of tag rewrite. -| | ... -| | L2 Vlan tag rewrite | ${DUT1} | ${SUB_INT1} | ${TAG_REWRITE_METHOD} -| | L2 Vlan tag rewrite | ${DUT2} | ${SUB_INT2} | ${TAG_REWRITE_METHOD} - -| Connect interfaces and VLAN sub-interfaces using L2XC -| | [Arguments] | ${DUT1} | ${INT1} | ${SUB_INT1} -| | ... | ${DUT2} | ${INT2} | ${SUB_INT2} -| | [Documentation] | *Add interface and subinterface to bidirectional -| | ... | L2-xconnect on DUTs.* -| | ... -| | ... | *Arguments:* -| | ... | - DUT1 - Node to add bidirectional cross-connect. -| | ... | - INT1 - Interface to add to the cross-connect. -| | ... | - SUB_INT1 - Sub-interface to add to the cross-connect. -| | ... | - DUT2 - Node to add bidirectional cross-connect. -| | ... | - INT2 - Interface to add to the cross-connect. -| | ... | - SUB_INT2 - Sub-interface to add to the cross-connect. -| | ... -| | Configure L2XC | ${DUT1} | ${INT1} | ${SUB_INT1} -| | Configure L2XC | ${DUT2} | ${INT2} | ${SUB_INT2} - -| Create vlan sub-interface -| | [Documentation] | Create VLAN sub-interface on DUT and set admin status up. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - Node to add VLAN sub-intreface. Type: dictionary -| | ... | - interface - Interface to create VLAN sub-interface. Type: string -| | ... | - vlan_id - VLAN ID. Type: integer -| | ... -| | ... | *Return:* -| | ... | - vlan_name - VLAN sub-interface name. Type: string -| | ... | - vlan_index - VLAN sub-interface SW index. Type: integer -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Create vlan sub-interface \| ${nodes['DUT1']} \| port3 \| 100 \| -| | ... -| | [Arguments] | ${dut_node} | ${interface} | ${vlan_id} -| | [Return] | ${vlan_name} | ${vlan_index} -| | ${interface_name}= | Get interface name | ${dut_node} | ${interface} -| | ${vlan_name} | ${vlan_index}= | Create Vlan Subinterface -| | ... | ${dut_node} | ${interface_name} | ${vlan_id} -| | Set Interface State | ${dut_node} | ${vlan_index} | up - -| Create tagged sub-interface -| | [Documentation] | Create tagged sub-interface on DUT. Type of tagged \ -| | ... | sub-intreface depends on type_subif value: -| | ... | - one_tag -> VLAN -| | ... | - two_tags -> QinQ VLAN -| | ... | - two_tags dot1ad - DOT1AD -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - Node to add VLAN sub-intreface. Type: dictionary -| | ... | - interface - Interface to create tagged sub-interface. Type: string -| | ... | - subif_id - Sub-interface ID. Type: integer -| | ... | - outer_vlan_id - VLAN (outer) ID (Optional). Type: integer -| | ... | - inner_vlan_id - VLAN inner ID (Optional). Type: integer -| | ... | - type_subif - Sub-interface type (Optional). Type: string -| | ... -| | ... | *Return:* -| | ... | - subif_name - Sub-interface name. Type: string -| | ... | - subif_index - Sub-interface SW index. Type: integer -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Create tagged sub-interface \| ${nodes['DUT1']} \| port1 \| 10 \ -| | ... | \| outer_vlan_id=100 \| inner_vlan_id=200 \ -| | ... | \| type_subif=two_tags dot1ad \| -| | ... -| | [Arguments] | ${dut_node} | ${interface} | ${subif_id} -| | ... | ${outer_vlan_id}=${None} | ${inner_vlan_id}=${None} -| | ... | ${type_subif}=${None} -| | [Return] | ${subif_name} | ${subif_index} -| | ${interface_name}= | Get interface name | ${dut_node} | ${interface} -| | ${subif_name} | ${subif_index}= | Create Subinterface -| | ... | ${dut_node} | ${interface_name} | ${subif_id} -| | ... | outer_vlan_id=${outer_vlan_id} | inner_vlan_id=${inner_vlan_id} -| | ... | type_subif=${type_subif} - -| Configure L2 tag rewrite method on interface -| | [Documentation] | Set L2 tag rewrite on (sub-)interface on DUT -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - Node to set L2 tag rewrite method. Type: dictionary -| | ... | - interface - (Sub-)interface name or SW index to set L2 tag rewrite -| | ... | method. Type: string or integer -| | ... | - tag_rewrite_method - Tag rewrite method. Type: string -| | ... | - push_dot1q - True to push tags as Dot1q, False to push tags as -| | ... | Dot1ad (Optional). Type: boolean -| | ... | - tag1_id - VLAN tag1 ID (Optional). Type: integer -| | ... | - tag2_id - VLAN tag2 ID (Optional). Type: integer -| | ... -| | ... | *Return:* -| | ... -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Configure L2 tag rewrite method on interface \| ${nodes['DUT1']} \ -| | ... | \| 9 \| pop-1 \| -| | ... | \| Configure L2 tag rewrite method on interface \| ${nodes['DUT2']} \ -| | ... | \| 10 \| translate-1-2 \| push_dot1q=${False} \| tag1_id=10 \ -| | ... | \| tag1_id=20 \| -| | ... -| | [Arguments] | ${dut_node} | ${interface} | ${tag_rewrite_method} -| | ... | ${push_dot1q}=${True} | ${tag1_id}=${None} | ${tag2_id}=${None} -| | ${result}= | Evaluate | isinstance($interface, int) -| | ${interface_name}= | Run Keyword If | ${result} | Set Variable | ${interface} -| | ... | ELSE | Get interface name | ${dut_node} | ${interface} -| | L2 Vlan Tag Rewrite | ${dut_node} | ${interface_name} | ${tag_rewrite_method} -| | ... | push_dot1q=${push_dot1q} | tag1_id=${tag1_id} | tag2_id=${tag2_id} diff --git a/resources/libraries/robot/telemetry/ipfix.robot b/resources/libraries/robot/telemetry/ipfix.robot index 5248964f29..b7d8ac74f9 100644 --- a/resources/libraries/robot/telemetry/ipfix.robot +++ b/resources/libraries/robot/telemetry/ipfix.robot @@ -16,7 +16,7 @@ *** Settings *** | Library | resources.libraries.python.TrafficScriptExecutor | Library | resources.libraries.python.InterfaceUtil -| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/shared/default.robot | Documentation | Traffic keywords *** Keywords *** diff --git a/resources/libraries/robot/testing_path.robot b/resources/libraries/robot/testing_path.robot deleted file mode 100644 index b7543e1c4d..0000000000 --- a/resources/libraries/robot/testing_path.robot +++ /dev/null @@ -1,353 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.NodePath - -*** Keywords *** -| Configure path in 2-node circular topology -| | [Documentation] | Compute path for testing on two given nodes in circular -| | ... | topology and set corresponding test case variables. -| | ... -| | ... | *Arguments:* -| | ... | - ${tg_node} - TG node. Type: dictionary -| | ... | - ${dut_node} - DUT node. Type: dictionary -| | ... | - ${tg2_node} - Node where the path ends. Must be the same as TG node -| | ... | parameter in circular topology. Type: dictionary -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | _NOTE:_ This KW sets following test case variables: -| | ... | - ${tg_node} - TG node. -| | ... | - ${tg_to_dut_if1} - 1st TG interface towards DUT. -| | ... | - ${tg_to_dut_if2} - 2nd TG interface towards DUT. -| | ... | - ${dut_node} - DUT node. -| | ... | - ${dut_to_tg_if1} - 1st DUT interface towards TG. -| | ... | - ${dut_to_tg_if2} - 2nd DUT interface towards TG. -| | ... | - ${tg_to_dut_if1_mac} -| | ... | - ${tg_to_dut_if2_mac} -| | ... | - ${dut_to_tg_if1_mac} -| | ... | - ${dut_to_tg_if2_mac} -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Given Configure path in 2-node circular topology \| ${nodes['TG']} \ -| | ... | \| ${nodes['DUT1']} \| ${nodes['TG']} \| -| | ... -| | [Arguments] | ${tg_node} | ${dut_node} | ${tg2_node} -| | Should Be Equal | ${tg_node} | ${tg2_node} -| | Append Nodes | ${tg_node} | ${dut_node} | ${tg_node} -| | Compute Path | always_same_link=${FALSE} -| | ${tg_to_dut_if1} | ${tmp}= | First Interface -| | ${tg_to_dut_if2} | ${tmp}= | Last Interface -| | ${dut_to_tg_if1} | ${tmp}= | First Ingress Interface -| | ${dut_to_tg_if2} | ${tmp}= | Last Egress Interface -| | ${tg_to_dut_if1_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut_if1} -| | ${tg_to_dut_if2_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut_if2} -| | ${dut_to_tg_if1_mac}= | Get interface mac | ${dut_node} | ${dut_to_tg_if1} -| | ${dut_to_tg_if2_mac}= | Get interface mac | ${dut_node} | ${dut_to_tg_if2} -| | Set Test Variable | ${tg_to_dut_if1} -| | Set Test Variable | ${tg_to_dut_if2} -| | Set Test Variable | ${dut_to_tg_if1} -| | Set Test Variable | ${dut_to_tg_if2} -| | Set Test Variable | ${tg_to_dut_if1_mac} -| | Set Test Variable | ${tg_to_dut_if2_mac} -| | Set Test Variable | ${dut_to_tg_if1_mac} -| | Set Test Variable | ${dut_to_tg_if2_mac} -| | Set Test Variable | ${tg_node} -| | Set Test Variable | ${dut_node} - -| Set interfaces in 2-node circular topology up -| | [Documentation] | Set UP state on interfaces in 2-node path on nodes and -| | ... | wait for all interfaces are ready. Requires more than -| | ... | one link between nodes. -| | ... -| | ... | *Arguments:* -| | ... | - No arguments. -| | ... -| | ... | *Return:* -| | ... | - No value returned. -| | ... -| | ... | _NOTE:_ This KW uses test variables sets in -| | ... | "Configure path in 2-node circular topology" KW. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Given Configure path in 2-node circular topology \| ${nodes['TG']} \ -| | ... | \| ${nodes['DUT1']} \| ${nodes['TG']} \| -| | ... | \| And Set interfaces in 2-node circular topology up \| -| | ... -| | Set Interface State | ${tg_node} | ${tg_to_dut_if1} | up -| | Set Interface State | ${tg_node} | ${tg_to_dut_if2} | up -| | Set Interface State | ${dut_node} | ${dut_to_tg_if1} | up -| | Set Interface State | ${dut_node} | ${dut_to_tg_if2} | up -| | Vpp Node Interfaces Ready Wait | ${dut_node} - -| Configure path in 3-node circular topology -| | [Documentation] | Compute path for testing on three given nodes in circular -| | ... | topology and set corresponding test case variables. -| | ... -| | ... | *Arguments:* -| | ... | - ${tg_node} - TG node. Type: dictionary -| | ... | - ${dut1_node} - DUT1 node. Type: dictionary -| | ... | - ${dut2_node} - DUT2 node. Type: dictionary -| | ... | - ${tg2_node} - Node where the path ends. Must be the same as TG node -| | ... | parameter in circular topology. Type: dictionary -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... | -| | ... | _NOTE:_ This KW sets following test case variables: -| | ... | - ${tg_node} - TG node. -| | ... | - ${tg_to_dut1} - TG interface towards DUT1. -| | ... | - ${tg_to_dut2} - TG interface towards DUT2. -| | ... | - ${dut1_node} - DUT1 node. -| | ... | - ${dut1_to_tg} - DUT1 interface towards TG. -| | ... | - ${dut1_to_dut2} - DUT1 interface towards DUT2. -| | ... | - ${dut2_node} - DUT2 node. -| | ... | - ${dut2_to_tg} - DUT2 interface towards TG. -| | ... | - ${dut2_to_dut1} - DUT2 interface towards DUT1. -| | ... | - ${tg_to_dut1_mac} -| | ... | - ${tg_to_dut2_mac} -| | ... | - ${dut1_to_tg_mac} -| | ... | - ${dut1_to_dut2_mac} -| | ... | - ${dut2_to_tg_mac} -| | ... | - ${dut2_to_dut1_mac} -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Given Configure path in 3-node circular topology \| ${nodes['TG']} \ -| | ... | \| ${nodes['DUT1']} \| ${nodes['DUT2']} \| ${nodes['TG']} \| -| | ... -| | [Arguments] | ${tg_node} | ${dut1_node} | ${dut2_node} | ${tg2_node} -| | Should Be Equal | ${tg_node} | ${tg2_node} -| | Append Nodes | ${tg_node} | ${dut1_node} | ${dut2_node} | ${tg_node} -| | Compute Path -| | ${tg_to_dut1} | ${tmp}= | Next Interface -| | ${dut1_to_tg} | ${tmp}= | Next Interface -| | ${dut1_to_dut2} | ${tmp}= | Next Interface -| | ${dut2_to_dut1} | ${tmp}= | Next Interface -| | ${dut2_to_tg} | ${tmp}= | Next Interface -| | ${tg_to_dut2} | ${tmp}= | Next Interface -| | ${tg_to_dut1_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut1} -| | ${tg_to_dut2_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut2} -| | ${dut1_to_tg_mac}= | Get interface mac | ${dut1_node} | ${dut1_to_tg} -| | ${dut1_to_dut2_mac}= | Get interface mac | ${dut1_node} | ${dut1_to_dut2} -| | ${dut2_to_tg_mac}= | Get interface mac | ${dut2_node} | ${dut2_to_tg} -| | ${dut2_to_dut1_mac}= | Get interface mac | ${dut2_node} | ${dut2_to_dut1} -| | Set Test Variable | ${tg_to_dut1} -| | Set Test Variable | ${dut1_to_tg} -| | Set Test Variable | ${tg_to_dut2} -| | Set Test Variable | ${dut2_to_tg} -| | Set Test Variable | ${dut1_to_dut2} -| | Set Test Variable | ${dut2_to_dut1} -| | Set Test Variable | ${tg_to_dut1_mac} -| | Set Test Variable | ${tg_to_dut2_mac} -| | Set Test Variable | ${dut1_to_tg_mac} -| | Set Test Variable | ${dut1_to_dut2_mac} -| | Set Test Variable | ${dut2_to_tg_mac} -| | Set Test Variable | ${dut2_to_dut1_mac} -| | Set Test Variable | ${tg_node} -| | Set Test Variable | ${dut1_node} -| | Set Test Variable | ${dut2_node} - -| Set interfaces in 3-node circular topology up -| | [Documentation] -| | ... | Set UP state on interfaces in 3-node path on nodes and \ -| | ... | wait until all interfaces are ready. -| | ... -| | ... | *Arguments:* -| | ... | - No arguments. -| | ... -| | ... | *Return:* -| | ... | - No value returned. -| | ... -| | ... | _NOTE:_ This KW uses test variables sets in -| | ... | "Configure path in 3-node circular topology" KW. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Given Configure path in 3-node circular topology \| ${nodes['TG']} \ -| | ... | \| ${nodes['DUT1']} \| ${nodes['TG']} \| -| | ... | \| And Set interfaces in 3-node circular topology up \| -| | ... -| | Set Interface State | ${tg_node} | ${tg_to_dut1} | up -| | Set Interface State | ${tg_node} | ${tg_to_dut2} | up -| | Set Interface State | ${dut1_node} | ${dut1_to_tg} | up -| | Set Interface State | ${dut1_node} | ${dut1_to_dut2} | up -| | Set Interface State | ${dut2_node} | ${dut2_to_tg} | up -| | Set Interface State | ${dut2_node} | ${dut2_to_dut1} | up -| | Vpp Node Interfaces Ready Wait | ${dut1_node} -| | Vpp Node Interfaces Ready Wait | ${dut2_node} - -| Configure path in double-link 3-node circular topology -| | [Documentation] -| | ... | Compute path for testing on three given nodes in circular \ -| | ... | topology with double link and set corresponding \ -| | ... | test case variables. -| | ... -| | ... | *Arguments:* -| | ... | - ${tg_node} - TG node. Type: dictionary -| | ... | - ${dut1_node} - DUT1 node. Type: dictionary -| | ... | - ${dut2_node} - DUT2 node. Type: dictionary -| | ... | - ${tg2_node} - Node where the path ends. Must be the same as TG node -| | ... | parameter in circular topology. Type: dictionary -| | ... -| | ... | *Return:* -| | ... | - No value returned. -| | ... | -| | ... | _NOTE:_ This KW sets following test case variables: -| | ... | - ${tg_node} - TG node. -| | ... | - ${tg_to_dut1_if1} - TG interface towards DUT1 interface 1. -| | ... | - ${tg_to_dut1_if2} - TG interface towards DUT1 interface 2. -| | ... | - ${tg_to_dut1_mac_if1} - TG towards DUT1 MAC address interface 1. -| | ... | - ${tg_to_dut1_mac_if2} - TG towards DUT1 MAC address interface 2. -| | ... | - ${tg_to_dut2_if1} - TG interface towards DUT2 interface 1. -| | ... | - ${tg_to_dut2_if2} - TG interface towards DUT2 interface 2. -| | ... | - ${tg_to_dut2_mac_if1} - TG towards DUT2 MAC address interface 1. -| | ... | - ${tg_to_dut2_mac_if2} - TG towards DUT2 MAC address interface 2. -| | ... | - ${dut1_node} - DUT1 node. -| | ... | - ${dut1_to_tg_if1} - DUT1 interface towards TG interface 1. -| | ... | - ${dut1_to_tg_if2} - DUT1 interface towards TG interface 2. -| | ... | - ${dut1_to_tg_mac_if1} - DUT1 towards TG MAC address interface 1. -| | ... | - ${dut1_to_tg_mac_if2} - DUT1 towards TG MAC address interface 2. -| | ... | - ${dut1_to_dut2_if1} - DUT1 interface towards DUT2 interface 1. -| | ... | - ${dut1_to_dut2_if2} - DUT1 interface towards DUT2 interface 2. -| | ... | - ${dut1_to_dut2_mac_if1} - DUT1 towards DUT2 MAC address interface 1. -| | ... | - ${dut1_to_dut2_mac_if2} - DUT1 towards DUT2 MAC address interface 2. -| | ... | - ${dut2_node} - DUT2 node. -| | ... | - ${dut2_to_tg_if1} - DUT2 interface towards TG interface 1. -| | ... | - ${dut2_to_tg_if2} - DUT2 interface towards TG interface 2. -| | ... | - ${dut2_to_tg_mac_if1} - DUT2 towards TG MAC address interface 1. -| | ... | - ${dut2_to_tg_mac_if2} - DUT2 towards TG MAC address interface 2. -| | ... | - ${dut2_to_dut1_if1} - DUT2 interface towards DUT1 interface 1. -| | ... | - ${dut2_to_dut1_if2} - DUT2 interface towards DUT1 interface 2. -| | ... | - ${dut2_to_dut1_mac_if1} - DUT2 towards DUT1 MAC address interface 1. -| | ... | - ${dut2_to_dut1_mac_if2} - DUT2 towards DUT1 MAC address interface 2. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Configure path in double-link 3-node circular topology \| ${nodes['TG']} \ -| | ... | \| ${nodes['DUT1']} \| ${nodes['DUT2']} \| ${nodes['TG']} \| -| | ... -| | [Arguments] | ${tg_node} | ${dut1_node} | ${dut2_node} | ${tg2_node} -| | Should Be Equal | ${tg_node} | ${tg2_node} -| | # Compute path TG - DUT1 with two links in between -| | Append Nodes | ${tg_node} | ${dut1_node} | ${tg_node} -| | Compute Path | always_same_link=${FALSE} -| | ${tg_to_dut1_if1} | ${tmp}= | First Interface -| | ${tg_to_dut1_if2} | ${tmp}= | Last Interface -| | ${dut1_to_tg_if1} | ${tmp}= | First Ingress Interface -| | ${dut1_to_tg_if2} | ${tmp}= | Last Egress Interface -| | # Compute path TG - DUT2 with two links in between -| | Clear Path -| | Append Nodes | ${tg_node} | ${dut2_node} | ${tg_node} -| | Compute Path | always_same_link=${FALSE} -| | ${tg_to_dut2_if1} | ${tmp}= | First Interface -| | ${tg_to_dut2_if2} | ${tmp}= | Last Interface -| | ${dut2_to_tg_if1} | ${tmp}= | First Ingress Interface -| | ${dut2_to_tg_if2} | ${tmp}= | Last Egress Interface -| | # Compute path DUT1 - DUT2 with one link in between -| | Clear Path -| | Append Nodes | ${dut1_node} | ${dut2_node} | ${dut1_node} -| | Compute Path | always_same_link=${FALSE} -| | ${dut1_to_dut2_if1} | ${tmp}= | First Interface -| | ${dut1_to_dut2_if2} | ${tmp}= | Last Interface -| | ${dut2_to_dut1_if1} | ${tmp}= | First Ingress Interface -| | ${dut2_to_dut1_if2} | ${tmp}= | Last Egress Interface -| | # Set test variables -| | Set Test Variable | ${tg_to_dut1_if1} -| | Set Test Variable | ${tg_to_dut1_if2} -| | Set Test Variable | ${tg_to_dut2_if1} -| | Set Test Variable | ${tg_to_dut2_if2} -| | Set Test Variable | ${dut1_to_tg_if1} -| | Set Test Variable | ${dut1_to_tg_if2} -| | Set Test Variable | ${dut2_to_tg_if1} -| | Set Test Variable | ${dut2_to_tg_if2} -| | Set Test Variable | ${dut1_to_dut2_if1} -| | Set Test Variable | ${dut1_to_dut2_if2} -| | Set Test Variable | ${dut2_to_dut1_if1} -| | Set Test Variable | ${dut2_to_dut1_if2} -| | Set Test Variable | ${tg_node} -| | Set Test Variable | ${dut1_node} -| | Set Test Variable | ${dut2_node} -| | # Set Mac Addresses -| | ${tg_to_dut1_if1_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut1_if1} -| | ${tg_to_dut1_if2_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut1_if2} -| | ${tg_to_dut2_if1_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut2_if1} -| | ${tg_to_dut2_if2_mac}= | Get interface mac | ${tg_node} | ${tg_to_dut2_if2} -| | ${dut1_to_tg_if1_mac}= | Get interface mac | ${dut1_node} -| | ... | ${dut1_to_tg_if1} -| | ${dut1_to_tg_if2_mac}= | Get interface mac | ${dut1_node} -| | ... | ${dut1_to_tg_if2} -| | ${dut1_to_dut2_if1_mac}= | Get interface mac | ${dut1_node} -| | ... | ${dut1_to_dut2_if1} -| | ${dut1_to_dut2_if2_mac}= | Get interface mac | ${dut1_node} -| | ... | ${dut1_to_dut2_if2} -| | ${dut2_to_tg_if1_mac}= | Get interface mac | ${dut2_node} -| | ... | ${dut2_to_tg_if1} -| | ${dut2_to_tg_if2_mac}= | Get interface mac | ${dut2_node} -| | ... | ${dut2_to_tg_if2} -| | ${dut2_to_dut1_if1_mac}= | Get interface mac | ${dut2_node} -| | ... | ${dut2_to_dut1_if1} -| | ${dut2_to_dut1_if2_mac}= | Get interface mac | ${dut2_node} -| | ... | ${dut2_to_dut1_if2} -| | Set Test Variable | ${tg_to_dut1_if1_mac} -| | Set Test Variable | ${tg_to_dut1_if2_mac} -| | Set Test Variable | ${tg_to_dut2_if1_mac} -| | Set Test Variable | ${tg_to_dut2_if2_mac} -| | Set Test Variable | ${dut1_to_tg_if1_mac} -| | Set Test Variable | ${dut1_to_tg_if2_mac} -| | Set Test Variable | ${dut1_to_dut2_if1_mac} -| | Set Test Variable | ${dut1_to_dut2_if2_mac} -| | Set Test Variable | ${dut2_to_tg_if1_mac} -| | Set Test Variable | ${dut2_to_tg_if2_mac} -| | Set Test Variable | ${dut2_to_dut1_if1_mac} -| | Set Test Variable | ${dut2_to_dut1_if2_mac} - -| Set interfaces in double-link 3-node circular topology up -| | [Documentation] -| | ... | Set UP state on interfaces in 3-node double link path \ -| | ... | wait until all interfaces are ready. -| | ... -| | ... | *Arguments:* -| | ... | - No arguments. -| | ... -| | ... | *Return:* -| | ... | - No value returned. -| | ... -| | ... | _NOTE:_ This KW uses test variables sets in -| | ... | "Configure path in double-link 3-node circular topology" KW. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Configure path in double-link 3-node circular topology \| ${nodes['TG']} \ -| | ... | \| ${nodes['DUT1']} \| ${nodes['TG']} \| -| | ... | \| Interfaces in Double-Link 3-node testing are UP \| -| | ... -| | Set Interface State | ${tg_node} | ${tg_to_dut1_if1} | up -| | Set Interface State | ${tg_node} | ${tg_to_dut1_if2} | up -| | Set Interface State | ${tg_node} | ${tg_to_dut2_if1} | up -| | Set Interface State | ${tg_node} | ${tg_to_dut2_if2} | up -| | Set Interface State | ${dut1_node} | ${dut1_to_tg_if1} | up -| | Set Interface State | ${dut1_node} | ${dut1_to_tg_if2} | up -| | Set Interface State | ${dut2_node} | ${dut2_to_tg_if1} | up -| | Set Interface State | ${dut2_node} | ${dut2_to_tg_if2} | up -| | Set Interface State | ${dut1_node} | ${dut1_to_dut2_if1} | up -| | Set Interface State | ${dut1_node} | ${dut1_to_dut2_if2} | up -| | Set Interface State | ${dut2_node} | ${dut2_to_dut1_if1} | up -| | Set Interface State | ${dut2_node} | ${dut2_to_dut1_if2} | up -| | Vpp Node Interfaces Ready Wait | ${dut1_node} -| | Vpp Node Interfaces Ready Wait | ${dut2_node} \ No newline at end of file diff --git a/resources/libraries/robot/tldk/tldk_utils.robot b/resources/libraries/robot/tldk/tldk_utils.robot new file mode 100644 index 0000000000..75e982252c --- /dev/null +++ b/resources/libraries/robot/tldk/tldk_utils.robot @@ -0,0 +1,80 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.NodePath +| Documentation | *Utilities for the path computing, pcap reading* +| ... +| ... | Utilities for the path computing, pcap file reading and also the port +| ... | selection. + +*** Keywords *** +| Path for 2-node testing is set +| | [Documentation] | Compute the path for the 2 node testing. +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - TG node. Type: dictionary +| | ... | - dut_node - DUT node. Type: dictionary +| | ... +| | ... | *Return:* +| | ... | - No value returned. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Path for 2-node testing is set \| ${nodes['TG']} \ +| | ... | \| ${nodes['DUT1'] \| +| | ... +| | [Arguments] | ${tg_node} | ${dut_node} +| | Append Nodes | ${tg_node} | ${dut_node} +| | Compute Path + +| Pick out the port used to execute test +| | [Documentation] | Pick out the port used to execute the test. +| | ... +| | ... | *Arguments:* +| | ... | - No arguments. +| | ... +| | ... | *Return:* +| | ... | - No value returned. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Pick out the port used to execute test \| +| | ... +| | ${tg_port} | ${tg_node}= | First Interface +| | ${dut_port} | ${dut_node}= | Last Interface +| | set suite variable | ${tg_node} +| | set suite variable | ${dut_node} +| | set suite variable | ${tg_port} +| | set suite variable | ${dut_port} + +| Get the pcap data +| | [Documentation] | Get the pcap file detailed data. +| | ... +| | ... | *Arguments:* +| | ... | - file_prefix - file prefix. Type: dictionary +| | ... +| | ... | *Return:* +| | ... | - packet_num, dest_ip, is_ipv4 - a tuple of packet_num +| | ... | dest_ip, is_ipv4. Type: tuple(int, str, bool) +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Get the pcap data \| ${tc01_file_prefix} \| +| | ... +| | [Arguments] | ${file_prefix} +| | ${packet_num} | ${dest_ip} | ${is_ipv4}= | Get Pcap Info +| | ... | ${file_prefix} +| | set suite variable | ${packet_num} +| | set suite variable | ${dest_ip} +| | set suite variable | ${is_ipv4} diff --git a/resources/libraries/robot/traffic.robot b/resources/libraries/robot/traffic.robot deleted file mode 100644 index d39784666f..0000000000 --- a/resources/libraries/robot/traffic.robot +++ /dev/null @@ -1,459 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Traffic keywords""" - -*** Settings *** -| Library | resources.libraries.python.IPv6Util -| Library | resources.libraries.python.IPv6Setup -| Library | resources.libraries.python.TrafficScriptExecutor -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Routing -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.topology.Topology -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/counters.robot -| Documentation | Traffic keywords - -*** Keywords *** -| Send packet and verify headers -| | [Documentation] | Sends packet from IP (with source mac) to IP -| | ... | (with dest mac). There has to be 4 MAC addresses -| | ... | when using 2 node + -| | ... | xconnect (one for each eth). -| | ... -| | ... | *Arguments:* -| | ... -| | ... | _NOTE:_ Arguments are based on topology: -| | ... | TG(if1)->(if1)DUT(if2)->TG(if2) -| | ... -| | ... | - tg_node - Node to execute scripts on (TG). Type: dictionary -| | ... | - src_ip - IP of source interface (TG-if1). Type: string -| | ... | - dst_ip - IP of destination interface (TG-if2). Type: string -| | ... | - tx_src_port - Interface of TG-if1. Type: string -| | ... | - tx_src_mac - MAC address of TG-if1. Type: string -| | ... | - tx_dst_mac - MAC address of DUT-if1. Type: string -| | ... | - rx_port - Interface of TG-if1. Type: string -| | ... | - rx_src_mac - MAC address of DUT1-if2. Type: string -| | ... | - rx_dst_mac - MAC address of TG-if2. Type: string -| | ... | - encaps_tx - Expected encapsulation on TX side: Dot1q or Dot1ad -| | ... | (Optional). Type: string -| | ... | - vlan_tx - VLAN (inner) tag on TX side (Optional). Type: integer -| | ... | - vlan_outer_tx - .1AD VLAN (outer) tag on TX side (Optional). -| | ... | Type: integer -| | ... | - encaps_rx - Expected encapsulation on RX side: Dot1q or Dot1ad -| | ... | (Optional). Type: string -| | ... | - vlan_rx - VLAN (inner) tag on RX side (Optional). Type: integer -| | ... | - vlan_outer_rx - .1AD VLAN (outer) tag on RX side (Optional). -| | ... | Type: integer -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send packet and verify headers \| ${nodes['TG']} \| 10.0.0.1 \ -| | ... | \| 32.0.0.1 \| eth2 \| 08:00:27:ee:fd:b3 \| 08:00:27:a2:52:5b \ -| | ... | \| eth3 \| 08:00:27:4d:ca:7a \| 08:00:27:7d:fd:10 \| -| | ... -| | [Arguments] | ${tg_node} | ${src_ip} | ${dst_ip} | ${tx_src_port} | -| | ... | ${tx_src_mac} | ${tx_dst_mac} | ${rx_port} | ${rx_src_mac} -| | ... | ${rx_dst_mac} -| | ... | ${encaps_tx}=${EMPTY} | ${vlan_tx}=${EMPTY} | ${vlan_outer_tx}=${EMPTY} -| | ... | ${encaps_rx}=${EMPTY} | ${vlan_rx}=${EMPTY} | ${vlan_outer_rx}=${EMPTY} -| | ${tx_port_name}= | Get interface name | ${tg_node} | ${tx_src_port} -| | ${rx_port_name}= | Get interface name | ${tg_node} | ${rx_port} -| | ${args}= | Catenate | --tg_src_mac | ${tx_src_mac} | --tg_dst_mac | -| | ... | ${rx_dst_mac} | --dut_if1_mac | ${tx_dst_mac} | --dut_if2_mac | -| | ... | ${rx_src_mac} | --src_ip | ${src_ip} | --dst_ip | ${dst_ip} | -| | ... | --tx_if | ${tx_port_name} | --rx_if | ${rx_port_name} -| | ${args}= | Run Keyword If | '${encaps_tx}' == '${EMPTY}' -| | | ... | Set Variable | ${args} -| | ... | ELSE | Catenate -| | ... | ${args} | --encaps_tx ${encaps_tx} | --vlan_tx ${vlan_tx} -| | ${args}= | Run Keyword If | '${encaps_rx}' == '${EMPTY}' -| | | ... | Set Variable | ${args} -| | ... | ELSE | Catenate -| | ... | ${args} | --encaps_rx ${encaps_rx} | --vlan_rx ${vlan_rx} -| | ${args}= | Run Keyword If | '${vlan_outer_tx}' == '${EMPTY}' -| | | ... | Set Variable | ${args} -| | ... | ELSE | Catenate | ${args} | --vlan_outer_tx ${vlan_outer_tx} -| | ${args}= | Run Keyword If | '${vlan_outer_rx}' == '${EMPTY}' -| | | ... | Set Variable | ${args} -| | ... | ELSE | Catenate | ${args} | --vlan_outer_rx ${vlan_outer_rx} -| | Run Traffic Script On Node | send_icmp_check_headers.py | ${tg_node} | -| | ... | ${args} - -| Packet transmission from port to port should fail -| | [Documentation] | Sends packet from ip (with specified mac) to ip -| | ... | (with dest mac). Using keyword : Send packet And Check -| | ... | Headers and subsequently checks the return value -| | ... -| | ... | *Arguments:* -| | ... -| | ... | _NOTE:_ Arguments are based on topology: -| | ... | TG(if1)->(if1)DUT(if2)->TG(if2) -| | ... -| | ... | - tg_node - Node to execute scripts on (TG). Type: dictionary -| | ... | - src_ip - IP of source interface (TG-if1). Type: string -| | ... | - dst_ip - IP of destination interface (TG-if2). Type: string -| | ... | - tx_src_port - Interface of TG-if1. Type: string -| | ... | - tx_src_mac - MAC address of TG-if1. Type: string -| | ... | - tx_dst_mac - MAC address of DUT-if1. Type: string -| | ... | - rx_port - Interface of TG-if1. Type: string -| | ... | - rx_src_mac - MAC address of DUT1-if2. Type: string -| | ... | - rx_dst_mac - MAC address of TG-if2. Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Packet transmission from port to port should fail \| ${nodes['TG']} \ -| | ... | \| 10.0.0.1 \ \| 32.0.0.1 \| eth2 \| 08:00:27:ee:fd:b3 \ -| | ... | \| 08:00:27:a2:52:5b \| eth3 \| 08:00:27:4d:ca:7a \ -| | ... | \| 08:00:27:7d:fd:10 \| -| | [Arguments] | ${tg_node} | ${src_ip} | ${dst_ip} | ${tx_src_port} | -| | ... | ${tx_src_mac} | ${tx_dst_mac} | ${rx_port} | ${rx_src_mac} | -| | ... | ${rx_dst_mac} -| | ${tx_port_name}= | Get interface name | ${tg_node} | ${tx_src_port} -| | ${rx_port_name}= | Get interface name | ${tg_node} | ${rx_port} -| | ${args}= | Catenate | --tg_src_mac | ${tx_src_mac} | --tg_dst_mac | -| | ... | ${rx_dst_mac} | --dut_if1_mac | ${tx_dst_mac} | --dut_if2_mac | -| | ... | ${rx_src_mac} | --src_ip | ${src_ip} | --dst_ip | ${dst_ip} | -| | ... | --tx_if | ${tx_port_name} | --rx_if | ${rx_port_name} -| | Run Keyword And Expect Error | ICMP echo Rx timeout | -| | ... | Run Traffic Script On Node | send_icmp_check_headers.py -| | ... | ${tg_node} | ${args} - -| Send packet and verify ARP request -| | [Documentation] | Send IP packet from tx_port and check if ARP Request\ -| | ... | packet is received on rx_port. -| | ... -| | ... | *Arguments:* -| | ... -| | ... | _NOTE:_ Arguments are based on topology: -| | ... | TG(if1)->(if1)DUT(if2)->TG(if2) -| | ... -| | ... | - tg_node - Node to execute scripts on (TG). Type: dictionary -| | ... | - tx_src_ip - Source IP address of transferred packet (TG-if1). -| | ... | Type: string -| | ... | - tx_dst_ip - Destination IP address of transferred packet (TG-if2). -| | ... | Type: string -| | ... | - tx_port - Interface from which the IP packet is sent (TG-if1). -| | ... | Type: string -| | ... | - tx_dst_mac - Destination MAC address of IP packet (DUT-if1). -| | ... | Type: string -| | ... | - rx_port - Interface where the IP packet is received (TG-if2). -| | ... | Type: string -| | ... | - rx_src_mac - Source MAC address of ARP packet (DUT-if2). -| | ... | Type: string -| | ... | - rx_arp_src_ip - Source IP address of ARP packet (DUT-if2). -| | ... | Type: string -| | ... | - rx_arp_dst_ip - Destination IP address of ARP packet. Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send Packet And Check ARP Packet \| ${nodes['TG']} \| 16.0.0.1 \ -| | ... | \| 32.0.0.1 \| eth2 \| 08:00:27:cc:4f:54 \ -| | ... | \| eth4 \| 08:00:27:5b:49:dd \| 192.168.2.1 \| 192.168.2.2 \| -| | ... -| | [Arguments] | ${tg_node} | ${tx_src_ip} | ${tx_dst_ip} | ${tx_port} -| | ... | ${tx_dst_mac} | ${rx_port} | ${rx_src_mac} | ${rx_arp_src_ip} -| | ... | ${rx_arp_dst_ip} -| | ${tx_port_name}= | Get interface name | ${tg_node} | ${tx_port} -| | ${rx_port_name}= | Get interface name | ${tg_node} | ${rx_port} -| | ${args}= | Catenate -| | ... | --tx_dst_mac | ${tx_dst_mac} | --rx_src_mac | ${rx_src_mac} -| | ... | --tx_src_ip | ${tx_src_ip} | --tx_dst_ip | ${tx_dst_ip} -| | ... | --tx_if | ${tx_port_name} | --rx_if | ${rx_port_name} -| | ... | --rx_arp_src_ip ${rx_arp_src_ip} | --rx_arp_dst_ip ${rx_arp_dst_ip} -| | Run Traffic Script On Node | send_icmp_check_arp.py | ${tg_node} | ${args} - -| Send TCP or UDP packet and verify received packet -| | [Documentation] | Sends TCP or UDP packet with specified source -| | ... | and destination port. -| | ... -| | ... | *Arguments:* -| | ... -| | ... | _NOTE:_ Arguments are based on topology: -| | ... | TG(if1)->(if1)DUT(if2)->TG(if2) -| | ... -| | ... | - tg_node - Node to execute scripts on (TG). Type: dictionary -| | ... | - src_ip - IP of source interface (TG-if1). Type: integer -| | ... | - dst_ip - IP of destination interface (TG-if2). Type: integer -| | ... | - tx_port - Source interface (TG-if1). Type: string -| | ... | - tx_mac - MAC address of source interface (TG-if1). Type: string -| | ... | - rx_port - Destionation interface (TG-if1). Type: string -| | ... | - rx_mac - MAC address of destination interface (TG-if1). Type: string -| | ... | - protocol - Type of protocol. Type: string -| | ... | - source_port - Source TCP/UDP port. Type: string or integer -| | ... | - destination_port - Destination TCP/UDP port. Type: string or integer -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send TCP or UDP packet and verify received packet \| ${nodes['TG']} \ -| | ... | \| 16.0.0.1 \| 32.0.0.1 \| eth2 \| 08:00:27:cc:4f:54 \ -| | ... | \| eth4 \| 08:00:27:c9:6a:d5 \| TCP \| 20 \| 80 \| -| | ... -| | [Arguments] | ${tg_node} | ${src_ip} | ${dst_ip} | ${tx_port} | -| | ... | ${tx_mac} | ${rx_port} | ${rx_mac} | ${protocol} | ${source_port} -| | ... | ${destination_port} -| | ${tx_port_name}= | Get interface name | ${tg_node} | ${tx_port} -| | ${rx_port_name}= | Get interface name | ${tg_node} | ${rx_port} -| | ${args}= | Catenate | --tx_mac | ${tx_mac} -| | ... | --rx_mac | ${rx_mac} -| | ... | --src_ip | ${src_ip} -| | ... | --dst_ip | ${dst_ip} -| | ... | --tx_if | ${tx_port_name} -| | ... | --rx_if | ${rx_port_name} -| | ... | --protocol | ${protocol} -| | ... | --source_port | ${source_port} -| | ... | --destination_port | ${destination_port} -| | Run Traffic Script On Node | send_tcp_udp.py -| | ... | ${tg_node} | ${args} - -| TCP or UDP packet transmission should fail -| | [Documentation] | Sends TCP or UDP packet with specified source -| | ... | and destination port. -| | ... -| | ... | *Arguments:* -| | ... -| | ... | _NOTE:_ Arguments are based on topology: -| | ... | TG(if1)->(if1)DUT(if2)->TG(if2) -| | ... -| | ... | - tg_node - Node to execute scripts on (TG). Type: dictionary -| | ... | - src_ip - IP of source interface (TG-if1). Type: integer -| | ... | - dst_ip - IP of destination interface (TG-if2). Type: integer -| | ... | - tx_port - Source interface (TG-if1). Type: string -| | ... | - tx_mac - MAC address of source interface (TG-if1). Type: string -| | ... | - rx_port - Destionation interface (TG-if1). Type: string -| | ... | - rx_mac - MAC address of destination interface (TG-if1). Type: string -| | ... | - protocol - Type of protocol. Type: string -| | ... | - source_port - Source TCP/UDP port. Type: string or integer -| | ... | - destination_port - Destination TCP/UDP port. Type: string or integer -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| TCP or UDP packet transmission should fail \| ${nodes['TG']} \ -| | ... | \| 16.0.0.1 \| 32.0.0.1 \| eth2 \| 08:00:27:cc:4f:54 \ -| | ... | \| eth4 \| 08:00:27:c9:6a:d5 \| TCP \| 20 \| 80 \| -| | ... -| | [Arguments] | ${tg_node} | ${src_ip} | ${dst_ip} | ${tx_port} | -| | ... | ${tx_mac} | ${rx_port} | ${rx_mac} | ${protocol} | ${source_port} -| | ... | ${destination_port} -| | ${tx_port_name}= | Get interface name | ${tg_node} | ${tx_port} -| | ${rx_port_name}= | Get interface name | ${tg_node} | ${rx_port} -| | ${args}= | Catenate | --tx_mac | ${tx_mac} -| | ... | --rx_mac | ${rx_mac} -| | ... | --src_ip | ${src_ip} -| | ... | --dst_ip | ${dst_ip} -| | ... | --tx_if | ${tx_port_name} -| | ... | --rx_if | ${rx_port_name} -| | ... | --protocol | ${protocol} -| | ... | --source_port | ${source_port} -| | ... | --destination_port | ${destination_port} -| | Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Run Traffic Script On Node | send_tcp_udp.py -| | ... | ${tg_node} | ${args} - -| Receive and verify router advertisement packet -| | [Documentation] | Wait until RA packet is received and then verify\ -| | ... | specific fields of received RA packet. -| | ... -| | ... | *Arguments:* -| | ... -| | ... | - node - Node where to check for RA packet. Type: dictionary -| | ... | - rx_port - Interface where the packet is received. Type: string -| | ... | - src_mac - MAC address of source interface from which the link-local\ -| | ... | IPv6 address is constructed and checked. Type: string -| | ... | - interval - Configured retransmit interval. Optional. Type: integer -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Receive and verify router advertisement packet \ -| | ... | \| ${nodes['DUT1']} \| eth2 \| 08:00:27:cc:4f:54 \| -| | ... -| | [Arguments] | ${node} | ${rx_port} | ${src_mac} | ${interval}=${0} -| | ${rx_port_name}= | Get interface name | ${node} | ${rx_port} -| | ${args}= | Catenate -| | ... | --rx_if ${rx_port_name} -| | ... | --src_mac ${src_mac} -| | ... | --interval ${interval} -| | Run Traffic Script On Node | check_ra_packet.py | ${node} | ${args} - -| Send router solicitation and verify response -| | [Documentation] | Send RS packet, wait for response and then verify\ -| | ... | specific fields of received RA packet. -| | ... -| | ... | *Arguments:* -| | ... -| | ... | - tg_node - TG node to send RS packet from. Type: dictionary -| | ... | - dut_node - DUT node to send RS packet to. Type: dictionary -| | ... | - rx_port - Interface where the packet is sent from. Type: string -| | ... | - tx_port - Interface where the packet is sent to. Type: string -| | ... | - src_ip - Source IP address of RS packet. Optional. If not provided,\ -| | ... | link local address will be used. Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send router solicitation and verify response \ -| | ... | \| ${nodes['TG']} \| ${nodes['DUT1']} \| eth2 \ -| | ... | \| GigabitEthernet0/8/0 \| 10::10 \| -| | ... -| | [Arguments] | ${tg_node} | ${dut_node} | ${tx_port} | ${rx_port} -| | ... | ${src_ip}='' -| | ${src_mac}= | Get Interface Mac | ${tg_node} | ${tx_port} -| | ${dst_mac}= | Get Interface Mac | ${dut_node} | ${rx_port} -| | ${src_int_name}= | Get interface name | ${tg_node} | ${tx_port} -| | ${dst_int_name}= | Get interface name | ${dut_node} | ${rx_port} -| | ${args}= | catenate -| | ... | --rx_if ${dst_int_name} --tx_if ${src_int_name} -| | ... | --src_mac ${src_mac} | --dst_mac ${dst_mac} -| | ... | --src_ip ${src_ip} -| | Run Traffic Script On Node | send_rs_check_ra.py -| | ... | ${tg_node} | ${args} - -| Send ARP Request -| | [Documentation] | Send ARP Request and check if the ARP Response is received. -| | ... -| | ... | *Arguments:* -| | ... -| | ... | _NOTE:_ Arguments are based on topology: -| | ... | TG(if1)<->(if1)DUT -| | ... -| | ... | - tg_node - Node to execute scripts on (TG). Type: dictionary -| | ... | - tx_port - Interface from which the ARP packet is sent (TG-if1). -| | ... | Type: string -| | ... | - src_mac - Source MAC address of ARP packet (TG-if1). -| | ... | Type: string -| | ... | - tgt_mac - Target MAC address which is expected in the response -| | ... | (DUT-if1). Type: string -| | ... | - src_ip - Source IP address of ARP packet (TG-if1). -| | ... | Type: string -| | ... | - tgt_ip - Target IP address of ARP packet (DUT-if1). -| | ... | Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send ARP Request \| ${nodes['TG']} \| eth3 \ -| | ... | \| 08:00:27:cc:4f:54 \| 08:00:27:c9:6a:d5 \ -| | ... | \| 10.0.0.100 \| 192.168.1.5 \| -| | ... -| | [Arguments] | ${tg_node} | ${tx_port} -| | ... | ${src_mac} | ${tgt_mac} -| | ... | ${src_ip} | ${tgt_ip} -| | ${args}= | Catenate | --tx_if | ${tx_port} -| | ... | --src_mac | ${src_mac} | --dst_mac | ${tgt_mac} -| | ... | --src_ip | ${src_ip} | --dst_ip | ${tgt_ip} -| | Run Traffic Script On Node | arp_request.py | ${tg_node} | ${args} - -| ARP request should fail -| | [Documentation] | Send ARP Request and -| | ... | the ARP Response should not be received. -| | ... -| | ... | *Arguments:* -| | ... -| | ... | _NOTE:_ Arguments are based on topology: -| | ... | TG(if1)<->(if1)DUT -| | ... -| | ... | - tg_node - Node to execute scripts on (TG). Type: dictionary -| | ... | - tx_port - Interface from which the ARP packet is sent (TG-if1). -| | ... | Type: string -| | ... | - src_mac - Source MAC address of ARP packet (TG-if1). -| | ... | Type: string -| | ... | - tgt_mac - Target MAC address which is expected in the response -| | ... | (DUT-if1). Type: string -| | ... | - src_ip - Source IP address of ARP packet (TG-if1). -| | ... | Type: string -| | ... | - tgt_ip - Target IP address of ARP packet (DUT-if1). -| | ... | Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| ARP request should fail \| ${nodes['TG']} \| eth3 \ -| | ... | \| 08:00:27:cc:4f:54 \| 08:00:27:c9:6a:d5 \ -| | ... | \| 10.0.0.100 \| 192.168.1.5 \| -| | ... -| | [Arguments] | ${tg_node} | ${tx_port} -| | ... | ${src_mac} | ${tgt_mac} -| | ... | ${src_ip} | ${tgt_ip} -| | ${args}= | Catenate | --tx_if | ${tx_port} -| | ... | --src_mac | ${src_mac} | --dst_mac | ${tgt_mac} -| | ... | --src_ip | ${src_ip} | --dst_ip | ${tgt_ip} -| | Run Keyword And Expect Error | ARP reply timeout -| | ... | Run Traffic Script On Node | arp_request.py | ${tg_node} | ${args} - -| Send packets and verify multipath routing -| | [Documentation] | Send 100 IP ICMP packets traffic and check if it is\ -| | ... | divided into two paths. -| | ... -| | ... | *Arguments:* -| | ... -| | ... | _NOTE:_ Arguments are based on topology: -| | ... | TG(if1)->(if1)DUT(if2)->TG(if2) -| | ... -| | ... | - tg_node - Node to execute scripts on (TG). Type: dictionary -| | ... | - src_port - Interface of TG-if1. Type: string -| | ... | - dst_port - Interface of TG-if2. Type: string -| | ... | - src_ip - IP of source interface (TG-if1). Type: string -| | ... | - dst_ip - IP of destination interface (TG-if2). Type: string -| | ... | - tx_src_mac - MAC address of TG-if1. Type: string -| | ... | - tx_dst_mac - MAC address of DUT-if1. Type: string -| | ... | - rx_src_mac - MAC address of DUT-if2. Type: string -| | ... | - rx_dst_mac_1 - MAC address of interface for path 1. Type: string -| | ... | - rx_dst_mac_2 - MAC address of interface for path 2. Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send Packet And Check Multipath Routing \| ${nodes['TG']} \ -| | ... | \| eth2 \| eth3 \| 16.0.0.1 \| 32.0.0.1 \ -| | ... | \| 08:00:27:cc:4f:54 \| 08:00:27:c9:6a:d5 \| 08:00:27:54:59:f9 \ -| | ... | \| 02:00:00:00:00:02 \| 02:00:00:00:00:03 \| -| | ... -| | [Arguments] | ${tg_node} | ${src_port} | ${dst_port} | ${src_ip} | ${dst_ip} -| | ... | ${tx_src_mac} | ${tx_dst_mac} | ${rx_src_mac} -| | ... | ${rx_dst_mac_1} | ${rx_dst_mac_2} -| | ${src_port_name}= | Get interface name | ${tg_node} | ${src_port} -| | ${dst_port_name}= | Get interface name | ${tg_node} | ${dst_port} -| | ${args}= | Catenate | --tx_if | ${src_port_name} -| | ... | --rx_if | ${dst_port_name} | --src_ip | ${src_ip} -| | ... | --dst_ip | ${dst_ip} | --tg_if1_mac | ${tx_src_mac} -| | ... | --dut_if1_mac | ${tx_dst_mac} | --dut_if2_mac | ${rx_src_mac} -| | ... | --path_1_mac | ${rx_dst_mac_1} | --path_2_mac | ${rx_dst_mac_2} -| | Run Traffic Script On Node | send_icmp_check_multipath.py | ${tg_node} -| | ... | ${args} diff --git a/resources/libraries/robot/vm/double_qemu_setup.robot b/resources/libraries/robot/vm/double_qemu_setup.robot new file mode 100644 index 0000000000..377e222804 --- /dev/null +++ b/resources/libraries/robot/vm/double_qemu_setup.robot @@ -0,0 +1,95 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*** Settings *** +| Library | resources.libraries.python.IPUtil + +*** Keywords *** +| Configure QEMU vhost and run it +| | [Documentation] | Setup Qemu with 4 vhost-user interfaces and 4 namespaces. +| | ... | Each call will be different object instance. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - Node where to setup qemu. Type: dict +| | ... | - sock1 - Socket path for first Vhost-User interface. Type: string +| | ... | - sock2 - Socket path for second Vhost-User interface. Type: string +| | ... | - sock3 - Socket path for third Vhost-User interface. Type: string +| | ... | - sock4 - Socket path for forth Vhost-User interface. Type: string +| | ... | - ip1 - IP address for namespace 1. Type: string +| | ... | - ip2 - IP address for namespace 2. Type: string +| | ... | - ip3 - IP address for namespace 3. Type: string +| | ... | - ip4 - IP address for namespace 4. Type: string +| | ... | - prefix_length - IP prefix length. Type: int +| | ... | - qemu_name - Qemu instance name by which the object will be accessed. +| | ... | Type: string +| | ... | - mac_ID - MAC address ID used to differentiate qemu instances and +| | ... | namespaces assigned to them. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Setup QEMU Vhost And Run\| {nodes['DUT1']} \| /tmp/sock1 \ +| | ... | \| /tmp/sock2 \| /tmp/sock3 \| /tmp/sock4 \| 16.0.0.1 \| 16.0.0.2 \ +| | ... | \| 16.0.0.3 \| 16.0.0.4 \| 24 \| qemu_instance_1 \| 06 \| +| | ... +| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${sock3} | ${sock4} +| | ... | ${ip1} | ${ip2} | ${ip3} | ${ip4} | ${prefix_length} +| | ... | ${qemu_name} | ${mac_ID} +| | Import Library | resources.libraries.python.QemuUtils \ +| | ... | WITH NAME | ${qemu_name} +| | ${qemu_add_vhost}= | Replace Variables | ${qemu_name}.Qemu Add Vhost User If +| | ${qemu_set_node}= | Replace Variables | ${qemu_name}.Qemu Set Node +| | ${qemu_start}= | Replace Variables | ${qemu_name}.Qemu Start +| | Run keyword | ${qemu_add_vhost} | ${sock1} | mac=52:54:00:00:${mac_ID}:01 +| | Run keyword | ${qemu_add_vhost} | ${sock2} | mac=52:54:00:00:${mac_ID}:02 +| | Run keyword | ${qemu_add_vhost} | ${sock3} | mac=52:54:00:00:${mac_ID}:03 +| | Run keyword | ${qemu_add_vhost} | ${sock4} | mac=52:54:00:00:${mac_ID}:04 +| | Run keyword | ${qemu_set_node} | ${dut_node} +| | ${vm}= | Run keyword | ${qemu_start} +| | ${vhost1}= | Get Vhost User If Name By Sock | ${vm} | ${sock1} +| | ${vhost2}= | Get Vhost User If Name By Sock | ${vm} | ${sock2} +| | ${vhost3}= | Get Vhost User If Name By Sock | ${vm} | ${sock3} +| | ${vhost4}= | Get Vhost User If Name By Sock | ${vm} | ${sock4} +| | Set Interface State | ${vm} | ${vhost1} | up | if_type=name +| | Set Interface State | ${vm} | ${vhost2} | up | if_type=name +| | Set Interface State | ${vm} | ${vhost3} | up | if_type=name +| | Set Interface State | ${vm} | ${vhost4} | up | if_type=name +| | Setup Network Namespace +| | ... | ${vm} | nmspace1 | ${vhost1} | ${ip1} | ${prefix_length} +| | Setup Network Namespace +| | ... | ${vm} | nmspace2 | ${vhost2} | ${ip2} | ${prefix_length} +| | Setup Network Namespace +| | ... | ${vm} | nmspace3 | ${vhost3} | ${ip3} | ${prefix_length} +| | Setup Network Namespace +| | ... | ${vm} | nmspace4 | ${vhost4} | ${ip4} | ${prefix_length} +| | Set Test Variable | ${${qemu_name}} | ${vm} + +| Tear down QEMU +| | [Documentation] | Stop specific qemu instance +| | ... | running on ${dut_node}, ${vm} is VM node info dictionary +| | ... | returned by qemu_start or None. +| | ... | *Arguments:* +| | ... | - dut_node - Node where to clean qemu. Type: dict +| | ... | - vm - VM node info dictionary. Type: string +| | ... | - qemu_name - Qemu instance by name. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Tear down QEMU \| ${node['DUT1']} \| ${vm} \| qemu_node_1 \| +| | ... +| | [Arguments] | ${dut_node} | ${vm} | ${qemu_name} +| | ${set_node}= | Replace Variables | ${qemu_name}.Qemu Set Node +| | ${kill}= | Replace Variables | ${qemu_name}.Qemu Kill +| | ${clear_socks}= | Replace Variables | ${qemu_name}.Qemu Clear Socks +| | Run Keyword | ${set_node} | ${dut_node} +| | Run Keyword | ${kill} +| | Run Keyword | ${clear_socks} +| | Run Keyword If | ${vm} is not None | Disconnect | ${vm} diff --git a/resources/libraries/robot/vm/qemu.robot b/resources/libraries/robot/vm/qemu.robot new file mode 100644 index 0000000000..097f3cb1a8 --- /dev/null +++ b/resources/libraries/robot/vm/qemu.robot @@ -0,0 +1,99 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*** Settings *** +| Library | resources.libraries.python.QemuUtils +| Library | resources.libraries.python.ssh.SSH + +*** Keywords *** + +| QEMU build list should exist +| | [Documentation] | Return TRUE if variable QEMU_BUILD exist, otherwise FALSE +| | ${ret} | ${tmp}= | Run Keyword And Ignore Error +| | ... | Variable Should Exist | @{QEMU_BUILD} +| | Return From Keyword If | "${ret}" == "PASS" | ${TRUE} +| | Return From Keyword | ${FALSE} + +| Is QEMU ready on node +| | [Documentation] | Check if QEMU was built on the node before +| | [Arguments] | ${node} +| | ${ret}= | QEMU build list should exist +| | Return From Keyword If | ${ret} == ${FALSE} | ${FALSE} +| | ${ret} | ${tmp}= | Run Keyword And Ignore Error +| | ... | Should Contain | ${QEMU_BUILD} | ${node['host']} +| | Return From Keyword If | "${ret}" == "PASS" | ${TRUE} +| | Return From Keyword | ${FALSE} + +| Add node to QEMU build list +| | [Documentation] | Add node to the list of nodes with builded QEMU (global +| | ... | variable QEMU_BUILD) +| | [Arguments] | ${node} +| | ${ret}= | QEMU build list should exist +| | Run Keyword If | ${ret} == ${TRUE} +| | ... | Append To List | ${QEMU_BUILD} | ${node['host']} +| | ... | ELSE | Set Global Variable | @{QEMU_BUILD} | ${node['host']} + +| Build QEMU on node +| | [Documentation] | Build QEMU from sources on the Node. Nodes with successful +| | ... | QEMU build are stored in global variable list QEMU_BUILD +| | ... +| | ... | *Arguments:* +| | ... | - node - Node on which to build qemu. Type: dictionary +| | ... | - force_install - If True, then remove previous build. Type: bool +| | ... | - apply_patch - If True, then apply patches from qemu_patches dir. +| | ... | Type: bool +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Build QEMU on node \| ${node['DUT1']} \| False \| False \| +| | ... +| | [Arguments] | ${node} | ${force_install}=${False} | ${apply_patch}=${False} +| | ${ready}= | Is QEMU ready on node | ${node} +| | Return From Keyword If | ${ready} == ${TRUE} +| | Build QEMU | ${node} +| | Add node to QEMU build list | ${node} + +| Build QEMU on all DUTs +| | [Documentation] | Build QEMU from sources on all DUTs. Nodes with successful +| | ... | QEMU build are stored in global variable list QEMU_BUILD +| | ... +| | ... | *Arguments:* +| | ... | - force_install - If True, then remove previous build. Type: bool +| | ... | - apply_patch - If True, then apply patches from qemu_patches dir. +| | ... | Type: bool +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Build QEMU on all DUTs \| False \| False \| +| | ... +| | [Arguments] | ${force_install}=${False} | ${apply_patch}=${False} +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Build QEMU on node | ${nodes['${dut}']} | ${force_install} | +| | | ... | ${apply_patch} + +| Stop and clear QEMU +| | [Documentation] | Stop QEMU, clear used sockets and close SSH connection +| | ... | running on ${dut}, ${vm} is VM node info dictionary +| | ... | returned by qemu_start or None. +| | [Arguments] | ${dut} | ${vm} +| | Qemu Set Node | ${dut} +| | Qemu Kill +| | Qemu Clear Socks +| | Run Keyword If | ${vm} is not None | Disconnect | ${vm} + +| Kill Qemu on all DUTs +| | [Documentation] | Kill QEMU processes on all DUTs. +| | ${duts}= | Get Matches | ${nodes} | DUT* +| | :FOR | ${dut} | IN | @{duts} +| | | Qemu Set Node | ${nodes['${dut}']} +| | | Qemu Kill diff --git a/resources/libraries/robot/vxlan.robot b/resources/libraries/robot/vxlan.robot deleted file mode 100644 index d867189a15..0000000000 --- a/resources/libraries/robot/vxlan.robot +++ /dev/null @@ -1,135 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | Collections -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/l2_xconnect.robot -| Library | resources.libraries.python.L2Util -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.IPv4Util -| Library | resources.libraries.python.IPv6Util -| Library | resources.libraries.python.IPv4Setup -| Library | resources.libraries.python.NodePath - -*** Keywords *** -| Configure IP addresses and neighbors on interfaces -| | [Documentation] | *Set IPv4 addresses on interfaces on DUTs.* -| | ... | If interface index is None then is determines with Get Interface Sw Index -| | ... | in this case it is required the interface to be present in topology dict. -| | ... | It also executes VPP IP Probe to determine MACs to IPs on DUTs -| | ... -| | ... | _Set testcase variables with IP addresses and prefix length:_ -| | ... | - ${dut1s_ip_address} -| | ... | - ${dut2s_ip_address} -| | ... | - ${duts_ip_address_prefix} -| | ... -| | [Arguments] | ${DUT1} | ${DUT1_INT_NAME} | ${DUT1_INT_INDEX} -| | ... | ${DUT2} | ${DUT2_INT_NAME} | ${DUT2_INT_INDEX} -| | Set Test Variable | ${dut1s_ip_address} | 172.16.0.1 -| | Set Test Variable | ${dut2s_ip_address} | 172.16.0.2 -| | Set Test Variable | ${duts_ip_address_prefix} | 24 -| | ${DUT1_INT_KEY}= | Run Keyword If | ${DUT1_INT_INDEX} is None -| | | ... | Get Interface by name | ${DUT1} | ${DUT1_INT_NAME} -| | ${DUT2_INT_KEY}= | Run Keyword If | ${DUT2_INT_INDEX} is None -| | | ... | Get Interface by name | ${DUT2} | ${DUT2_INT_NAME} -| | ${DUT1_INT_INDEX}= | Run Keyword If | ${DUT1_INT_INDEX} is None -| | | ... | Get Interface Sw Index | ${DUT1} | ${DUT1_INT_KEY} -| | | ... | ELSE | Set Variable | ${DUT1_INT_INDEX} -| | ${DUT2_INT_INDEX}= | Run Keyword If | ${DUT2_INT_INDEX} is None -| | | ... | Get Interface Sw Index | ${DUT2} | ${DUT2_INT_KEY} -| | | ... | ELSE | Set Variable | ${DUT2_INT_INDEX} -| | ${DUT1_INT_MAC}= | Vpp Get Interface Mac | ${DUT1} | ${DUT1_INT_INDEX} -| | ${DUT2_INT_MAC}= | Vpp Get Interface Mac | ${DUT2} | ${DUT2_INT_INDEX} -| | Set Interface Address | ${DUT1} | ${DUT1_INT_INDEX} -| | ... | ${dut1s_ip_address} | ${duts_ip_address_prefix} -| | Set Interface Address | ${DUT2} | ${DUT2_INT_INDEX} -| | ... | ${dut2s_ip_address} | ${duts_ip_address_prefix} -| | Add IP Neighbor | ${DUT1} | ${DUT1_INT_INDEX} | ${dut2s_ip_address} | ${DUT2_INT_MAC} -| | Add IP Neighbor | ${DUT2} | ${DUT2_INT_INDEX} | ${dut1s_ip_address} | ${DUT1_INT_MAC} - -| Add interfaces to L2BD -| | [Arguments] | ${DUT} | ${BID} | ${INTERFACE_1} | ${INTERFACE_2} -| | Vpp Add L2 Bridge Domain | ${DUT} | ${BID} | ${INTERFACE_1} | ${INTERFACE_2} - -| Create vlan interfaces for VXLAN -| | [Documentation] | *Create VLAN subinterface on interfaces on DUTs with given VLAN ID.* -| | ... -| | ... | _Set testcase variables with name and index of created interfaces:_ -| | ... | - ${dut1s_vlan_name} -| | ... | - ${dut1s_vlan_index} -| | ... | - ${dut2s_vlan_name} -| | ... | - ${dut2s_vlan_index} -| | ... -| | [Arguments] | ${VLAN} | ${DUT1} | ${INT1} | ${DUT2} | ${INT2} -| | ${INT1_NAME}= | Get interface name | ${DUT1} | ${INT1} -| | ${INT2_NAME}= | Get interface name | ${DUT2} | ${INT2} -| | ${dut1s_vlan_name} | ${dut1s_vlan_index}= | Create Vlan Subinterface -| | | ... | ${DUT1} | ${INT1_NAME} | ${VLAN} -| | ${dut2s_vlan_name} | ${dut2s_vlan_index}= | Create Vlan Subinterface -| | | ... | ${DUT2} | ${INT2_NAME} | ${VLAN} -| | Set Interface State | ${DUT1} | ${dut1s_vlan_index} | up -| | Set Interface State | ${DUT2} | ${dut2s_vlan_index} | up -| | Set Test Variable | ${dut1s_vlan_name} -| | Set Test Variable | ${dut1s_vlan_index} -| | Set Test Variable | ${dut2s_vlan_name} -| | Set Test Variable | ${dut2s_vlan_index} - -| Send VXLAN encapsulated packet and verify received packet -| | [Documentation] | Send VXLAN encapsulated Ethernet frame and check \ -| | ... | received one. -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - Node where to run traffic script. Type: dictionary -| | ... | - tx_if - Interface from where send VXLAN packet. Type: string -| | ... | - rx_if - Interface where receive VXLAN packet. Type: string -| | ... | - tx_src_mac - Source MAC address of sent packet. Type: string -| | ... | - tx_dst_mac - Destination MAC address of sent packet. Type: string -| | ... | - tx_src_ip - Source IP address of sent VXLAN packet. Type: string -| | ... | - tx_dst_ip - Destination IP address of sent VXLAN packet. -| | ... | Type: string -| | ... | - tx_vni - VNI of sent VXLAN packet. Type: string -| | ... | - rx_src_ip - Source IP address of received VXLAN packet. Type: string -| | ... | - rx_dst_ip - Destination IP address of received VXLAN packet. -| | ... | Type: string -| | ... | - rx_vni - VNI of received VXLAN packet. Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send VXLAN encapsulated packet and verify received packet \| ${tg_node} \| port4 \| port4 \ -| | ... | \| fa:16:3e:6d:f9:c5 \| fa:16:3e:e6:6d:9a \| 192.168.0.1 \ -| | ... | \| 192.168.0.2 \| ${101} \| 192.168.0.2 \| 192.168.0.1 \| ${102} \| -| | ... -| | [Arguments] | ${tg_node} | ${tx_if} | ${rx_if} -| | ... | ${tx_src_mac} | ${tx_dst_mac} -| | ... | ${tx_src_ip} | ${tx_dst_ip} | ${tx_vni} -| | ... | ${rx_src_ip} | ${rx_dst_ip} | ${rx_vni} -| | ${tx_if_name}= | Get interface name | ${tg_node} | ${tx_if} -| | ${rx_if_name}= | Get interface name | ${tg_node} | ${rx_if} -| | ${args}= | Catenate -| | ... | --tx_if ${tx_if_name} -| | ... | --rx_if ${rx_if_name} -| | ... | --tx_src_mac ${tx_src_mac} -| | ... | --tx_dst_mac ${tx_dst_mac} -| | ... | --tx_src_ip ${tx_src_ip} -| | ... | --tx_dst_ip ${tx_dst_ip} -| | ... | --tx_vni ${tx_vni} -| | ... | --rx_src_ip ${rx_src_ip} -| | ... | --rx_dst_ip ${rx_dst_ip} -| | ... | --rx_vni ${rx_vni} -| | Run Traffic Script On Node | send_vxlan_check_vxlan.py | ${tg_node} | ${args} diff --git a/resources/templates/vat/show_crypto_device_mapping.vat b/resources/templates/vat/show_crypto_device_mapping.vat index d25e1e6dd8..3d66169d0c 100644 --- a/resources/templates/vat/show_crypto_device_mapping.vat +++ b/resources/templates/vat/show_crypto_device_mapping.vat @@ -1 +1 @@ -exec show crypto device mapping +exec show crypto device mapping diff --git a/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-14.04.4_2016-10-07_1.3/apt-packages.txt b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-14.04.4_2016-10-07_1.3/apt-packages.txt index 344db39a8a..cf22a87ed8 100644 --- a/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-14.04.4_2016-10-07_1.3/apt-packages.txt +++ b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-14.04.4_2016-10-07_1.3/apt-packages.txt @@ -1,250 +1,250 @@ -'http://ppa.launchpad.net/openjdk-r/ppa/ubuntu/pool/main/o/openjdk-8/openjdk-8-jdk-headless_8u91-b14-0ubuntu4~14.04_amd64.deb' openjdk-8-jdk-headless_8u91-b14-0ubuntu4~14.04_amd64.deb 8164072 MD5Sum:41d625948a23f74c53f74e33f6719d8c -'http://ppa.launchpad.net/openjdk-r/ppa/ubuntu/pool/main/o/openjdk-8/openjdk-8-jre-headless_8u91-b14-0ubuntu4~14.04_amd64.deb' openjdk-8-jre-headless_8u91-b14-0ubuntu4~14.04_amd64.deb 26636868 MD5Sum:68d5c0db3b0cc5e3683d6a00abdc6189 -'http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu/pool/main/libs/libseccomp/libseccomp2_2.1.1-1+syseleven1_amd64.deb' libseccomp2_2.1.1-1+syseleven1_amd64.deb 26344 MD5Sum:3ceb99432357bce67ba151a859aa60da -'http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu/pool/main/q/qemu/qemu-system-common_2.2.1+dfsg-0+syseleven4_amd64.deb' qemu-system-common_1%3a2.2.1+dfsg-0+syseleven4_amd64.deb 294740 MD5Sum:ebf2345f6496e4da73098d7f516bbf8b -'http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu/pool/main/q/qemu/qemu-system-x86_2.2.1+dfsg-0+syseleven4_amd64.deb' qemu-system-x86_1%3a2.2.1+dfsg-0+syseleven4_amd64.deb 2181682 MD5Sum:6b43a70d002ba1a46f9b8e12e591c849 -'http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu/pool/main/q/qemu/qemu-utils_2.2.1+dfsg-0+syseleven4_amd64.deb' qemu-utils_1%3a2.2.1+dfsg-0+syseleven4_amd64.deb 518404 MD5Sum:20bc3e2ff37af86bd8e61c96e6569672 -'http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu/pool/main/s/seabios/seabios_1.7.5-1+syseleven1_all.deb' seabios_1.7.5-1+syseleven1_all.deb 111880 MD5Sum:0cd53324914bb2e198cefef23c4771a0 -'http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu/pool/main/s/spice/libspice-server1_0.12.5-1+syseleven1_amd64.deb' libspice-server1_0.12.5-1+syseleven1_amd64.deb 326044 MD5Sum:7574c7ba91816a2739e8489148c016bb -'https://apt.dockerproject.org/repo/pool/main/d/docker-engine/docker-engine_1.12.1-0~trusty_amd64.deb' docker-engine_1.12.1-0~trusty_amd64.deb 19383142 MD5Sum:99bd6619e227ce413e0163a7586a919f -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/acl/acl_2.2.52-1_amd64.deb' acl_2.2.52-1_amd64.deb 43790 MD5Sum:ac8db6aa2095dfd83758db34cf31285a -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2_1.0.27.2-3ubuntu7_amd64.deb' libasound2_1.0.27.2-3ubuntu7_amd64.deb 327374 MD5Sum:68d7619e0a70770c5feef628f8296409 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2-data_1.0.27.2-3ubuntu7_all.deb' libasound2-data_1.0.27.2-3ubuntu7_all.deb 26264 MD5Sum:1b78d6d03ed4303e843ba2c5bae3bc53 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/apt_1.0.1ubuntu2.14_amd64.deb' apt_1.0.1ubuntu2.14_amd64.deb 954540 MD5Sum:8615062e5fa0e1c9140bc99443f93e57 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/apt-transport-https_1.0.1ubuntu2.14_amd64.deb' apt-transport-https_1.0.1ubuntu2.14_amd64.deb 25042 MD5Sum:de9d0feaaf95f9203a4e6050fcc838a1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/apt-utils_1.0.1ubuntu2.14_amd64.deb' apt-utils_1.0.1ubuntu2.14_amd64.deb 171560 MD5Sum:9a67fdeca283e5fe14374becd459eacc -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/libapt-inst1.5_1.0.1ubuntu2.14_amd64.deb' libapt-inst1.5_1.0.1ubuntu2.14_amd64.deb 58610 MD5Sum:65bd48b1df912735bd0f370ee7d85fac -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/libapt-pkg4.12_1.0.1ubuntu2.14_amd64.deb' libapt-pkg4.12_1.0.1ubuntu2.14_amd64.deb 637710 MD5Sum:76ed008847b63af01ff64d217487f7de -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-client3_0.6.31-4ubuntu1.1_amd64.deb' libavahi-client3_0.6.31-4ubuntu1.1_amd64.deb 25136 MD5Sum:a768c3a502a204fca430f98fab12d676 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-common3_0.6.31-4ubuntu1.1_amd64.deb' libavahi-common3_0.6.31-4ubuntu1.1_amd64.deb 21738 MD5Sum:ddf978df5cbc75ad174cd66db0d90846 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-common-data_0.6.31-4ubuntu1.1_amd64.deb' libavahi-common-data_0.6.31-4ubuntu1.1_amd64.deb 21242 MD5Sum:3878bcc211212dfe7158765344638d0f -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/base-files/base-files_7.2ubuntu5.5_amd64.deb' base-files_7.2ubuntu5.5_amd64.deb 67454 MD5Sum:a5320f578f4ccd54956bc3ae943f5b4b -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bash-completion/bash-completion_2.1-4ubuntu0.2_all.deb' bash-completion_1%3a2.1-4ubuntu0.2_all.deb 153330 MD5Sum:3283490e6717d124ea90a34ba2a2877c -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/bind9-host_9.9.5.dfsg-3ubuntu0.9_amd64.deb' bind9-host_1%3a9.9.5.dfsg-3ubuntu0.9_amd64.deb 46584 MD5Sum:f3e016d42d80bdf19a6ea1058af22ebb -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/dnsutils_9.9.5.dfsg-3ubuntu0.9_amd64.deb' dnsutils_1%3a9.9.5.dfsg-3ubuntu0.9_amd64.deb 96950 MD5Sum:36393452d82b4a8f8738d0494198263f -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libbind9-90_9.9.5.dfsg-3ubuntu0.9_amd64.deb' libbind9-90_1%3a9.9.5.dfsg-3ubuntu0.9_amd64.deb 21992 MD5Sum:a6dde46ac18b6cc63b2bbd5d9ab06b98 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libdns100_9.9.5.dfsg-3ubuntu0.9_amd64.deb' libdns100_1%3a9.9.5.dfsg-3ubuntu0.9_amd64.deb 645262 MD5Sum:46fae0a00134f84ea51b4000620a3741 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libisc95_9.9.5.dfsg-3ubuntu0.9_amd64.deb' libisc95_1%3a9.9.5.dfsg-3ubuntu0.9_amd64.deb 147558 MD5Sum:a242941d225a139b1a9bdd2d20b89767 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libisccc90_9.9.5.dfsg-3ubuntu0.9_amd64.deb' libisccc90_1%3a9.9.5.dfsg-3ubuntu0.9_amd64.deb 15676 MD5Sum:fc56e88992ffee19adeeb7a549a3fc38 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libisccfg90_9.9.5.dfsg-3ubuntu0.9_amd64.deb' libisccfg90_1%3a9.9.5.dfsg-3ubuntu0.9_amd64.deb 35990 MD5Sum:05b4704141a800d4385f68413ed0d265 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/liblwres90_9.9.5.dfsg-3ubuntu0.9_amd64.deb' liblwres90_1%3a9.9.5.dfsg-3ubuntu0.9_amd64.deb 32684 MD5Sum:3b70ee976342c3e3399c25c7f21b866c -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/binutils/binutils_2.24-5ubuntu14.1_amd64.deb' binutils_2.24-5ubuntu14.1_amd64.deb 2080900 MD5Sum:85dd95077b946a274f9814639eba4d06 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/biosdevname/biosdevname_0.4.1-0ubuntu6.3_amd64.deb' biosdevname_0.4.1-0ubuntu6.3_amd64.deb 20284 MD5Sum:bc837d60b1c558c6424309a446420b0d -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bluez/libbluetooth3_4.101-0ubuntu13.1_amd64.deb' libbluetooth3_4.101-0ubuntu13.1_amd64.deb 53478 MD5Sum:0577a4e8b377f3751b018494096df9e4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.54/libboost-system1.54.0_1.54.0-4ubuntu3.1_amd64.deb' libboost-system1.54.0_1.54.0-4ubuntu3.1_amd64.deb 10128 MD5Sum:2a5872be9fcc3cc0a51d9ec0d42c41a7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.54/libboost-thread1.54.0_1.54.0-4ubuntu3.1_amd64.deb' libboost-thread1.54.0_1.54.0-4ubuntu3.1_amd64.deb 26542 MD5Sum:2e7b4afdd0d85037864a2c3e3ef19999 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bridge-utils/bridge-utils_1.5-6ubuntu2_amd64.deb' bridge-utils_1.5-6ubuntu2_amd64.deb 29192 MD5Sum:23f37038baab928f276fb1aa2fd0a6c2 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/brltty/libbrlapi0.6_5.0-2ubuntu2_amd64.deb' libbrlapi0.6_5.0-2ubuntu2_amd64.deb 20910 MD5Sum:d0072983318e559dc57fea88c494ed33 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/build-essential/build-essential_11.6ubuntu6_amd64.deb' build-essential_11.6ubuntu6_amd64.deb 4838 MD5Sum:6fa3d082885a7440d512236685cd24fd -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ca-certificates/ca-certificates_20160104ubuntu0.14.04.1_all.deb' ca-certificates_20160104ubuntu0.14.04.1_all.deb 189806 MD5Sum:e594e76f225119f35f4bc3266d7ef758 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ca-certificates-java/ca-certificates-java_20130815ubuntu1_all.deb' ca-certificates-java_20130815ubuntu1_all.deb 13390 MD5Sum:efc4948adfc7855968db71d52b181af0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ceph/librados2_0.80.11-0ubuntu1.14.04.1_amd64.deb' librados2_0.80.11-0ubuntu1.14.04.1_amd64.deb 1430556 MD5Sum:88d1b2079b7bd1a9a2d99e05fc88bf02 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ceph/librbd1_0.80.11-0ubuntu1.14.04.1_amd64.deb' librbd1_0.80.11-0ubuntu1.14.04.1_amd64.deb 322958 MD5Sum:684055975b3f6d7f9cbf42afc720989d -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cgroup-lite/cgroup-lite_1.9_all.deb' cgroup-lite_1.9_all.deb 3918 MD5Sum:fe1749ba83aaf6d4f3e87ccdbc3581d4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cheetah/python-cheetah_2.4.4-3.fakesyncbuild1_amd64.deb' python-cheetah_2.4.4-3.fakesyncbuild1_amd64.deb 143868 MD5Sum:800d75a71e9022b10c40f6019d7fa69d -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloog/libcloog-isl4_0.18.2-1_amd64.deb' libcloog-isl4_0.18.2-1_amd64.deb 57502 MD5Sum:da71de63b0e24eb02afb817c0b285d6a -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloud-init/cloud-init_0.7.5-0ubuntu1.20_all.deb' cloud-init_0.7.5-0ubuntu1.20_all.deb 198190 MD5Sum:fc64f334044286dc0e120a78d207321a -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloud-utils/cloud-guest-utils_0.27-0ubuntu9.2_all.deb' cloud-guest-utils_0.27-0ubuntu9.2_all.deb 13782 MD5Sum:dbdad01ef9b50575b3bbbdc8257c620a -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/configobj/python-configobj_4.7.2+ds-5build1_all.deb' python-configobj_4.7.2+ds-5build1_all.deb 174154 MD5Sum:e22c1f8dfb0ca0d36441c3166639beaa -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/coreutils/coreutils_8.21-1ubuntu5.4_amd64.deb' coreutils_8.21-1ubuntu5.4_amd64.deb 1090622 MD5Sum:10a2318be86f38a6ed113e16aabaa76b -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cpio/cpio_2.11+dfsg-1ubuntu1.2_amd64.deb' cpio_2.11+dfsg-1ubuntu1.2_amd64.deb 73806 MD5Sum:8c382d99c773b3af31664e587b84a6b9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cpu-checker/cpu-checker_0.7-0ubuntu4_amd64.deb' cpu-checker_0.7-0ubuntu4_amd64.deb 6834 MD5Sum:4369a69e41e5b78ab7a4623405455443 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cups/libcups2_1.7.2-0ubuntu1.7_amd64.deb' libcups2_1.7.2-0ubuntu1.7_amd64.deb 178512 MD5Sum:44573174451bfc3da06be711c65e6de9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/curl/libcurl3-gnutls_7.35.0-1ubuntu2.9_amd64.deb' libcurl3-gnutls_7.35.0-1ubuntu2.9_amd64.deb 165376 MD5Sum:e488d09073d5e80d6553577e0bdabc73 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/device-tree-compiler/libfdt1_1.4.0+dfsg-1_amd64.deb' libfdt1_1.4.0+dfsg-1_amd64.deb 15678 MD5Sum:5dd80e05348eec241f62ff8dd7d2e8f2 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dkms/dkms_2.2.0.3-1.1ubuntu5.14.04.8_all.deb' dkms_2.2.0.3-1.1ubuntu5.14.04.8_all.deb 65706 MD5Sum:78d69493f928b92cb52f2ec579cd37d0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dosfstools/dosfstools_3.0.26-1ubuntu0.1_amd64.deb' dosfstools_3.0.26-1ubuntu0.1_amd64.deb 60054 MD5Sum:1fc4609e8ec1911daa051415079a5afe -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg_1.17.5ubuntu5.7_amd64.deb' dpkg_1.17.5ubuntu5.7_amd64.deb 1956162 MD5Sum:1469d184f821ab4d4e179c1c8d2be5a7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg-dev_1.17.5ubuntu5.7_all.deb' dpkg-dev_1.17.5ubuntu5.7_all.deb 726244 MD5Sum:c1d73ee78c457f5f557c0cd4340fd5d3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/libdpkg-perl_1.17.5ubuntu5.7_all.deb' libdpkg-perl_1.17.5ubuntu5.7_all.deb 179134 MD5Sum:7f0c96b6386a43c1caa731d15f1f5fe4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/e/eglibc/libc6_2.19-0ubuntu6.9_amd64.deb' libc6_2.19-0ubuntu6.9_amd64.deb 4716976 MD5Sum:422dff6f1563aa40a0ab3ea2a9509025 -'http://us.archive.ubuntu.com/ubuntu/pool/main/e/eglibc/libc6-dev_2.19-0ubuntu6.9_amd64.deb' libc6-dev_2.19-0ubuntu6.9_amd64.deb 1910130 MD5Sum:f4971e129e81195e8445a4a5f1bb1123 -'http://us.archive.ubuntu.com/ubuntu/pool/main/e/eglibc/libc-bin_2.19-0ubuntu6.9_amd64.deb' libc-bin_2.19-0ubuntu6.9_amd64.deb 1164992 MD5Sum:f3b274ddffbb6e5dbab2aa0fa2559dbb -'http://us.archive.ubuntu.com/ubuntu/pool/main/e/eglibc/libc-dev-bin_2.19-0ubuntu6.9_amd64.deb' libc-dev-bin_2.19-0ubuntu6.9_amd64.deb 68992 MD5Sum:aa72bd06ea171705087d6f090a2cc8a6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/e/eglibc/multiarch-support_2.19-0ubuntu6.9_amd64.deb' multiarch-support_2.19-0ubuntu6.9_amd64.deb 4484 MD5Sum:663b9032a963a646537e10c2bd54f02e -'http://us.archive.ubuntu.com/ubuntu/pool/main/e/expat/libexpat1_2.1.0-4ubuntu1.3_amd64.deb' libexpat1_2.1.0-4ubuntu1.3_amd64.deb 71134 MD5Sum:da2dc3ee31d9aac4ee3689927084e966 -'http://us.archive.ubuntu.com/ubuntu/pool/main/e/expat/libexpat1-dev_2.1.0-4ubuntu1.3_amd64.deb' libexpat1-dev_2.1.0-4ubuntu1.3_amd64.deb 115202 MD5Sum:2140f6e7fcaeb17164bb72b47836dc0b -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/fakeroot_1.20-3ubuntu2_amd64.deb' fakeroot_1.20-3ubuntu2_amd64.deb 55026 MD5Sum:fad29881d632a463f5235f399fa65a14 -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/libfakeroot_1.20-3ubuntu2_amd64.deb' libfakeroot_1.20-3ubuntu2_amd64.deb 25392 MD5Sum:856c7401d7d5a63ea231f706c18d9261 -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/flac/libflac8_1.3.0-2ubuntu0.14.04.1_amd64.deb' libflac8_1.3.0-2ubuntu0.14.04.1_amd64.deb 80170 MD5Sum:bbd48c917a12d425f0e14873575bc64c -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fontconfig/fontconfig-config_2.11.0-0ubuntu4.2_all.deb' fontconfig-config_2.11.0-0ubuntu4.2_all.deb 47424 MD5Sum:0810d79c48f4cc873a73a721b6f51806 -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fontconfig/libfontconfig1_2.11.0-0ubuntu4.2_amd64.deb' libfontconfig1_2.11.0-0ubuntu4.2_amd64.deb 123368 MD5Sum:1ca4767d44771ef7e9e5b29c27738f69 -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fonts-dejavu/fonts-dejavu-core_2.34-1ubuntu1_all.deb' fonts-dejavu-core_2.34-1ubuntu1_all.deb 1024460 MD5Sum:7167c133d8ec713c90fc64faab927994 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/cpp-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb' cpp-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb 4595210 MD5Sum:c87a404428865790862aeb6195811066 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/g++-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb' g++-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb 18134574 MD5Sum:ffc4c3bc3fe036fd18e79399caea1586 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/gcc-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb' gcc-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb 5046702 MD5Sum:c53635e53f577687409b4c3c93f4da80 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/gcc-4.8-base_4.8.4-2ubuntu1~14.04.3_amd64.deb' gcc-4.8-base_4.8.4-2ubuntu1~14.04.3_amd64.deb 16192 MD5Sum:691b4cb367c62b79511541a3cee41fda -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libasan0_4.8.4-2ubuntu1~14.04.3_amd64.deb' libasan0_4.8.4-2ubuntu1~14.04.3_amd64.deb 63060 MD5Sum:ff04bb046aeec86af2bb90c5d90a166c -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libatomic1_4.8.4-2ubuntu1~14.04.3_amd64.deb' libatomic1_4.8.4-2ubuntu1~14.04.3_amd64.deb 8636 MD5Sum:ec6ce0fb6e66e8b8c95534ab9e77a67e -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libgcc-4.8-dev_4.8.4-2ubuntu1~14.04.3_amd64.deb' libgcc-4.8-dev_4.8.4-2ubuntu1~14.04.3_amd64.deb 1688000 MD5Sum:69ff74311eecda1487d0f96b14af0b7c -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libgomp1_4.8.4-2ubuntu1~14.04.3_amd64.deb' libgomp1_4.8.4-2ubuntu1~14.04.3_amd64.deb 23124 MD5Sum:8f95195693e2cbb56825fd9b2b9ffca0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libitm1_4.8.4-2ubuntu1~14.04.3_amd64.deb' libitm1_4.8.4-2ubuntu1~14.04.3_amd64.deb 28506 MD5Sum:52e717ed8662a3986997412f42abc297 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libquadmath0_4.8.4-2ubuntu1~14.04.3_amd64.deb' libquadmath0_4.8.4-2ubuntu1~14.04.3_amd64.deb 126028 MD5Sum:f541cc61c3feaa74098bdb9970ed12b6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libstdc++-4.8-dev_4.8.4-2ubuntu1~14.04.3_amd64.deb' libstdc++-4.8-dev_4.8.4-2ubuntu1~14.04.3_amd64.deb 1052564 MD5Sum:7657e54922455ae36c7b2f7228427aec -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libstdc++6_4.8.4-2ubuntu1~14.04.3_amd64.deb' libstdc++6_4.8.4-2ubuntu1~14.04.3_amd64.deb 258956 MD5Sum:3fe9099e0064fa8030f047ff38e075c2 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libtsan0_4.8.4-2ubuntu1~14.04.3_amd64.deb' libtsan0_4.8.4-2ubuntu1~14.04.3_amd64.deb 94872 MD5Sum:c4232ca2be66b95d74e8823a9868a9b4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/cpp_4.8.2-1ubuntu6_amd64.deb' cpp_4%3a4.8.2-1ubuntu6_amd64.deb 27452 MD5Sum:2ced23b24cf068b16b5a69222506fd79 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/g++_4.8.2-1ubuntu6_amd64.deb' g++_4%3a4.8.2-1ubuntu6_amd64.deb 1490 MD5Sum:7332a4e9116b821e167a3d0236ca413a -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/gcc_4.8.2-1ubuntu6_amd64.deb' gcc_4%3a4.8.2-1ubuntu6_amd64.deb 5098 MD5Sum:83b25d71df6df1c47a4b983596896f0b -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gdisk/gdisk_0.8.8-1ubuntu0.1_amd64.deb' gdisk_0.8.8-1ubuntu0.1_amd64.deb 185450 MD5Sum:6e9ed16eaca8d87dc22cf4918f95cb2c -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/git/git_1.9.1-1ubuntu0.3_amd64.deb' git_1%3a1.9.1-1ubuntu0.3_amd64.deb 2585532 MD5Sum:7ae18fa4b16c33b3ed506e23e7f26779 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/git/git-man_1.9.1-1ubuntu0.3_all.deb' git-man_1%3a1.9.1-1ubuntu0.3_all.deb 699150 MD5Sum:b9614019a1917fad0ff0edc6ddd53b91 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gmp/libgmp10_5.1.3+dfsg-1ubuntu1_amd64.deb' libgmp10_2%3a5.1.3+dfsg-1ubuntu1_amd64.deb 218280 MD5Sum:5a25bb81aa2e0ca83e2d349d58b435d5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnupg/gnupg_1.4.16-1ubuntu2.4_amd64.deb' gnupg_1.4.16-1ubuntu2.4_amd64.deb 610898 MD5Sum:b8819f1911f0fb6c0d579fe6d4206ffe -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnupg/gpgv_1.4.16-1ubuntu2.4_amd64.deb' gpgv_1.4.16-1ubuntu2.4_amd64.deb 160862 MD5Sum:40d9f14699dce15004e902f6be32a9ae -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnutls26/libgnutls26_2.12.23-12ubuntu2.5_amd64.deb' libgnutls26_2.12.23-12ubuntu2.5_amd64.deb 393294 MD5Sum:9e6ad9b80855df0f9b74ec18b9fe860d -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnutls26/libgnutls-openssl27_2.12.23-12ubuntu2.5_amd64.deb' libgnutls-openssl27_2.12.23-12ubuntu2.5_amd64.deb 18364 MD5Sum:77d399ac308dd0e9a58acc30e8959e76 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub2-common_2.02~beta2-9ubuntu1.12_amd64.deb' grub2-common_2.02~beta2-9ubuntu1.12_amd64.deb 501008 MD5Sum:3c068825f6f0dd3d8654a718fc8b2cd3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-common_2.02~beta2-9ubuntu1.12_amd64.deb' grub-common_2.02~beta2-9ubuntu1.12_amd64.deb 1680752 MD5Sum:67b46c687140d18dc9edf4e1f549af7e -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-pc_2.02~beta2-9ubuntu1.12_amd64.deb' grub-pc_2.02~beta2-9ubuntu1.12_amd64.deb 173256 MD5Sum:28e94511012d72668441add81189bbd9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-pc-bin_2.02~beta2-9ubuntu1.12_amd64.deb' grub-pc-bin_2.02~beta2-9ubuntu1.12_amd64.deb 880014 MD5Sum:e8f12a770ace294ee6add1e06368cc7d -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/html5lib/python-html5lib_0.999-3~ubuntu1_all.deb' python-html5lib_0.999-3~ubuntu1_all.deb 83470 MD5Sum:93c4140d32e1addb8231a3e0be557c93 -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/html5lib/python-html5lib-whl_0.999-3~ubuntu1_all.deb' python-html5lib-whl_0.999-3~ubuntu1_all.deb 109460 MD5Sum:bc6bd5baa70ace380513925f749857fa -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu52_52.1-3ubuntu0.4_amd64.deb' libicu52_52.1-3ubuntu0.4_amd64.deb 6751826 MD5Sum:ed4da162328dc75beb75e38ca291c959 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/ifupdown/ifupdown_0.7.47.2ubuntu4.4_amd64.deb' ifupdown_0.7.47.2ubuntu4.4_amd64.deb 53092 MD5Sum:49c7118f0bd254b1196363ad727dcde7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools_0.103ubuntu4.4_all.deb' initramfs-tools_0.103ubuntu4.4_all.deb 44458 MD5Sum:24696286c72a6d314384184bcf1064fc -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools-bin_0.103ubuntu4.4_amd64.deb' initramfs-tools-bin_0.103ubuntu4.4_amd64.deb 9134 MD5Sum:ccf6ddbf3affccb61c18a6f5e1ab1b3c -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/ipxe/ipxe-qemu_1.0.0+git-20131111.c3d1e78-2ubuntu1.1_all.deb' ipxe-qemu_1.0.0+git-20131111.c3d1e78-2ubuntu1.1_all.deb 509898 MD5Sum:2ed810c34ce0682174eb97461673c00e -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isc-dhcp/isc-dhcp-client_4.2.4-7ubuntu12.7_amd64.deb' isc-dhcp-client_4.2.4-7ubuntu12.7_amd64.deb 639242 MD5Sum:88ff90aff87eac3282c144839469cdb8 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isc-dhcp/isc-dhcp-common_4.2.4-7ubuntu12.7_amd64.deb' isc-dhcp-common_4.2.4-7ubuntu12.7_amd64.deb 708426 MD5Sum:c5b837eb4b83297e473e62742f243ea8 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isl/libisl10_0.12.2-1_amd64.deb' libisl10_0.12.2-1_amd64.deb 419218 MD5Sum:b9756a5cce1ecd2d56652779d9e3b757 -'http://us.archive.ubuntu.com/ubuntu/pool/main/j/java-common/java-common_0.51_all.deb' java-common_0.51_all.deb 129966 MD5Sum:c8352e7908b8a260b2657f9b80c08031 -'http://us.archive.ubuntu.com/ubuntu/pool/main/k/keyutils/keyutils_1.5.6-1_amd64.deb' keyutils_1.5.6-1_amd64.deb 33588 MD5Sum:a49da8cb9cc16bdaf1ef8b205bf99d2e -'http://us.archive.ubuntu.com/ubuntu/pool/main/k/klibc/klibc-utils_2.0.3-0ubuntu1.14.04.1_amd64.deb' klibc-utils_2.0.3-0ubuntu1.14.04.1_amd64.deb 106972 MD5Sum:4e1676466b8275575a78545c8702ec80 -'http://us.archive.ubuntu.com/ubuntu/pool/main/k/klibc/libklibc_2.0.3-0ubuntu1.14.04.1_amd64.deb' libklibc_2.0.3-0ubuntu1.14.04.1_amd64.deb 40768 MD5Sum:733ef1d7bb06bc206417e6e32a95f3b7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libaio/libaio1_0.3.109-4_amd64.deb' libaio1_0.3.109-4_amd64.deb 6364 MD5Sum:cd9da2f52a5d7713e5080c5ed6916a41 -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-perl/libalgorithm-diff-perl_1.19.02-3_all.deb' libalgorithm-diff-perl_1.19.02-3_all.deb 49964 MD5Sum:7462f70e9e9b691ca4a4657371d6ba8e -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-xs-perl/libalgorithm-diff-xs-perl_0.04-2build4_amd64.deb' libalgorithm-diff-xs-perl_0.04-2build4_amd64.deb 12572 MD5Sum:a1bd654bf2b8f30d464a6f95225a0744 -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-merge-perl/libalgorithm-merge-perl_0.08-2_all.deb' libalgorithm-merge-perl_0.08-2_all.deb 12672 MD5Sum:bf1355aea7ab249fcd344cf0c692bc6c -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libasyncns/libasyncns0_0.8-4ubuntu2_amd64.deb' libasyncns0_0.8-4ubuntu2_amd64.deb 11886 MD5Sum:bf233bc958e37dab60c0f1ab7f8c6bf0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libc/libcaca/libcaca0_0.99.beta18-1ubuntu5_amd64.deb' libcaca0_0.99.beta18-1ubuntu5_amd64.deb 202162 MD5Sum:2532fc55507b526751257c826e6b1b43 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libd/libdrm/libdrm2_2.4.67-1ubuntu0.14.04.1_amd64.deb' libdrm2_2.4.67-1ubuntu0.14.04.1_amd64.deb 27134 MD5Sum:aa505cf02ae2d2a5398318ed1991af6a -'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libeatmydata/eatmydata_26-2_amd64.deb' eatmydata_26-2_amd64.deb 8034 MD5Sum:a12811bc18802ca88eaac1c361c49dd1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/liberror-perl/liberror-perl_0.17-1.1_all.deb' liberror-perl_0.17-1.1_all.deb 21062 MD5Sum:4988e40e65eeba03317411bfdd52b76c -'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libevent/libevent-2.0-5_2.0.21-stable-1ubuntu1.14.04.1_amd64.deb' libevent-2.0-5_2.0.21-stable-1ubuntu1.14.04.1_amd64.deb 126144 MD5Sum:66bae54dc127761b5d044d20a49c84c4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libf/libfile-fcntllock-perl/libfile-fcntllock-perl_0.14-2build1_amd64.deb' libfile-fcntllock-perl_0.14-2build1_amd64.deb 15932 MD5Sum:18813758778ece61bcdf84018218fc1d -'http://us.archive.ubuntu.com/ubuntu/pool/main/libg/libgcrypt11/libgcrypt11_1.5.3-2ubuntu4.4_amd64.deb' libgcrypt11_1.5.3-2ubuntu4.4_amd64.deb 238500 MD5Sum:ffa419347f7284b4a14701325bceed86 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libg/libgssglue/libgssglue1_0.4-2ubuntu1_amd64.deb' libgssglue1_0.4-2ubuntu1_amd64.deb 19710 MD5Sum:08250dff6de699fceff270123f609b49 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libi/libidn/libidn11_1.28-1ubuntu2.1_amd64.deb' libidn11_1.28-1ubuntu2.1_amd64.deb 94396 MD5Sum:bd25920b2fb45fd9c1055ff2c4dcd608 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg8-empty/libjpeg8_8c-2ubuntu8_amd64.deb' libjpeg8_8c-2ubuntu8_amd64.deb 2194 MD5Sum:e0f16286dd787b951ffa953987fdf6a7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg-turbo/libjpeg-turbo8_1.3.0-0ubuntu2_amd64.deb' libjpeg-turbo8_1.3.0-0ubuntu2_amd64.deb 104020 MD5Sum:9b8b32831e8332714737af0342f57b28 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnfsidmap/libnfsidmap2_0.25-5_amd64.deb' libnfsidmap2_0.25-5_amd64.deb 32182 MD5Sum:5e06543f26481fa549a1e017eec4ef36 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnl3/libnl-3-200_3.2.21-1ubuntu3_amd64.deb' libnl-3-200_3.2.21-1ubuntu3_amd64.deb 45652 MD5Sum:e80a3f4c5b08821194c2cac3a00bfdf3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnl3/libnl-genl-3-200_3.2.21-1ubuntu3_amd64.deb' libnl-genl-3-200_3.2.21-1ubuntu3_amd64.deb 10226 MD5Sum:9697116877182a3420e7c70099f81277 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libo/libogg/libogg0_1.3.1-1ubuntu1_amd64.deb' libogg0_1.3.1-1ubuntu1_amd64.deb 17036 MD5Sum:a6411133fd6d72d08bbcb265a7f31103 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libs/libsdl1.2/libsdl1.2debian_1.2.15-8ubuntu1.1_amd64.deb' libsdl1.2debian_1.2.15-8ubuntu1.1_amd64.deb 162322 MD5Sum:063b125221dda816ec3554eea53ce52e -'http://us.archive.ubuntu.com/ubuntu/pool/main/libs/libsndfile/libsndfile1_1.0.25-7ubuntu2.1_amd64.deb' libsndfile1_1.0.25-7ubuntu2.1_amd64.deb 136292 MD5Sum:a01199628faa5c1ec2b97c167c25c0e9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libt/libtasn1-6/libtasn1-6_3.4-3ubuntu0.4_amd64.deb' libtasn1-6_3.4-3ubuntu0.4_amd64.deb 43616 MD5Sum:59657d27d1a7e32e9549b5a21514d877 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libt/libtirpc/libtirpc1_0.2.2-5ubuntu2_amd64.deb' libtirpc1_0.2.2-5ubuntu2_amd64.deb 71258 MD5Sum:acc1c8e0345c8c3e53ba94a59a4729d8 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libt/libtool/libltdl7_2.4.2-1.7ubuntu1_amd64.deb' libltdl7_2.4.2-1.7ubuntu1_amd64.deb 35000 MD5Sum:ddeea7a0b4082abd4f746f46c8ccb48e -'http://us.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbis0a_1.3.2-1.3ubuntu1_amd64.deb' libvorbis0a_1.3.2-1.3ubuntu1_amd64.deb 87166 MD5Sum:e89e05f389fdaa1b834803a08c9213a4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbisenc2_1.3.2-1.3ubuntu1_amd64.deb' libvorbisenc2_1.3.2-1.3ubuntu1_amd64.deb 84546 MD5Sum:fbdffecfc0a3f0dc45ec2480f54ea251 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxi/libxi6_1.7.1.901-1ubuntu1.1_amd64.deb' libxi6_2%3a1.7.1.901-1ubuntu1.1_amd64.deb 27908 MD5Sum:3eec85a777d125eede2cd939b0c2101f -'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxml2/libxml2_2.9.1+dfsg1-3ubuntu4.8_amd64.deb' libxml2_2.9.1+dfsg1-3ubuntu4.8_amd64.deb 572698 MD5Sum:36c15eb271fcf8febdd62eb15f872633 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxrender/libxrender1_0.9.8-1build0.14.04.1_amd64.deb' libxrender1_1%3a0.9.8-1build0.14.04.1_amd64.deb 17878 MD5Sum:5a19f4d3486591f91c51d36d6e0208d0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxtst/libxtst6_1.2.2-1_amd64.deb' libxtst6_2%3a1.2.2-1_amd64.deb 14086 MD5Sum:2594435dcd76d6eec2ff3fb68a3d4e9d -'http://us.archive.ubuntu.com/ubuntu/pool/main/liby/libyaml/libyaml-0-2_0.1.4-3ubuntu3.1_amd64.deb' libyaml-0-2_0.1.4-3ubuntu3.1_amd64.deb 48066 MD5Sum:4dcc359331403252136be3490c923fc9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/lcms2/liblcms2-2_2.5-0ubuntu4.1_amd64.deb' liblcms2-2_2.5-0ubuntu4.1_amd64.deb 131338 MD5Sum:90a2cbf106072d361749c2750eea55b2 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-firmware/linux-firmware_1.127.22_all.deb' linux-firmware_1.127.22_all.deb 33190334 MD5Sum:7d5cef69c2cbe90206be4789892b8b94 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-libc-dev_3.13.0-96.143_amd64.deb' linux-libc-dev_3.13.0-96.143_amd64.deb 766976 MD5Sum:5dbbc222f0e988348bf40fd1371c9410 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-lts-wily/linux-headers-4.2.0-42_4.2.0-42.49~14.04.1_all.deb' linux-headers-4.2.0-42_4.2.0-42.49~14.04.1_all.deb 9599802 MD5Sum:55eef74bc3c3458313d306e56df65f66 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-lts-wily/linux-headers-4.2.0-42-generic_4.2.0-42.49~14.04.1_amd64.deb' linux-headers-4.2.0-42-generic_4.2.0-42.49~14.04.1_amd64.deb 780482 MD5Sum:c32a2b8b75dfcda202d294b96b862b8c -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-lts-wily/linux-image-4.2.0-42-generic_4.2.0-42.49~14.04.1_amd64.deb' linux-image-4.2.0-42-generic_4.2.0-42.49~14.04.1_amd64.deb 17227966 MD5Sum:0cc30b4dd72aa8c3b9834247633819a0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-lts-wily/linux-image-extra-4.2.0-42-generic_4.2.0-42.49~14.04.1_amd64.deb' linux-image-extra-4.2.0-42-generic_4.2.0-42.49~14.04.1_amd64.deb 38303496 MD5Sum:a88e74dd8270dfb67ddd5c6dfb55a060 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta-lts-wily/linux-generic-lts-wily_4.2.0.42.34_amd64.deb' linux-generic-lts-wily_4.2.0.42.34_amd64.deb 1798 MD5Sum:547387b997ce4b9dcad408ffcb54148f -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta-lts-wily/linux-headers-generic-lts-wily_4.2.0.42.34_amd64.deb' linux-headers-generic-lts-wily_4.2.0.42.34_amd64.deb 2294 MD5Sum:5ebb327d9c1c8651281feccc0a3a5157 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta-lts-wily/linux-image-generic-lts-wily_4.2.0.42.34_amd64.deb' linux-image-generic-lts-wily_4.2.0.42.34_amd64.deb 2318 MD5Sum:421cf8d6e11583bd2afcfea2ed303923 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/lsb/lsb-base_4.1+Debian11ubuntu6.2_all.deb' lsb-base_4.1+Debian11ubuntu6.2_all.deb 13260 MD5Sum:dac3d19e502c370ac880ca558d9a1a68 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/lsb/lsb-release_4.1+Debian11ubuntu6.2_all.deb' lsb-release_4.1+Debian11ubuntu6.2_all.deb 11640 MD5Sum:91771d82e34770615711d722a6779879 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/lzo2/liblzo2-2_2.06-1.2ubuntu1.1_amd64.deb' liblzo2-2_2.06-1.2ubuntu1.1_amd64.deb 46110 MD5Sum:b3e9733843fda9b2463a0745e7306092 -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/make-dfsg/make_3.81-8.2ubuntu3_amd64.deb' make_3.81-8.2ubuntu3_amd64.deb 119286 MD5Sum:6442fbef4450fc977fb1ab6297cf7797 -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/manpages/manpages-dev_3.54-1ubuntu1_all.deb' manpages-dev_3.54-1ubuntu1_all.deb 1819920 MD5Sum:8b108211126e2798112fbd55292e5690 -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/mpclib3/libmpc3_1.0.1-1ubuntu1_amd64.deb' libmpc3_1.0.1-1ubuntu1_amd64.deb 38442 MD5Sum:c5749c5428040f492bc9d00b0101b8a8 -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/mpfr4/libmpfr4_3.1.2-1_amd64.deb' libmpfr4_3.1.2-1_amd64.deb 202636 MD5Sum:3ff03e231bf643436f087da42faaad6d -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/msr-tools/msr-tools_1.3-2_amd64.deb' msr-tools_1.3-2_amd64.deb 10636 MD5Sum:5ffb50c3889cfccc901b940923d89e29 -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nfs-utils/nfs-common_1.2.8-6ubuntu1.2_amd64.deb' nfs-common_1%3a1.2.8-6ubuntu1.2_amd64.deb 180760 MD5Sum:64d83aabb28de942a6e367181ed580ca -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nspr/libnspr4_4.12-0ubuntu0.14.04.1_amd64.deb' libnspr4_2%3a4.12-0ubuntu0.14.04.1_amd64.deb 110434 MD5Sum:cff22f4863f0e8356900e6b26872a63c -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3_3.23-0ubuntu0.14.04.1_amd64.deb' libnss3_2%3a3.23-0ubuntu0.14.04.1_amd64.deb 1119284 MD5Sum:915f9fd9b0b0d18bbfe66f47774daec8 -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3-nssdb_3.23-0ubuntu0.14.04.1_all.deb' libnss3-nssdb_2%3a3.23-0ubuntu0.14.04.1_all.deb 10554 MD5Sum:7b4064d8bb5f8ca3f0aec63699666564 -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/ntp/ntpdate_4.2.6.p5+dfsg-3ubuntu2.14.04.10_amd64.deb' ntpdate_1%3a4.2.6.p5+dfsg-3ubuntu2.14.04.10_amd64.deb 57684 MD5Sum:5ea1ccebfd8172032dc68697d172b64c -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/numactl/libnuma1_2.0.9~rc5-1ubuntu3.14.04.2_amd64.deb' libnuma1_2.0.9~rc5-1ubuntu3.14.04.2_amd64.deb 20548 MD5Sum:ecc0effed2e7ac705b71f44f1d4b0cc4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openldap/libldap-2.4-2_2.4.31-1+nmu2ubuntu8.3_amd64.deb' libldap-2.4-2_2.4.31-1+nmu2ubuntu8.3_amd64.deb 153128 MD5Sum:1acf98546023415c32f6f556ca4b1a58 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-client_6.6p1-2ubuntu2.8_amd64.deb' openssh-client_1%3a6.6p1-2ubuntu2.8_amd64.deb 563832 MD5Sum:046d0a1f78ce350724ae14003e19a8da -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-server_6.6p1-2ubuntu2.8_amd64.deb' openssh-server_1%3a6.6p1-2ubuntu2.8_amd64.deb 321632 MD5Sum:d59b2822a05d802c74cd89f8fff9c60a -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-sftp-server_6.6p1-2ubuntu2.8_amd64.deb' openssh-sftp-server_1%3a6.6p1-2ubuntu2.8_amd64.deb 34174 MD5Sum:ce6873e6f0ae8f04106c8ad5fa6baf9e -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.0.0_1.0.1f-1ubuntu2.21_amd64.deb' libssl1.0.0_1.0.1f-1ubuntu2.21_amd64.deb 829700 MD5Sum:129f6409bcb3d5c30538d3a68efc5e99 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_1.0.1f-1ubuntu2.21_amd64.deb' openssl_1.0.1f-1ubuntu2.21_amd64.deb 489490 MD5Sum:b19cd50748d32dd7128777c8c2eda11b -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/opus/libopus0_1.1-0ubuntu1_amd64.deb' libopus0_1.1-0ubuntu1_amd64.deb 153146 MD5Sum:b611832d9ef83e451dff69c1c81d5d04 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pam/libpam0g_1.1.8-1ubuntu2.2_amd64.deb' libpam0g_1.1.8-1ubuntu2.2_amd64.deb 56072 MD5Sum:1273498c4f24df5a6514a8c43700c9d2 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pam/libpam-modules_1.1.8-1ubuntu2.2_amd64.deb' libpam-modules_1.1.8-1ubuntu2.2_amd64.deb 234422 MD5Sum:e709e588f41be2f59149374a1eb6c9cb -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pam/libpam-modules-bin_1.1.8-1ubuntu2.2_amd64.deb' libpam-modules-bin_1.1.8-1ubuntu2.2_amd64.deb 31164 MD5Sum:c6817859ed2a2e5f023a9d538e37daf0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pam/libpam-runtime_1.1.8-1ubuntu2.2_all.deb' libpam-runtime_1.1.8-1ubuntu2.2_all.deb 37766 MD5Sum:fa4d3d794c3259f1fc34a04d1e682bcf -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/patch/patch_2.7.1-4ubuntu2.3_amd64.deb' patch_2.7.1-4ubuntu2.3_amd64.deb 86356 MD5Sum:4f07a01b36e3a60a34c3bcef647894ae -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pcre3/libpcre3_8.31-2ubuntu2.3_amd64.deb' libpcre3_1%3a8.31-2ubuntu2.3_amd64.deb 144410 MD5Sum:8ffa3b01676dab2247991c847e7039d6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pcsc-lite/libpcsclite1_1.8.10-1ubuntu1_amd64.deb' libpcsclite1_1.8.10-1ubuntu1_amd64.deb 20938 MD5Sum:adece73e911ca3dbdd3925294c75afee -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl_5.18.2-2ubuntu1.1_amd64.deb' perl_5.18.2-2ubuntu1.1_amd64.deb 2647870 MD5Sum:c923b93fb9aa7f1ff97fcea2539bd8b9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl-base_5.18.2-2ubuntu1.1_amd64.deb' perl-base_5.18.2-2ubuntu1.1_amd64.deb 1146330 MD5Sum:d032a8ff7c2609d93af93e02aa7cf5ba -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl-modules_5.18.2-2ubuntu1.1_all.deb' perl-modules_5.18.2-2ubuntu1.1_all.deb 2673194 MD5Sum:75bfbc6a0725be5533d5920d031bb121 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pixman/libpixman-1-0_0.30.2-2ubuntu1.1_amd64.deb' libpixman-1-0_0.30.2-2ubuntu1.1_amd64.deb 225476 MD5Sum:2d12f5e47dad9b5f61299706413976da -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/prettytable/python-prettytable_0.7.2-2ubuntu2_all.deb' python-prettytable_0.7.2-2ubuntu2_all.deb 19966 MD5Sum:1532d286ecad16204509eca1e97b8c37 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pulseaudio/libpulse0_4.0-0ubuntu11.1_amd64.deb' libpulse0_1%3a4.0-0ubuntu11.1_amd64.deb 225440 MD5Sum:84213503252a6aec962b12cd170af23f -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pycurl/python3-pycurl_7.19.3-0ubuntu3_amd64.deb' python3-pycurl_7.19.3-0ubuntu3_amd64.deb 47494 MD5Sum:4a8692a3639a46f0c512f5d77f42ff16 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyserial/python-serial_2.6-1build1_all.deb' python-serial_2.6-1build1_all.deb 60088 MD5Sum:815adaf14f9c402d2d0507b1d99e7d71 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7_2.7.6-8ubuntu0.2_amd64.deb' libpython2.7_2.7.6-8ubuntu0.2_amd64.deb 1038642 MD5Sum:e52bac5d993bf5c8c60ef92b9e392603 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-dev_2.7.6-8ubuntu0.2_amd64.deb' libpython2.7-dev_2.7.6-8ubuntu0.2_amd64.deb 22007718 MD5Sum:8d59685b68713072a86e278b6b5b22ab -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7-dev_2.7.6-8ubuntu0.2_amd64.deb' python2.7-dev_2.7.6-8ubuntu0.2_amd64.deb 269106 MD5Sum:b329c89de034410c49eb9525597c11c6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.4/libpython3.4-minimal_3.4.3-1ubuntu1~14.04.4_amd64.deb' libpython3.4-minimal_3.4.3-1ubuntu1~14.04.4_amd64.deb 462462 MD5Sum:8365ac255bbc0035615006a20c178eca -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.4/libpython3.4-stdlib_3.4.3-1ubuntu1~14.04.4_amd64.deb' libpython3.4-stdlib_3.4.3-1ubuntu1~14.04.4_amd64.deb 1984448 MD5Sum:4c1a5efe2046b78fd3dfbe49c3c23995 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.4/python3.4_3.4.3-1ubuntu1~14.04.4_amd64.deb' python3.4_3.4.3-1ubuntu1~14.04.4_amd64.deb 177620 MD5Sum:f5b213484c94f39d7dc8b9187024d41e -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.4/python3.4-minimal_3.4.3-1ubuntu1~14.04.4_amd64.deb' python3.4-minimal_3.4.3-1ubuntu1~14.04.4_amd64.deb 1227040 MD5Sum:05dd645ea1fb413000aa407ca4f80b32 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-dev_2.7.5-5ubuntu3_amd64.deb' libpython-dev_2.7.5-5ubuntu3_amd64.deb 7078 MD5Sum:3b37a8ee5197b689d2fe472e81583e41 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-dev_2.7.5-5ubuntu3_amd64.deb' python-dev_2.7.5-5ubuntu3_amd64.deb 1166 MD5Sum:0fb9dbd4067f94dc4cd894cefc50fe47 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-json-patch/python-jsonpatch_1.3-4_all.deb' python-jsonpatch_1.3-4_all.deb 9088 MD5Sum:d1521e9621c4c751d164a6d979705a12 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-json-pointer/python-json-pointer_1.0-2build1_all.deb' python-json-pointer_1.0-2build1_all.deb 5158 MD5Sum:b0762e2a2192458adcbf70e6be02172d -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-oauth/python-oauth_1.0.1-3build2_all.deb' python-oauth_1.0.1-3build2_all.deb 12830 MD5Sum:e2c16c59e6242e3abb211a3e64297615 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python3-pkg-resources_3.3-1ubuntu2_all.deb' python3-pkg-resources_3.3-1ubuntu2_all.deb 31704 MD5Sum:e44cbc2a92ab2c53d01c7d54a79020f0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-pkg-resources_3.3-1ubuntu2_all.deb' python-pkg-resources_3.3-1ubuntu2_all.deb 61910 MD5Sum:d12cb222f33ac215006d472c63d3aeb8 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-setuptools_3.3-1ubuntu2_all.deb' python-setuptools_3.3-1ubuntu2_all.deb 230056 MD5Sum:095838ab2e8028796486463d62e5b88b -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-setuptools-whl_3.3-1ubuntu2_all.deb' python-setuptools-whl_3.3-1ubuntu2_all.deb 244386 MD5Sum:bed8daea8be2938af22a1bc7fdc0d9f1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-urllib3/python-urllib3-whl_1.7.1-1ubuntu4_all.deb' python-urllib3-whl_1.7.1-1ubuntu4_all.deb 64008 MD5Sum:5614ad88debd4c93441cc119f5a478a1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyyaml/python-yaml_3.10-4ubuntu0.1_amd64.deb' python-yaml_3.10-4ubuntu0.1_amd64.deb 101898 MD5Sum:3bbc120de69a86a8f0b996d722437fd4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/r/requests/python-requests-whl_2.2.1-1ubuntu0.3_all.deb' python-requests-whl_2.2.1-1ubuntu0.3_all.deb 227230 MD5Sum:d4a08ea174bf075523d7c045a5ef4544 -'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rpcbind/rpcbind_0.2.1-2ubuntu2.2_amd64.deb' rpcbind_0.2.1-2ubuntu2.2_amd64.deb 37056 MD5Sum:279a20e0acfea4036bce808ee12db789 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/sharutils/sharutils_4.14-1ubuntu1_amd64.deb' sharutils_1%3a4.14-1ubuntu1_amd64.deb 144824 MD5Sum:021cd2f95dd7fa1b4218d1caf50c882e -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/six/python-six-whl_1.5.2-1ubuntu1_all.deb' python-six-whl_1.5.2-1ubuntu1_all.deb 10502 MD5Sum:d8224e11a6bf8bc46d5649b4675fe057 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/snappy/libsnappy1_1.1.0-1ubuntu1_amd64.deb' libsnappy1_1.1.0-1ubuntu1_amd64.deb 11152 MD5Sum:6e75ed3aa224013957954c6671bead67 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/software-properties/python3-software-properties_0.92.37.7_all.deb' python3-software-properties_0.92.37.7_all.deb 19120 MD5Sum:00da7ba0cac32440cdd8c2137ca9771e -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/software-properties/software-properties-common_0.92.37.7_all.deb' software-properties-common_0.92.37.7_all.deb 9356 MD5Sum:195890432324c90ea6a0e1c332f953d6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/libstrongswan_5.1.2-0ubuntu2.4_amd64.deb' libstrongswan_5.1.2-0ubuntu2.4_amd64.deb 1447810 MD5Sum:7e37035cdbbe437917089ef7ea44c4f7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan_5.1.2-0ubuntu2.4_all.deb' strongswan_5.1.2-0ubuntu2.4_all.deb 29718 MD5Sum:cb287cde0028c9b984ba4642ed243592 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-ike_5.1.2-0ubuntu2.4_amd64.deb' strongswan-ike_5.1.2-0ubuntu2.4_amd64.deb 1199256 MD5Sum:e72cb89680f9d7d257018c49531b14db -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-plugin-openssl_5.1.2-0ubuntu2.4_amd64.deb' strongswan-plugin-openssl_5.1.2-0ubuntu2.4_amd64.deb 188634 MD5Sum:536e99bc490a6cab86233f811620c5f7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-starter_5.1.2-0ubuntu2.4_amd64.deb' strongswan-starter_5.1.2-0ubuntu2.4_amd64.deb 708252 MD5Sum:1d6ee974cb75ddb9890b67951e6b2f23 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libpam-systemd_204-5ubuntu20.19_amd64.deb' libpam-systemd_204-5ubuntu20.19_amd64.deb 25544 MD5Sum:3a8ab37af48ffcc23f9bef72e80f59c8 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libsystemd-daemon0_204-5ubuntu20.19_amd64.deb' libsystemd-daemon0_204-5ubuntu20.19_amd64.deb 10194 MD5Sum:b3c2675173f71a987bc78120447beef2 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libsystemd-journal0_204-5ubuntu20.19_amd64.deb' libsystemd-journal0_204-5ubuntu20.19_amd64.deb 50064 MD5Sum:f91fbd1ec6fb416186a453b2f9e4cf8a -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libsystemd-login0_204-5ubuntu20.19_amd64.deb' libsystemd-login0_204-5ubuntu20.19_amd64.deb 27206 MD5Sum:f40f53f393bd464b4cb30e51b4db6707 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libudev1_204-5ubuntu20.19_amd64.deb' libudev1_204-5ubuntu20.19_amd64.deb 33776 MD5Sum:efaa66441569692a31cf0cdc3b2b1dd8 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/systemd-services_204-5ubuntu20.19_amd64.deb' systemd-services_204-5ubuntu20.19_amd64.deb 197024 MD5Sum:c005d7f4fcfc1299bbab853c4897c7a7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/udev_204-5ubuntu20.19_amd64.deb' udev_204-5ubuntu20.19_amd64.deb 734516 MD5Sum:f90937775fbbbe862974abe0332b6cb5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/t/tzdata/tzdata_2016f-0ubuntu0.14.04_all.deb' tzdata_2016f-0ubuntu0.14.04_all.deb 166416 MD5Sum:8853ac8e274c495758674be2ca67aa0d -'http://us.archive.ubuntu.com/ubuntu/pool/main/u/unattended-upgrades/unattended-upgrades_0.82.1ubuntu2.4_all.deb' unattended-upgrades_0.82.1ubuntu2.4_all.deb 25856 MD5Sum:c635e645c9d91eb2d4d182d97098150a -'http://us.archive.ubuntu.com/ubuntu/pool/main/u/update-manager/python3-update-manager_0.196.21_all.deb' python3-update-manager_1%3a0.196.21_all.deb 32038 MD5Sum:ab456fa7a5319d23bf8f0d1049aeb060 -'http://us.archive.ubuntu.com/ubuntu/pool/main/u/update-manager/update-manager-core_0.196.21_all.deb' update-manager-core_1%3a0.196.21_all.deb 8210 MD5Sum:fba7ecb1a1e70a4382a8176d37186865 -'http://us.archive.ubuntu.com/ubuntu/pool/main/u/usbredir/libusbredirparser1_0.6-2ubuntu1.1_amd64.deb' libusbredirparser1_0.6-2ubuntu1.1_amd64.deb 13286 MD5Sum:60574ac64168133bd8a974d58b7e9c5e -'http://us.archive.ubuntu.com/ubuntu/pool/main/u/usbutils/usbutils_007-2ubuntu1.1_amd64.deb' usbutils_1%3a007-2ubuntu1.1_amd64.deb 205284 MD5Sum:8dd05d22ed0ab249bfed02b3266e9bb5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/w/wget/wget_1.15-1ubuntu1.14.04.2_amd64.deb' wget_1.15-1ubuntu1.14.04.2_amd64.deb 270522 MD5Sum:5d8104c0b75bb8bdb1984457082e7bb8 -'http://us.archive.ubuntu.com/ubuntu/pool/main/w/wheel/python-wheel_0.24.0-1~ubuntu1_all.deb' python-wheel_0.24.0-1~ubuntu1_all.deb 44680 MD5Sum:a1f3817d6dc2aa707d1ac2a075fabf37 -'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xen/libxen-4.4_4.4.2-0ubuntu0.14.04.6_amd64.deb' libxen-4.4_4.4.2-0ubuntu0.14.04.6_amd64.deb 273704 MD5Sum:01902042887b57bb12591a64a45c9bd7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xen/libxenstore3.0_4.4.2-0ubuntu0.14.04.6_amd64.deb' libxenstore3.0_4.4.2-0ubuntu0.14.04.6_amd64.deb 19354 MD5Sum:2dd53c140e4d4c58d57f25c82c3cc57a -'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xorg/x11-common_7.7+1ubuntu8.1_all.deb' x11-common_1%3a7.7+1ubuntu8.1_all.deb 49504 MD5Sum:62ee5ada95d77863753c3c1f24455810 -'http://us.archive.ubuntu.com/ubuntu/pool/main/y/yajl/libyajl2_2.0.4-4_amd64.deb' libyajl2_2.0.4-4_amd64.deb 20834 MD5Sum:d7241d878ea65cbed080196411ec92c2 -'http://us.archive.ubuntu.com/ubuntu/pool/universe/a/aufs-tools/aufs-tools_3.2+20130722-1.1_amd64.deb' aufs-tools_1%3a3.2+20130722-1.1_amd64.deb 92274 MD5Sum:971d9f80df61d9398f7356e60e1c3723 -'http://us.archive.ubuntu.com/ubuntu/pool/universe/c/chardet-whl/python-chardet-whl_2.2.1-2~ubuntu1_all.deb' python-chardet-whl_2.2.1-2~ubuntu1_all.deb 170254 MD5Sum:d882e156f6af98454a96cae30ae58784 -'http://us.archive.ubuntu.com/ubuntu/pool/universe/d/distlib/python-distlib_0.1.8-1ubuntu1_all.deb' python-distlib_0.1.8-1ubuntu1_all.deb 112604 MD5Sum:b3288d6d230096c11d69ebe18c44ed83 -'http://us.archive.ubuntu.com/ubuntu/pool/universe/d/distlib/python-distlib-whl_0.1.8-1ubuntu1_all.deb' python-distlib-whl_0.1.8-1ubuntu1_all.deb 140312 MD5Sum:93792a4c21365ded4316fdb5bc895dd5 -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-colorama/python-colorama_0.2.5-0.1ubuntu2_all.deb' python-colorama_0.2.5-0.1ubuntu2_all.deb 18374 MD5Sum:b06bc963962c3f3c97f5d1da53a56f3f -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-colorama/python-colorama-whl_0.2.5-0.1ubuntu2_all.deb' python-colorama-whl_0.2.5-0.1ubuntu2_all.deb 18212 MD5Sum:2c4ecb5b3fc49ae20510d3aac886b66a -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-pip/python-pip_1.5.4-1ubuntu4_all.deb' python-pip_1.5.4-1ubuntu4_all.deb 97320 MD5Sum:2f9893e68cba11320605bbc554000b2f -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-pip/python-pip-whl_1.5.4-1ubuntu4_all.deb' python-pip-whl_1.5.4-1ubuntu4_all.deb 110990 MD5Sum:45dd75216ca01ef0758e98b89d88093f -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/python-virtualenv_1.11.4-1ubuntu1_all.deb' python-virtualenv_1.11.4-1ubuntu1_all.deb 1485420 MD5Sum:6df1003bf2392cd14f1a2710ba8cf5d5 +'http://ppa.launchpad.net/openjdk-r/ppa/ubuntu/pool/main/o/openjdk-8/openjdk-8-jdk-headless_8u91-b14-0ubuntu4~14.04_amd64.deb' openjdk-8-jdk-headless_8u91-b14-0ubuntu4~14.04_amd64.deb 8164072 MD5Sum:41d625948a23f74c53f74e33f6719d8c +'http://ppa.launchpad.net/openjdk-r/ppa/ubuntu/pool/main/o/openjdk-8/openjdk-8-jre-headless_8u91-b14-0ubuntu4~14.04_amd64.deb' openjdk-8-jre-headless_8u91-b14-0ubuntu4~14.04_amd64.deb 26636868 MD5Sum:68d5c0db3b0cc5e3683d6a00abdc6189 +'http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu/pool/main/libs/libseccomp/libseccomp2_2.1.1-1+syseleven1_amd64.deb' libseccomp2_2.1.1-1+syseleven1_amd64.deb 26344 MD5Sum:3ceb99432357bce67ba151a859aa60da +'http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu/pool/main/q/qemu/qemu-system-common_2.2.1+dfsg-0+syseleven4_amd64.deb' qemu-system-common_1%3a2.2.1+dfsg-0+syseleven4_amd64.deb 294740 MD5Sum:ebf2345f6496e4da73098d7f516bbf8b +'http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu/pool/main/q/qemu/qemu-system-x86_2.2.1+dfsg-0+syseleven4_amd64.deb' qemu-system-x86_1%3a2.2.1+dfsg-0+syseleven4_amd64.deb 2181682 MD5Sum:6b43a70d002ba1a46f9b8e12e591c849 +'http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu/pool/main/q/qemu/qemu-utils_2.2.1+dfsg-0+syseleven4_amd64.deb' qemu-utils_1%3a2.2.1+dfsg-0+syseleven4_amd64.deb 518404 MD5Sum:20bc3e2ff37af86bd8e61c96e6569672 +'http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu/pool/main/s/seabios/seabios_1.7.5-1+syseleven1_all.deb' seabios_1.7.5-1+syseleven1_all.deb 111880 MD5Sum:0cd53324914bb2e198cefef23c4771a0 +'http://ppa.launchpad.net/syseleven-platform/virtualization/ubuntu/pool/main/s/spice/libspice-server1_0.12.5-1+syseleven1_amd64.deb' libspice-server1_0.12.5-1+syseleven1_amd64.deb 326044 MD5Sum:7574c7ba91816a2739e8489148c016bb +'https://apt.dockerproject.org/repo/pool/main/d/docker-engine/docker-engine_1.12.1-0~trusty_amd64.deb' docker-engine_1.12.1-0~trusty_amd64.deb 19383142 MD5Sum:99bd6619e227ce413e0163a7586a919f +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/acl/acl_2.2.52-1_amd64.deb' acl_2.2.52-1_amd64.deb 43790 MD5Sum:ac8db6aa2095dfd83758db34cf31285a +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2_1.0.27.2-3ubuntu7_amd64.deb' libasound2_1.0.27.2-3ubuntu7_amd64.deb 327374 MD5Sum:68d7619e0a70770c5feef628f8296409 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2-data_1.0.27.2-3ubuntu7_all.deb' libasound2-data_1.0.27.2-3ubuntu7_all.deb 26264 MD5Sum:1b78d6d03ed4303e843ba2c5bae3bc53 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/apt_1.0.1ubuntu2.14_amd64.deb' apt_1.0.1ubuntu2.14_amd64.deb 954540 MD5Sum:8615062e5fa0e1c9140bc99443f93e57 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/apt-transport-https_1.0.1ubuntu2.14_amd64.deb' apt-transport-https_1.0.1ubuntu2.14_amd64.deb 25042 MD5Sum:de9d0feaaf95f9203a4e6050fcc838a1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/apt-utils_1.0.1ubuntu2.14_amd64.deb' apt-utils_1.0.1ubuntu2.14_amd64.deb 171560 MD5Sum:9a67fdeca283e5fe14374becd459eacc +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/libapt-inst1.5_1.0.1ubuntu2.14_amd64.deb' libapt-inst1.5_1.0.1ubuntu2.14_amd64.deb 58610 MD5Sum:65bd48b1df912735bd0f370ee7d85fac +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/libapt-pkg4.12_1.0.1ubuntu2.14_amd64.deb' libapt-pkg4.12_1.0.1ubuntu2.14_amd64.deb 637710 MD5Sum:76ed008847b63af01ff64d217487f7de +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-client3_0.6.31-4ubuntu1.1_amd64.deb' libavahi-client3_0.6.31-4ubuntu1.1_amd64.deb 25136 MD5Sum:a768c3a502a204fca430f98fab12d676 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-common3_0.6.31-4ubuntu1.1_amd64.deb' libavahi-common3_0.6.31-4ubuntu1.1_amd64.deb 21738 MD5Sum:ddf978df5cbc75ad174cd66db0d90846 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-common-data_0.6.31-4ubuntu1.1_amd64.deb' libavahi-common-data_0.6.31-4ubuntu1.1_amd64.deb 21242 MD5Sum:3878bcc211212dfe7158765344638d0f +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/base-files/base-files_7.2ubuntu5.5_amd64.deb' base-files_7.2ubuntu5.5_amd64.deb 67454 MD5Sum:a5320f578f4ccd54956bc3ae943f5b4b +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bash-completion/bash-completion_2.1-4ubuntu0.2_all.deb' bash-completion_1%3a2.1-4ubuntu0.2_all.deb 153330 MD5Sum:3283490e6717d124ea90a34ba2a2877c +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/bind9-host_9.9.5.dfsg-3ubuntu0.9_amd64.deb' bind9-host_1%3a9.9.5.dfsg-3ubuntu0.9_amd64.deb 46584 MD5Sum:f3e016d42d80bdf19a6ea1058af22ebb +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/dnsutils_9.9.5.dfsg-3ubuntu0.9_amd64.deb' dnsutils_1%3a9.9.5.dfsg-3ubuntu0.9_amd64.deb 96950 MD5Sum:36393452d82b4a8f8738d0494198263f +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libbind9-90_9.9.5.dfsg-3ubuntu0.9_amd64.deb' libbind9-90_1%3a9.9.5.dfsg-3ubuntu0.9_amd64.deb 21992 MD5Sum:a6dde46ac18b6cc63b2bbd5d9ab06b98 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libdns100_9.9.5.dfsg-3ubuntu0.9_amd64.deb' libdns100_1%3a9.9.5.dfsg-3ubuntu0.9_amd64.deb 645262 MD5Sum:46fae0a00134f84ea51b4000620a3741 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libisc95_9.9.5.dfsg-3ubuntu0.9_amd64.deb' libisc95_1%3a9.9.5.dfsg-3ubuntu0.9_amd64.deb 147558 MD5Sum:a242941d225a139b1a9bdd2d20b89767 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libisccc90_9.9.5.dfsg-3ubuntu0.9_amd64.deb' libisccc90_1%3a9.9.5.dfsg-3ubuntu0.9_amd64.deb 15676 MD5Sum:fc56e88992ffee19adeeb7a549a3fc38 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libisccfg90_9.9.5.dfsg-3ubuntu0.9_amd64.deb' libisccfg90_1%3a9.9.5.dfsg-3ubuntu0.9_amd64.deb 35990 MD5Sum:05b4704141a800d4385f68413ed0d265 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/liblwres90_9.9.5.dfsg-3ubuntu0.9_amd64.deb' liblwres90_1%3a9.9.5.dfsg-3ubuntu0.9_amd64.deb 32684 MD5Sum:3b70ee976342c3e3399c25c7f21b866c +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/binutils/binutils_2.24-5ubuntu14.1_amd64.deb' binutils_2.24-5ubuntu14.1_amd64.deb 2080900 MD5Sum:85dd95077b946a274f9814639eba4d06 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/biosdevname/biosdevname_0.4.1-0ubuntu6.3_amd64.deb' biosdevname_0.4.1-0ubuntu6.3_amd64.deb 20284 MD5Sum:bc837d60b1c558c6424309a446420b0d +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bluez/libbluetooth3_4.101-0ubuntu13.1_amd64.deb' libbluetooth3_4.101-0ubuntu13.1_amd64.deb 53478 MD5Sum:0577a4e8b377f3751b018494096df9e4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.54/libboost-system1.54.0_1.54.0-4ubuntu3.1_amd64.deb' libboost-system1.54.0_1.54.0-4ubuntu3.1_amd64.deb 10128 MD5Sum:2a5872be9fcc3cc0a51d9ec0d42c41a7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.54/libboost-thread1.54.0_1.54.0-4ubuntu3.1_amd64.deb' libboost-thread1.54.0_1.54.0-4ubuntu3.1_amd64.deb 26542 MD5Sum:2e7b4afdd0d85037864a2c3e3ef19999 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bridge-utils/bridge-utils_1.5-6ubuntu2_amd64.deb' bridge-utils_1.5-6ubuntu2_amd64.deb 29192 MD5Sum:23f37038baab928f276fb1aa2fd0a6c2 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/brltty/libbrlapi0.6_5.0-2ubuntu2_amd64.deb' libbrlapi0.6_5.0-2ubuntu2_amd64.deb 20910 MD5Sum:d0072983318e559dc57fea88c494ed33 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/build-essential/build-essential_11.6ubuntu6_amd64.deb' build-essential_11.6ubuntu6_amd64.deb 4838 MD5Sum:6fa3d082885a7440d512236685cd24fd +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ca-certificates/ca-certificates_20160104ubuntu0.14.04.1_all.deb' ca-certificates_20160104ubuntu0.14.04.1_all.deb 189806 MD5Sum:e594e76f225119f35f4bc3266d7ef758 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ca-certificates-java/ca-certificates-java_20130815ubuntu1_all.deb' ca-certificates-java_20130815ubuntu1_all.deb 13390 MD5Sum:efc4948adfc7855968db71d52b181af0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ceph/librados2_0.80.11-0ubuntu1.14.04.1_amd64.deb' librados2_0.80.11-0ubuntu1.14.04.1_amd64.deb 1430556 MD5Sum:88d1b2079b7bd1a9a2d99e05fc88bf02 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ceph/librbd1_0.80.11-0ubuntu1.14.04.1_amd64.deb' librbd1_0.80.11-0ubuntu1.14.04.1_amd64.deb 322958 MD5Sum:684055975b3f6d7f9cbf42afc720989d +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cgroup-lite/cgroup-lite_1.9_all.deb' cgroup-lite_1.9_all.deb 3918 MD5Sum:fe1749ba83aaf6d4f3e87ccdbc3581d4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cheetah/python-cheetah_2.4.4-3.fakesyncbuild1_amd64.deb' python-cheetah_2.4.4-3.fakesyncbuild1_amd64.deb 143868 MD5Sum:800d75a71e9022b10c40f6019d7fa69d +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloog/libcloog-isl4_0.18.2-1_amd64.deb' libcloog-isl4_0.18.2-1_amd64.deb 57502 MD5Sum:da71de63b0e24eb02afb817c0b285d6a +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloud-init/cloud-init_0.7.5-0ubuntu1.20_all.deb' cloud-init_0.7.5-0ubuntu1.20_all.deb 198190 MD5Sum:fc64f334044286dc0e120a78d207321a +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloud-utils/cloud-guest-utils_0.27-0ubuntu9.2_all.deb' cloud-guest-utils_0.27-0ubuntu9.2_all.deb 13782 MD5Sum:dbdad01ef9b50575b3bbbdc8257c620a +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/configobj/python-configobj_4.7.2+ds-5build1_all.deb' python-configobj_4.7.2+ds-5build1_all.deb 174154 MD5Sum:e22c1f8dfb0ca0d36441c3166639beaa +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/coreutils/coreutils_8.21-1ubuntu5.4_amd64.deb' coreutils_8.21-1ubuntu5.4_amd64.deb 1090622 MD5Sum:10a2318be86f38a6ed113e16aabaa76b +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cpio/cpio_2.11+dfsg-1ubuntu1.2_amd64.deb' cpio_2.11+dfsg-1ubuntu1.2_amd64.deb 73806 MD5Sum:8c382d99c773b3af31664e587b84a6b9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cpu-checker/cpu-checker_0.7-0ubuntu4_amd64.deb' cpu-checker_0.7-0ubuntu4_amd64.deb 6834 MD5Sum:4369a69e41e5b78ab7a4623405455443 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cups/libcups2_1.7.2-0ubuntu1.7_amd64.deb' libcups2_1.7.2-0ubuntu1.7_amd64.deb 178512 MD5Sum:44573174451bfc3da06be711c65e6de9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/curl/libcurl3-gnutls_7.35.0-1ubuntu2.9_amd64.deb' libcurl3-gnutls_7.35.0-1ubuntu2.9_amd64.deb 165376 MD5Sum:e488d09073d5e80d6553577e0bdabc73 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/device-tree-compiler/libfdt1_1.4.0+dfsg-1_amd64.deb' libfdt1_1.4.0+dfsg-1_amd64.deb 15678 MD5Sum:5dd80e05348eec241f62ff8dd7d2e8f2 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dkms/dkms_2.2.0.3-1.1ubuntu5.14.04.8_all.deb' dkms_2.2.0.3-1.1ubuntu5.14.04.8_all.deb 65706 MD5Sum:78d69493f928b92cb52f2ec579cd37d0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dosfstools/dosfstools_3.0.26-1ubuntu0.1_amd64.deb' dosfstools_3.0.26-1ubuntu0.1_amd64.deb 60054 MD5Sum:1fc4609e8ec1911daa051415079a5afe +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg_1.17.5ubuntu5.7_amd64.deb' dpkg_1.17.5ubuntu5.7_amd64.deb 1956162 MD5Sum:1469d184f821ab4d4e179c1c8d2be5a7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg-dev_1.17.5ubuntu5.7_all.deb' dpkg-dev_1.17.5ubuntu5.7_all.deb 726244 MD5Sum:c1d73ee78c457f5f557c0cd4340fd5d3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/libdpkg-perl_1.17.5ubuntu5.7_all.deb' libdpkg-perl_1.17.5ubuntu5.7_all.deb 179134 MD5Sum:7f0c96b6386a43c1caa731d15f1f5fe4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/e/eglibc/libc6_2.19-0ubuntu6.9_amd64.deb' libc6_2.19-0ubuntu6.9_amd64.deb 4716976 MD5Sum:422dff6f1563aa40a0ab3ea2a9509025 +'http://us.archive.ubuntu.com/ubuntu/pool/main/e/eglibc/libc6-dev_2.19-0ubuntu6.9_amd64.deb' libc6-dev_2.19-0ubuntu6.9_amd64.deb 1910130 MD5Sum:f4971e129e81195e8445a4a5f1bb1123 +'http://us.archive.ubuntu.com/ubuntu/pool/main/e/eglibc/libc-bin_2.19-0ubuntu6.9_amd64.deb' libc-bin_2.19-0ubuntu6.9_amd64.deb 1164992 MD5Sum:f3b274ddffbb6e5dbab2aa0fa2559dbb +'http://us.archive.ubuntu.com/ubuntu/pool/main/e/eglibc/libc-dev-bin_2.19-0ubuntu6.9_amd64.deb' libc-dev-bin_2.19-0ubuntu6.9_amd64.deb 68992 MD5Sum:aa72bd06ea171705087d6f090a2cc8a6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/e/eglibc/multiarch-support_2.19-0ubuntu6.9_amd64.deb' multiarch-support_2.19-0ubuntu6.9_amd64.deb 4484 MD5Sum:663b9032a963a646537e10c2bd54f02e +'http://us.archive.ubuntu.com/ubuntu/pool/main/e/expat/libexpat1_2.1.0-4ubuntu1.3_amd64.deb' libexpat1_2.1.0-4ubuntu1.3_amd64.deb 71134 MD5Sum:da2dc3ee31d9aac4ee3689927084e966 +'http://us.archive.ubuntu.com/ubuntu/pool/main/e/expat/libexpat1-dev_2.1.0-4ubuntu1.3_amd64.deb' libexpat1-dev_2.1.0-4ubuntu1.3_amd64.deb 115202 MD5Sum:2140f6e7fcaeb17164bb72b47836dc0b +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/fakeroot_1.20-3ubuntu2_amd64.deb' fakeroot_1.20-3ubuntu2_amd64.deb 55026 MD5Sum:fad29881d632a463f5235f399fa65a14 +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/libfakeroot_1.20-3ubuntu2_amd64.deb' libfakeroot_1.20-3ubuntu2_amd64.deb 25392 MD5Sum:856c7401d7d5a63ea231f706c18d9261 +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/flac/libflac8_1.3.0-2ubuntu0.14.04.1_amd64.deb' libflac8_1.3.0-2ubuntu0.14.04.1_amd64.deb 80170 MD5Sum:bbd48c917a12d425f0e14873575bc64c +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fontconfig/fontconfig-config_2.11.0-0ubuntu4.2_all.deb' fontconfig-config_2.11.0-0ubuntu4.2_all.deb 47424 MD5Sum:0810d79c48f4cc873a73a721b6f51806 +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fontconfig/libfontconfig1_2.11.0-0ubuntu4.2_amd64.deb' libfontconfig1_2.11.0-0ubuntu4.2_amd64.deb 123368 MD5Sum:1ca4767d44771ef7e9e5b29c27738f69 +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fonts-dejavu/fonts-dejavu-core_2.34-1ubuntu1_all.deb' fonts-dejavu-core_2.34-1ubuntu1_all.deb 1024460 MD5Sum:7167c133d8ec713c90fc64faab927994 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/cpp-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb' cpp-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb 4595210 MD5Sum:c87a404428865790862aeb6195811066 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/g++-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb' g++-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb 18134574 MD5Sum:ffc4c3bc3fe036fd18e79399caea1586 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/gcc-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb' gcc-4.8_4.8.4-2ubuntu1~14.04.3_amd64.deb 5046702 MD5Sum:c53635e53f577687409b4c3c93f4da80 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/gcc-4.8-base_4.8.4-2ubuntu1~14.04.3_amd64.deb' gcc-4.8-base_4.8.4-2ubuntu1~14.04.3_amd64.deb 16192 MD5Sum:691b4cb367c62b79511541a3cee41fda +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libasan0_4.8.4-2ubuntu1~14.04.3_amd64.deb' libasan0_4.8.4-2ubuntu1~14.04.3_amd64.deb 63060 MD5Sum:ff04bb046aeec86af2bb90c5d90a166c +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libatomic1_4.8.4-2ubuntu1~14.04.3_amd64.deb' libatomic1_4.8.4-2ubuntu1~14.04.3_amd64.deb 8636 MD5Sum:ec6ce0fb6e66e8b8c95534ab9e77a67e +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libgcc-4.8-dev_4.8.4-2ubuntu1~14.04.3_amd64.deb' libgcc-4.8-dev_4.8.4-2ubuntu1~14.04.3_amd64.deb 1688000 MD5Sum:69ff74311eecda1487d0f96b14af0b7c +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libgomp1_4.8.4-2ubuntu1~14.04.3_amd64.deb' libgomp1_4.8.4-2ubuntu1~14.04.3_amd64.deb 23124 MD5Sum:8f95195693e2cbb56825fd9b2b9ffca0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libitm1_4.8.4-2ubuntu1~14.04.3_amd64.deb' libitm1_4.8.4-2ubuntu1~14.04.3_amd64.deb 28506 MD5Sum:52e717ed8662a3986997412f42abc297 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libquadmath0_4.8.4-2ubuntu1~14.04.3_amd64.deb' libquadmath0_4.8.4-2ubuntu1~14.04.3_amd64.deb 126028 MD5Sum:f541cc61c3feaa74098bdb9970ed12b6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libstdc++-4.8-dev_4.8.4-2ubuntu1~14.04.3_amd64.deb' libstdc++-4.8-dev_4.8.4-2ubuntu1~14.04.3_amd64.deb 1052564 MD5Sum:7657e54922455ae36c7b2f7228427aec +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libstdc++6_4.8.4-2ubuntu1~14.04.3_amd64.deb' libstdc++6_4.8.4-2ubuntu1~14.04.3_amd64.deb 258956 MD5Sum:3fe9099e0064fa8030f047ff38e075c2 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-4.8/libtsan0_4.8.4-2ubuntu1~14.04.3_amd64.deb' libtsan0_4.8.4-2ubuntu1~14.04.3_amd64.deb 94872 MD5Sum:c4232ca2be66b95d74e8823a9868a9b4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/cpp_4.8.2-1ubuntu6_amd64.deb' cpp_4%3a4.8.2-1ubuntu6_amd64.deb 27452 MD5Sum:2ced23b24cf068b16b5a69222506fd79 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/g++_4.8.2-1ubuntu6_amd64.deb' g++_4%3a4.8.2-1ubuntu6_amd64.deb 1490 MD5Sum:7332a4e9116b821e167a3d0236ca413a +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/gcc_4.8.2-1ubuntu6_amd64.deb' gcc_4%3a4.8.2-1ubuntu6_amd64.deb 5098 MD5Sum:83b25d71df6df1c47a4b983596896f0b +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gdisk/gdisk_0.8.8-1ubuntu0.1_amd64.deb' gdisk_0.8.8-1ubuntu0.1_amd64.deb 185450 MD5Sum:6e9ed16eaca8d87dc22cf4918f95cb2c +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/git/git_1.9.1-1ubuntu0.3_amd64.deb' git_1%3a1.9.1-1ubuntu0.3_amd64.deb 2585532 MD5Sum:7ae18fa4b16c33b3ed506e23e7f26779 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/git/git-man_1.9.1-1ubuntu0.3_all.deb' git-man_1%3a1.9.1-1ubuntu0.3_all.deb 699150 MD5Sum:b9614019a1917fad0ff0edc6ddd53b91 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gmp/libgmp10_5.1.3+dfsg-1ubuntu1_amd64.deb' libgmp10_2%3a5.1.3+dfsg-1ubuntu1_amd64.deb 218280 MD5Sum:5a25bb81aa2e0ca83e2d349d58b435d5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnupg/gnupg_1.4.16-1ubuntu2.4_amd64.deb' gnupg_1.4.16-1ubuntu2.4_amd64.deb 610898 MD5Sum:b8819f1911f0fb6c0d579fe6d4206ffe +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnupg/gpgv_1.4.16-1ubuntu2.4_amd64.deb' gpgv_1.4.16-1ubuntu2.4_amd64.deb 160862 MD5Sum:40d9f14699dce15004e902f6be32a9ae +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnutls26/libgnutls26_2.12.23-12ubuntu2.5_amd64.deb' libgnutls26_2.12.23-12ubuntu2.5_amd64.deb 393294 MD5Sum:9e6ad9b80855df0f9b74ec18b9fe860d +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnutls26/libgnutls-openssl27_2.12.23-12ubuntu2.5_amd64.deb' libgnutls-openssl27_2.12.23-12ubuntu2.5_amd64.deb 18364 MD5Sum:77d399ac308dd0e9a58acc30e8959e76 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub2-common_2.02~beta2-9ubuntu1.12_amd64.deb' grub2-common_2.02~beta2-9ubuntu1.12_amd64.deb 501008 MD5Sum:3c068825f6f0dd3d8654a718fc8b2cd3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-common_2.02~beta2-9ubuntu1.12_amd64.deb' grub-common_2.02~beta2-9ubuntu1.12_amd64.deb 1680752 MD5Sum:67b46c687140d18dc9edf4e1f549af7e +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-pc_2.02~beta2-9ubuntu1.12_amd64.deb' grub-pc_2.02~beta2-9ubuntu1.12_amd64.deb 173256 MD5Sum:28e94511012d72668441add81189bbd9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-pc-bin_2.02~beta2-9ubuntu1.12_amd64.deb' grub-pc-bin_2.02~beta2-9ubuntu1.12_amd64.deb 880014 MD5Sum:e8f12a770ace294ee6add1e06368cc7d +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/html5lib/python-html5lib_0.999-3~ubuntu1_all.deb' python-html5lib_0.999-3~ubuntu1_all.deb 83470 MD5Sum:93c4140d32e1addb8231a3e0be557c93 +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/html5lib/python-html5lib-whl_0.999-3~ubuntu1_all.deb' python-html5lib-whl_0.999-3~ubuntu1_all.deb 109460 MD5Sum:bc6bd5baa70ace380513925f749857fa +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu52_52.1-3ubuntu0.4_amd64.deb' libicu52_52.1-3ubuntu0.4_amd64.deb 6751826 MD5Sum:ed4da162328dc75beb75e38ca291c959 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/ifupdown/ifupdown_0.7.47.2ubuntu4.4_amd64.deb' ifupdown_0.7.47.2ubuntu4.4_amd64.deb 53092 MD5Sum:49c7118f0bd254b1196363ad727dcde7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools_0.103ubuntu4.4_all.deb' initramfs-tools_0.103ubuntu4.4_all.deb 44458 MD5Sum:24696286c72a6d314384184bcf1064fc +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools-bin_0.103ubuntu4.4_amd64.deb' initramfs-tools-bin_0.103ubuntu4.4_amd64.deb 9134 MD5Sum:ccf6ddbf3affccb61c18a6f5e1ab1b3c +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/ipxe/ipxe-qemu_1.0.0+git-20131111.c3d1e78-2ubuntu1.1_all.deb' ipxe-qemu_1.0.0+git-20131111.c3d1e78-2ubuntu1.1_all.deb 509898 MD5Sum:2ed810c34ce0682174eb97461673c00e +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isc-dhcp/isc-dhcp-client_4.2.4-7ubuntu12.7_amd64.deb' isc-dhcp-client_4.2.4-7ubuntu12.7_amd64.deb 639242 MD5Sum:88ff90aff87eac3282c144839469cdb8 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isc-dhcp/isc-dhcp-common_4.2.4-7ubuntu12.7_amd64.deb' isc-dhcp-common_4.2.4-7ubuntu12.7_amd64.deb 708426 MD5Sum:c5b837eb4b83297e473e62742f243ea8 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isl/libisl10_0.12.2-1_amd64.deb' libisl10_0.12.2-1_amd64.deb 419218 MD5Sum:b9756a5cce1ecd2d56652779d9e3b757 +'http://us.archive.ubuntu.com/ubuntu/pool/main/j/java-common/java-common_0.51_all.deb' java-common_0.51_all.deb 129966 MD5Sum:c8352e7908b8a260b2657f9b80c08031 +'http://us.archive.ubuntu.com/ubuntu/pool/main/k/keyutils/keyutils_1.5.6-1_amd64.deb' keyutils_1.5.6-1_amd64.deb 33588 MD5Sum:a49da8cb9cc16bdaf1ef8b205bf99d2e +'http://us.archive.ubuntu.com/ubuntu/pool/main/k/klibc/klibc-utils_2.0.3-0ubuntu1.14.04.1_amd64.deb' klibc-utils_2.0.3-0ubuntu1.14.04.1_amd64.deb 106972 MD5Sum:4e1676466b8275575a78545c8702ec80 +'http://us.archive.ubuntu.com/ubuntu/pool/main/k/klibc/libklibc_2.0.3-0ubuntu1.14.04.1_amd64.deb' libklibc_2.0.3-0ubuntu1.14.04.1_amd64.deb 40768 MD5Sum:733ef1d7bb06bc206417e6e32a95f3b7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libaio/libaio1_0.3.109-4_amd64.deb' libaio1_0.3.109-4_amd64.deb 6364 MD5Sum:cd9da2f52a5d7713e5080c5ed6916a41 +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-perl/libalgorithm-diff-perl_1.19.02-3_all.deb' libalgorithm-diff-perl_1.19.02-3_all.deb 49964 MD5Sum:7462f70e9e9b691ca4a4657371d6ba8e +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-xs-perl/libalgorithm-diff-xs-perl_0.04-2build4_amd64.deb' libalgorithm-diff-xs-perl_0.04-2build4_amd64.deb 12572 MD5Sum:a1bd654bf2b8f30d464a6f95225a0744 +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-merge-perl/libalgorithm-merge-perl_0.08-2_all.deb' libalgorithm-merge-perl_0.08-2_all.deb 12672 MD5Sum:bf1355aea7ab249fcd344cf0c692bc6c +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libasyncns/libasyncns0_0.8-4ubuntu2_amd64.deb' libasyncns0_0.8-4ubuntu2_amd64.deb 11886 MD5Sum:bf233bc958e37dab60c0f1ab7f8c6bf0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libc/libcaca/libcaca0_0.99.beta18-1ubuntu5_amd64.deb' libcaca0_0.99.beta18-1ubuntu5_amd64.deb 202162 MD5Sum:2532fc55507b526751257c826e6b1b43 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libd/libdrm/libdrm2_2.4.67-1ubuntu0.14.04.1_amd64.deb' libdrm2_2.4.67-1ubuntu0.14.04.1_amd64.deb 27134 MD5Sum:aa505cf02ae2d2a5398318ed1991af6a +'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libeatmydata/eatmydata_26-2_amd64.deb' eatmydata_26-2_amd64.deb 8034 MD5Sum:a12811bc18802ca88eaac1c361c49dd1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/liberror-perl/liberror-perl_0.17-1.1_all.deb' liberror-perl_0.17-1.1_all.deb 21062 MD5Sum:4988e40e65eeba03317411bfdd52b76c +'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libevent/libevent-2.0-5_2.0.21-stable-1ubuntu1.14.04.1_amd64.deb' libevent-2.0-5_2.0.21-stable-1ubuntu1.14.04.1_amd64.deb 126144 MD5Sum:66bae54dc127761b5d044d20a49c84c4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libf/libfile-fcntllock-perl/libfile-fcntllock-perl_0.14-2build1_amd64.deb' libfile-fcntllock-perl_0.14-2build1_amd64.deb 15932 MD5Sum:18813758778ece61bcdf84018218fc1d +'http://us.archive.ubuntu.com/ubuntu/pool/main/libg/libgcrypt11/libgcrypt11_1.5.3-2ubuntu4.4_amd64.deb' libgcrypt11_1.5.3-2ubuntu4.4_amd64.deb 238500 MD5Sum:ffa419347f7284b4a14701325bceed86 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libg/libgssglue/libgssglue1_0.4-2ubuntu1_amd64.deb' libgssglue1_0.4-2ubuntu1_amd64.deb 19710 MD5Sum:08250dff6de699fceff270123f609b49 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libi/libidn/libidn11_1.28-1ubuntu2.1_amd64.deb' libidn11_1.28-1ubuntu2.1_amd64.deb 94396 MD5Sum:bd25920b2fb45fd9c1055ff2c4dcd608 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg8-empty/libjpeg8_8c-2ubuntu8_amd64.deb' libjpeg8_8c-2ubuntu8_amd64.deb 2194 MD5Sum:e0f16286dd787b951ffa953987fdf6a7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg-turbo/libjpeg-turbo8_1.3.0-0ubuntu2_amd64.deb' libjpeg-turbo8_1.3.0-0ubuntu2_amd64.deb 104020 MD5Sum:9b8b32831e8332714737af0342f57b28 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnfsidmap/libnfsidmap2_0.25-5_amd64.deb' libnfsidmap2_0.25-5_amd64.deb 32182 MD5Sum:5e06543f26481fa549a1e017eec4ef36 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnl3/libnl-3-200_3.2.21-1ubuntu3_amd64.deb' libnl-3-200_3.2.21-1ubuntu3_amd64.deb 45652 MD5Sum:e80a3f4c5b08821194c2cac3a00bfdf3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnl3/libnl-genl-3-200_3.2.21-1ubuntu3_amd64.deb' libnl-genl-3-200_3.2.21-1ubuntu3_amd64.deb 10226 MD5Sum:9697116877182a3420e7c70099f81277 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libo/libogg/libogg0_1.3.1-1ubuntu1_amd64.deb' libogg0_1.3.1-1ubuntu1_amd64.deb 17036 MD5Sum:a6411133fd6d72d08bbcb265a7f31103 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libs/libsdl1.2/libsdl1.2debian_1.2.15-8ubuntu1.1_amd64.deb' libsdl1.2debian_1.2.15-8ubuntu1.1_amd64.deb 162322 MD5Sum:063b125221dda816ec3554eea53ce52e +'http://us.archive.ubuntu.com/ubuntu/pool/main/libs/libsndfile/libsndfile1_1.0.25-7ubuntu2.1_amd64.deb' libsndfile1_1.0.25-7ubuntu2.1_amd64.deb 136292 MD5Sum:a01199628faa5c1ec2b97c167c25c0e9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libt/libtasn1-6/libtasn1-6_3.4-3ubuntu0.4_amd64.deb' libtasn1-6_3.4-3ubuntu0.4_amd64.deb 43616 MD5Sum:59657d27d1a7e32e9549b5a21514d877 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libt/libtirpc/libtirpc1_0.2.2-5ubuntu2_amd64.deb' libtirpc1_0.2.2-5ubuntu2_amd64.deb 71258 MD5Sum:acc1c8e0345c8c3e53ba94a59a4729d8 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libt/libtool/libltdl7_2.4.2-1.7ubuntu1_amd64.deb' libltdl7_2.4.2-1.7ubuntu1_amd64.deb 35000 MD5Sum:ddeea7a0b4082abd4f746f46c8ccb48e +'http://us.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbis0a_1.3.2-1.3ubuntu1_amd64.deb' libvorbis0a_1.3.2-1.3ubuntu1_amd64.deb 87166 MD5Sum:e89e05f389fdaa1b834803a08c9213a4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbisenc2_1.3.2-1.3ubuntu1_amd64.deb' libvorbisenc2_1.3.2-1.3ubuntu1_amd64.deb 84546 MD5Sum:fbdffecfc0a3f0dc45ec2480f54ea251 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxi/libxi6_1.7.1.901-1ubuntu1.1_amd64.deb' libxi6_2%3a1.7.1.901-1ubuntu1.1_amd64.deb 27908 MD5Sum:3eec85a777d125eede2cd939b0c2101f +'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxml2/libxml2_2.9.1+dfsg1-3ubuntu4.8_amd64.deb' libxml2_2.9.1+dfsg1-3ubuntu4.8_amd64.deb 572698 MD5Sum:36c15eb271fcf8febdd62eb15f872633 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxrender/libxrender1_0.9.8-1build0.14.04.1_amd64.deb' libxrender1_1%3a0.9.8-1build0.14.04.1_amd64.deb 17878 MD5Sum:5a19f4d3486591f91c51d36d6e0208d0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxtst/libxtst6_1.2.2-1_amd64.deb' libxtst6_2%3a1.2.2-1_amd64.deb 14086 MD5Sum:2594435dcd76d6eec2ff3fb68a3d4e9d +'http://us.archive.ubuntu.com/ubuntu/pool/main/liby/libyaml/libyaml-0-2_0.1.4-3ubuntu3.1_amd64.deb' libyaml-0-2_0.1.4-3ubuntu3.1_amd64.deb 48066 MD5Sum:4dcc359331403252136be3490c923fc9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/lcms2/liblcms2-2_2.5-0ubuntu4.1_amd64.deb' liblcms2-2_2.5-0ubuntu4.1_amd64.deb 131338 MD5Sum:90a2cbf106072d361749c2750eea55b2 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-firmware/linux-firmware_1.127.22_all.deb' linux-firmware_1.127.22_all.deb 33190334 MD5Sum:7d5cef69c2cbe90206be4789892b8b94 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-libc-dev_3.13.0-96.143_amd64.deb' linux-libc-dev_3.13.0-96.143_amd64.deb 766976 MD5Sum:5dbbc222f0e988348bf40fd1371c9410 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-lts-wily/linux-headers-4.2.0-42_4.2.0-42.49~14.04.1_all.deb' linux-headers-4.2.0-42_4.2.0-42.49~14.04.1_all.deb 9599802 MD5Sum:55eef74bc3c3458313d306e56df65f66 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-lts-wily/linux-headers-4.2.0-42-generic_4.2.0-42.49~14.04.1_amd64.deb' linux-headers-4.2.0-42-generic_4.2.0-42.49~14.04.1_amd64.deb 780482 MD5Sum:c32a2b8b75dfcda202d294b96b862b8c +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-lts-wily/linux-image-4.2.0-42-generic_4.2.0-42.49~14.04.1_amd64.deb' linux-image-4.2.0-42-generic_4.2.0-42.49~14.04.1_amd64.deb 17227966 MD5Sum:0cc30b4dd72aa8c3b9834247633819a0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-lts-wily/linux-image-extra-4.2.0-42-generic_4.2.0-42.49~14.04.1_amd64.deb' linux-image-extra-4.2.0-42-generic_4.2.0-42.49~14.04.1_amd64.deb 38303496 MD5Sum:a88e74dd8270dfb67ddd5c6dfb55a060 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta-lts-wily/linux-generic-lts-wily_4.2.0.42.34_amd64.deb' linux-generic-lts-wily_4.2.0.42.34_amd64.deb 1798 MD5Sum:547387b997ce4b9dcad408ffcb54148f +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta-lts-wily/linux-headers-generic-lts-wily_4.2.0.42.34_amd64.deb' linux-headers-generic-lts-wily_4.2.0.42.34_amd64.deb 2294 MD5Sum:5ebb327d9c1c8651281feccc0a3a5157 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta-lts-wily/linux-image-generic-lts-wily_4.2.0.42.34_amd64.deb' linux-image-generic-lts-wily_4.2.0.42.34_amd64.deb 2318 MD5Sum:421cf8d6e11583bd2afcfea2ed303923 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/lsb/lsb-base_4.1+Debian11ubuntu6.2_all.deb' lsb-base_4.1+Debian11ubuntu6.2_all.deb 13260 MD5Sum:dac3d19e502c370ac880ca558d9a1a68 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/lsb/lsb-release_4.1+Debian11ubuntu6.2_all.deb' lsb-release_4.1+Debian11ubuntu6.2_all.deb 11640 MD5Sum:91771d82e34770615711d722a6779879 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/lzo2/liblzo2-2_2.06-1.2ubuntu1.1_amd64.deb' liblzo2-2_2.06-1.2ubuntu1.1_amd64.deb 46110 MD5Sum:b3e9733843fda9b2463a0745e7306092 +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/make-dfsg/make_3.81-8.2ubuntu3_amd64.deb' make_3.81-8.2ubuntu3_amd64.deb 119286 MD5Sum:6442fbef4450fc977fb1ab6297cf7797 +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/manpages/manpages-dev_3.54-1ubuntu1_all.deb' manpages-dev_3.54-1ubuntu1_all.deb 1819920 MD5Sum:8b108211126e2798112fbd55292e5690 +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/mpclib3/libmpc3_1.0.1-1ubuntu1_amd64.deb' libmpc3_1.0.1-1ubuntu1_amd64.deb 38442 MD5Sum:c5749c5428040f492bc9d00b0101b8a8 +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/mpfr4/libmpfr4_3.1.2-1_amd64.deb' libmpfr4_3.1.2-1_amd64.deb 202636 MD5Sum:3ff03e231bf643436f087da42faaad6d +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/msr-tools/msr-tools_1.3-2_amd64.deb' msr-tools_1.3-2_amd64.deb 10636 MD5Sum:5ffb50c3889cfccc901b940923d89e29 +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nfs-utils/nfs-common_1.2.8-6ubuntu1.2_amd64.deb' nfs-common_1%3a1.2.8-6ubuntu1.2_amd64.deb 180760 MD5Sum:64d83aabb28de942a6e367181ed580ca +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nspr/libnspr4_4.12-0ubuntu0.14.04.1_amd64.deb' libnspr4_2%3a4.12-0ubuntu0.14.04.1_amd64.deb 110434 MD5Sum:cff22f4863f0e8356900e6b26872a63c +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3_3.23-0ubuntu0.14.04.1_amd64.deb' libnss3_2%3a3.23-0ubuntu0.14.04.1_amd64.deb 1119284 MD5Sum:915f9fd9b0b0d18bbfe66f47774daec8 +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3-nssdb_3.23-0ubuntu0.14.04.1_all.deb' libnss3-nssdb_2%3a3.23-0ubuntu0.14.04.1_all.deb 10554 MD5Sum:7b4064d8bb5f8ca3f0aec63699666564 +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/ntp/ntpdate_4.2.6.p5+dfsg-3ubuntu2.14.04.10_amd64.deb' ntpdate_1%3a4.2.6.p5+dfsg-3ubuntu2.14.04.10_amd64.deb 57684 MD5Sum:5ea1ccebfd8172032dc68697d172b64c +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/numactl/libnuma1_2.0.9~rc5-1ubuntu3.14.04.2_amd64.deb' libnuma1_2.0.9~rc5-1ubuntu3.14.04.2_amd64.deb 20548 MD5Sum:ecc0effed2e7ac705b71f44f1d4b0cc4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openldap/libldap-2.4-2_2.4.31-1+nmu2ubuntu8.3_amd64.deb' libldap-2.4-2_2.4.31-1+nmu2ubuntu8.3_amd64.deb 153128 MD5Sum:1acf98546023415c32f6f556ca4b1a58 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-client_6.6p1-2ubuntu2.8_amd64.deb' openssh-client_1%3a6.6p1-2ubuntu2.8_amd64.deb 563832 MD5Sum:046d0a1f78ce350724ae14003e19a8da +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-server_6.6p1-2ubuntu2.8_amd64.deb' openssh-server_1%3a6.6p1-2ubuntu2.8_amd64.deb 321632 MD5Sum:d59b2822a05d802c74cd89f8fff9c60a +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-sftp-server_6.6p1-2ubuntu2.8_amd64.deb' openssh-sftp-server_1%3a6.6p1-2ubuntu2.8_amd64.deb 34174 MD5Sum:ce6873e6f0ae8f04106c8ad5fa6baf9e +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.0.0_1.0.1f-1ubuntu2.21_amd64.deb' libssl1.0.0_1.0.1f-1ubuntu2.21_amd64.deb 829700 MD5Sum:129f6409bcb3d5c30538d3a68efc5e99 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_1.0.1f-1ubuntu2.21_amd64.deb' openssl_1.0.1f-1ubuntu2.21_amd64.deb 489490 MD5Sum:b19cd50748d32dd7128777c8c2eda11b +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/opus/libopus0_1.1-0ubuntu1_amd64.deb' libopus0_1.1-0ubuntu1_amd64.deb 153146 MD5Sum:b611832d9ef83e451dff69c1c81d5d04 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pam/libpam0g_1.1.8-1ubuntu2.2_amd64.deb' libpam0g_1.1.8-1ubuntu2.2_amd64.deb 56072 MD5Sum:1273498c4f24df5a6514a8c43700c9d2 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pam/libpam-modules_1.1.8-1ubuntu2.2_amd64.deb' libpam-modules_1.1.8-1ubuntu2.2_amd64.deb 234422 MD5Sum:e709e588f41be2f59149374a1eb6c9cb +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pam/libpam-modules-bin_1.1.8-1ubuntu2.2_amd64.deb' libpam-modules-bin_1.1.8-1ubuntu2.2_amd64.deb 31164 MD5Sum:c6817859ed2a2e5f023a9d538e37daf0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pam/libpam-runtime_1.1.8-1ubuntu2.2_all.deb' libpam-runtime_1.1.8-1ubuntu2.2_all.deb 37766 MD5Sum:fa4d3d794c3259f1fc34a04d1e682bcf +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/patch/patch_2.7.1-4ubuntu2.3_amd64.deb' patch_2.7.1-4ubuntu2.3_amd64.deb 86356 MD5Sum:4f07a01b36e3a60a34c3bcef647894ae +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pcre3/libpcre3_8.31-2ubuntu2.3_amd64.deb' libpcre3_1%3a8.31-2ubuntu2.3_amd64.deb 144410 MD5Sum:8ffa3b01676dab2247991c847e7039d6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pcsc-lite/libpcsclite1_1.8.10-1ubuntu1_amd64.deb' libpcsclite1_1.8.10-1ubuntu1_amd64.deb 20938 MD5Sum:adece73e911ca3dbdd3925294c75afee +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl_5.18.2-2ubuntu1.1_amd64.deb' perl_5.18.2-2ubuntu1.1_amd64.deb 2647870 MD5Sum:c923b93fb9aa7f1ff97fcea2539bd8b9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl-base_5.18.2-2ubuntu1.1_amd64.deb' perl-base_5.18.2-2ubuntu1.1_amd64.deb 1146330 MD5Sum:d032a8ff7c2609d93af93e02aa7cf5ba +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl-modules_5.18.2-2ubuntu1.1_all.deb' perl-modules_5.18.2-2ubuntu1.1_all.deb 2673194 MD5Sum:75bfbc6a0725be5533d5920d031bb121 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pixman/libpixman-1-0_0.30.2-2ubuntu1.1_amd64.deb' libpixman-1-0_0.30.2-2ubuntu1.1_amd64.deb 225476 MD5Sum:2d12f5e47dad9b5f61299706413976da +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/prettytable/python-prettytable_0.7.2-2ubuntu2_all.deb' python-prettytable_0.7.2-2ubuntu2_all.deb 19966 MD5Sum:1532d286ecad16204509eca1e97b8c37 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pulseaudio/libpulse0_4.0-0ubuntu11.1_amd64.deb' libpulse0_1%3a4.0-0ubuntu11.1_amd64.deb 225440 MD5Sum:84213503252a6aec962b12cd170af23f +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pycurl/python3-pycurl_7.19.3-0ubuntu3_amd64.deb' python3-pycurl_7.19.3-0ubuntu3_amd64.deb 47494 MD5Sum:4a8692a3639a46f0c512f5d77f42ff16 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyserial/python-serial_2.6-1build1_all.deb' python-serial_2.6-1build1_all.deb 60088 MD5Sum:815adaf14f9c402d2d0507b1d99e7d71 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7_2.7.6-8ubuntu0.2_amd64.deb' libpython2.7_2.7.6-8ubuntu0.2_amd64.deb 1038642 MD5Sum:e52bac5d993bf5c8c60ef92b9e392603 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-dev_2.7.6-8ubuntu0.2_amd64.deb' libpython2.7-dev_2.7.6-8ubuntu0.2_amd64.deb 22007718 MD5Sum:8d59685b68713072a86e278b6b5b22ab +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7-dev_2.7.6-8ubuntu0.2_amd64.deb' python2.7-dev_2.7.6-8ubuntu0.2_amd64.deb 269106 MD5Sum:b329c89de034410c49eb9525597c11c6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.4/libpython3.4-minimal_3.4.3-1ubuntu1~14.04.4_amd64.deb' libpython3.4-minimal_3.4.3-1ubuntu1~14.04.4_amd64.deb 462462 MD5Sum:8365ac255bbc0035615006a20c178eca +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.4/libpython3.4-stdlib_3.4.3-1ubuntu1~14.04.4_amd64.deb' libpython3.4-stdlib_3.4.3-1ubuntu1~14.04.4_amd64.deb 1984448 MD5Sum:4c1a5efe2046b78fd3dfbe49c3c23995 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.4/python3.4_3.4.3-1ubuntu1~14.04.4_amd64.deb' python3.4_3.4.3-1ubuntu1~14.04.4_amd64.deb 177620 MD5Sum:f5b213484c94f39d7dc8b9187024d41e +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.4/python3.4-minimal_3.4.3-1ubuntu1~14.04.4_amd64.deb' python3.4-minimal_3.4.3-1ubuntu1~14.04.4_amd64.deb 1227040 MD5Sum:05dd645ea1fb413000aa407ca4f80b32 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-dev_2.7.5-5ubuntu3_amd64.deb' libpython-dev_2.7.5-5ubuntu3_amd64.deb 7078 MD5Sum:3b37a8ee5197b689d2fe472e81583e41 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-dev_2.7.5-5ubuntu3_amd64.deb' python-dev_2.7.5-5ubuntu3_amd64.deb 1166 MD5Sum:0fb9dbd4067f94dc4cd894cefc50fe47 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-json-patch/python-jsonpatch_1.3-4_all.deb' python-jsonpatch_1.3-4_all.deb 9088 MD5Sum:d1521e9621c4c751d164a6d979705a12 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-json-pointer/python-json-pointer_1.0-2build1_all.deb' python-json-pointer_1.0-2build1_all.deb 5158 MD5Sum:b0762e2a2192458adcbf70e6be02172d +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-oauth/python-oauth_1.0.1-3build2_all.deb' python-oauth_1.0.1-3build2_all.deb 12830 MD5Sum:e2c16c59e6242e3abb211a3e64297615 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python3-pkg-resources_3.3-1ubuntu2_all.deb' python3-pkg-resources_3.3-1ubuntu2_all.deb 31704 MD5Sum:e44cbc2a92ab2c53d01c7d54a79020f0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-pkg-resources_3.3-1ubuntu2_all.deb' python-pkg-resources_3.3-1ubuntu2_all.deb 61910 MD5Sum:d12cb222f33ac215006d472c63d3aeb8 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-setuptools_3.3-1ubuntu2_all.deb' python-setuptools_3.3-1ubuntu2_all.deb 230056 MD5Sum:095838ab2e8028796486463d62e5b88b +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-setuptools-whl_3.3-1ubuntu2_all.deb' python-setuptools-whl_3.3-1ubuntu2_all.deb 244386 MD5Sum:bed8daea8be2938af22a1bc7fdc0d9f1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-urllib3/python-urllib3-whl_1.7.1-1ubuntu4_all.deb' python-urllib3-whl_1.7.1-1ubuntu4_all.deb 64008 MD5Sum:5614ad88debd4c93441cc119f5a478a1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyyaml/python-yaml_3.10-4ubuntu0.1_amd64.deb' python-yaml_3.10-4ubuntu0.1_amd64.deb 101898 MD5Sum:3bbc120de69a86a8f0b996d722437fd4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/r/requests/python-requests-whl_2.2.1-1ubuntu0.3_all.deb' python-requests-whl_2.2.1-1ubuntu0.3_all.deb 227230 MD5Sum:d4a08ea174bf075523d7c045a5ef4544 +'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rpcbind/rpcbind_0.2.1-2ubuntu2.2_amd64.deb' rpcbind_0.2.1-2ubuntu2.2_amd64.deb 37056 MD5Sum:279a20e0acfea4036bce808ee12db789 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/sharutils/sharutils_4.14-1ubuntu1_amd64.deb' sharutils_1%3a4.14-1ubuntu1_amd64.deb 144824 MD5Sum:021cd2f95dd7fa1b4218d1caf50c882e +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/six/python-six-whl_1.5.2-1ubuntu1_all.deb' python-six-whl_1.5.2-1ubuntu1_all.deb 10502 MD5Sum:d8224e11a6bf8bc46d5649b4675fe057 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/snappy/libsnappy1_1.1.0-1ubuntu1_amd64.deb' libsnappy1_1.1.0-1ubuntu1_amd64.deb 11152 MD5Sum:6e75ed3aa224013957954c6671bead67 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/software-properties/python3-software-properties_0.92.37.7_all.deb' python3-software-properties_0.92.37.7_all.deb 19120 MD5Sum:00da7ba0cac32440cdd8c2137ca9771e +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/software-properties/software-properties-common_0.92.37.7_all.deb' software-properties-common_0.92.37.7_all.deb 9356 MD5Sum:195890432324c90ea6a0e1c332f953d6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/libstrongswan_5.1.2-0ubuntu2.4_amd64.deb' libstrongswan_5.1.2-0ubuntu2.4_amd64.deb 1447810 MD5Sum:7e37035cdbbe437917089ef7ea44c4f7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan_5.1.2-0ubuntu2.4_all.deb' strongswan_5.1.2-0ubuntu2.4_all.deb 29718 MD5Sum:cb287cde0028c9b984ba4642ed243592 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-ike_5.1.2-0ubuntu2.4_amd64.deb' strongswan-ike_5.1.2-0ubuntu2.4_amd64.deb 1199256 MD5Sum:e72cb89680f9d7d257018c49531b14db +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-plugin-openssl_5.1.2-0ubuntu2.4_amd64.deb' strongswan-plugin-openssl_5.1.2-0ubuntu2.4_amd64.deb 188634 MD5Sum:536e99bc490a6cab86233f811620c5f7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-starter_5.1.2-0ubuntu2.4_amd64.deb' strongswan-starter_5.1.2-0ubuntu2.4_amd64.deb 708252 MD5Sum:1d6ee974cb75ddb9890b67951e6b2f23 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libpam-systemd_204-5ubuntu20.19_amd64.deb' libpam-systemd_204-5ubuntu20.19_amd64.deb 25544 MD5Sum:3a8ab37af48ffcc23f9bef72e80f59c8 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libsystemd-daemon0_204-5ubuntu20.19_amd64.deb' libsystemd-daemon0_204-5ubuntu20.19_amd64.deb 10194 MD5Sum:b3c2675173f71a987bc78120447beef2 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libsystemd-journal0_204-5ubuntu20.19_amd64.deb' libsystemd-journal0_204-5ubuntu20.19_amd64.deb 50064 MD5Sum:f91fbd1ec6fb416186a453b2f9e4cf8a +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libsystemd-login0_204-5ubuntu20.19_amd64.deb' libsystemd-login0_204-5ubuntu20.19_amd64.deb 27206 MD5Sum:f40f53f393bd464b4cb30e51b4db6707 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libudev1_204-5ubuntu20.19_amd64.deb' libudev1_204-5ubuntu20.19_amd64.deb 33776 MD5Sum:efaa66441569692a31cf0cdc3b2b1dd8 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/systemd-services_204-5ubuntu20.19_amd64.deb' systemd-services_204-5ubuntu20.19_amd64.deb 197024 MD5Sum:c005d7f4fcfc1299bbab853c4897c7a7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/udev_204-5ubuntu20.19_amd64.deb' udev_204-5ubuntu20.19_amd64.deb 734516 MD5Sum:f90937775fbbbe862974abe0332b6cb5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/t/tzdata/tzdata_2016f-0ubuntu0.14.04_all.deb' tzdata_2016f-0ubuntu0.14.04_all.deb 166416 MD5Sum:8853ac8e274c495758674be2ca67aa0d +'http://us.archive.ubuntu.com/ubuntu/pool/main/u/unattended-upgrades/unattended-upgrades_0.82.1ubuntu2.4_all.deb' unattended-upgrades_0.82.1ubuntu2.4_all.deb 25856 MD5Sum:c635e645c9d91eb2d4d182d97098150a +'http://us.archive.ubuntu.com/ubuntu/pool/main/u/update-manager/python3-update-manager_0.196.21_all.deb' python3-update-manager_1%3a0.196.21_all.deb 32038 MD5Sum:ab456fa7a5319d23bf8f0d1049aeb060 +'http://us.archive.ubuntu.com/ubuntu/pool/main/u/update-manager/update-manager-core_0.196.21_all.deb' update-manager-core_1%3a0.196.21_all.deb 8210 MD5Sum:fba7ecb1a1e70a4382a8176d37186865 +'http://us.archive.ubuntu.com/ubuntu/pool/main/u/usbredir/libusbredirparser1_0.6-2ubuntu1.1_amd64.deb' libusbredirparser1_0.6-2ubuntu1.1_amd64.deb 13286 MD5Sum:60574ac64168133bd8a974d58b7e9c5e +'http://us.archive.ubuntu.com/ubuntu/pool/main/u/usbutils/usbutils_007-2ubuntu1.1_amd64.deb' usbutils_1%3a007-2ubuntu1.1_amd64.deb 205284 MD5Sum:8dd05d22ed0ab249bfed02b3266e9bb5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/w/wget/wget_1.15-1ubuntu1.14.04.2_amd64.deb' wget_1.15-1ubuntu1.14.04.2_amd64.deb 270522 MD5Sum:5d8104c0b75bb8bdb1984457082e7bb8 +'http://us.archive.ubuntu.com/ubuntu/pool/main/w/wheel/python-wheel_0.24.0-1~ubuntu1_all.deb' python-wheel_0.24.0-1~ubuntu1_all.deb 44680 MD5Sum:a1f3817d6dc2aa707d1ac2a075fabf37 +'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xen/libxen-4.4_4.4.2-0ubuntu0.14.04.6_amd64.deb' libxen-4.4_4.4.2-0ubuntu0.14.04.6_amd64.deb 273704 MD5Sum:01902042887b57bb12591a64a45c9bd7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xen/libxenstore3.0_4.4.2-0ubuntu0.14.04.6_amd64.deb' libxenstore3.0_4.4.2-0ubuntu0.14.04.6_amd64.deb 19354 MD5Sum:2dd53c140e4d4c58d57f25c82c3cc57a +'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xorg/x11-common_7.7+1ubuntu8.1_all.deb' x11-common_1%3a7.7+1ubuntu8.1_all.deb 49504 MD5Sum:62ee5ada95d77863753c3c1f24455810 +'http://us.archive.ubuntu.com/ubuntu/pool/main/y/yajl/libyajl2_2.0.4-4_amd64.deb' libyajl2_2.0.4-4_amd64.deb 20834 MD5Sum:d7241d878ea65cbed080196411ec92c2 +'http://us.archive.ubuntu.com/ubuntu/pool/universe/a/aufs-tools/aufs-tools_3.2+20130722-1.1_amd64.deb' aufs-tools_1%3a3.2+20130722-1.1_amd64.deb 92274 MD5Sum:971d9f80df61d9398f7356e60e1c3723 +'http://us.archive.ubuntu.com/ubuntu/pool/universe/c/chardet-whl/python-chardet-whl_2.2.1-2~ubuntu1_all.deb' python-chardet-whl_2.2.1-2~ubuntu1_all.deb 170254 MD5Sum:d882e156f6af98454a96cae30ae58784 +'http://us.archive.ubuntu.com/ubuntu/pool/universe/d/distlib/python-distlib_0.1.8-1ubuntu1_all.deb' python-distlib_0.1.8-1ubuntu1_all.deb 112604 MD5Sum:b3288d6d230096c11d69ebe18c44ed83 +'http://us.archive.ubuntu.com/ubuntu/pool/universe/d/distlib/python-distlib-whl_0.1.8-1ubuntu1_all.deb' python-distlib-whl_0.1.8-1ubuntu1_all.deb 140312 MD5Sum:93792a4c21365ded4316fdb5bc895dd5 +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-colorama/python-colorama_0.2.5-0.1ubuntu2_all.deb' python-colorama_0.2.5-0.1ubuntu2_all.deb 18374 MD5Sum:b06bc963962c3f3c97f5d1da53a56f3f +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-colorama/python-colorama-whl_0.2.5-0.1ubuntu2_all.deb' python-colorama-whl_0.2.5-0.1ubuntu2_all.deb 18212 MD5Sum:2c4ecb5b3fc49ae20510d3aac886b66a +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-pip/python-pip_1.5.4-1ubuntu4_all.deb' python-pip_1.5.4-1ubuntu4_all.deb 97320 MD5Sum:2f9893e68cba11320605bbc554000b2f +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-pip/python-pip-whl_1.5.4-1ubuntu4_all.deb' python-pip-whl_1.5.4-1ubuntu4_all.deb 110990 MD5Sum:45dd75216ca01ef0758e98b89d88093f +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/python-virtualenv_1.11.4-1ubuntu1_all.deb' python-virtualenv_1.11.4-1ubuntu1_all.deb 1485420 MD5Sum:6df1003bf2392cd14f1a2710ba8cf5d5 diff --git a/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-14.04.4_2016-10-07_1.3/pip-requirements.txt b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-14.04.4_2016-10-07_1.3/pip-requirements.txt index 69ba8a9d14..98d9851d75 100644 --- a/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-14.04.4_2016-10-07_1.3/pip-requirements.txt +++ b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-14.04.4_2016-10-07_1.3/pip-requirements.txt @@ -1,14 +1,14 @@ -docopt==0.6.2 -ecdsa==0.13 -enum34==1.1.2 -interruptingcow==0.6 -ipaddress==1.0.16 -paramiko==1.16.0 -pycrypto==2.6.1 -pykwalify==1.5.0 -python-dateutil==2.4.2 -PyYAML==3.11 -requests==2.9.1 -robotframework==2.9.2 -scapy==2.3.1 -scp==0.10.2 +docopt==0.6.2 +ecdsa==0.13 +enum34==1.1.2 +interruptingcow==0.6 +ipaddress==1.0.16 +paramiko==1.16.0 +pycrypto==2.6.1 +pykwalify==1.5.0 +python-dateutil==2.4.2 +PyYAML==3.11 +requests==2.9.1 +robotframework==2.9.2 +scapy==2.3.1 +scp==0.10.2 diff --git a/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-10-10_1.4/apt-packages.txt b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-10-10_1.4/apt-packages.txt index 94efd023e3..08c97d9f7d 100644 --- a/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-10-10_1.4/apt-packages.txt +++ b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-10-10_1.4/apt-packages.txt @@ -1,246 +1,246 @@ -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/accountsservice/accountsservice_0.6.40-2ubuntu11.2_amd64.deb' accountsservice_0.6.40-2ubuntu11.2_amd64.deb 56180 MD5Sum:6bea6a08b0a3a74c847aa27ccdba1b9e -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/accountsservice/libaccountsservice0_0.6.40-2ubuntu11.2_amd64.deb' libaccountsservice0_0.6.40-2ubuntu11.2_amd64.deb 68856 MD5Sum:607cc8b17a6a5ed940060400d964e189 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/acl/acl_2.2.52-3_amd64.deb' acl_2.2.52-3_amd64.deb 37960 MD5Sum:39c72a4a24b243236757759d679380bb -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2_1.1.0-0ubuntu1_amd64.deb' libasound2_1.1.0-0ubuntu1_amd64.deb 350112 MD5Sum:c7a5b1b0cfdd1d7f1a8f26bcac4701a3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2-data_1.1.0-0ubuntu1_all.deb' libasound2-data_1.1.0-0ubuntu1_all.deb 29438 MD5Sum:4cd49c6c84f451d11459c880236bb337 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apparmor/libapparmor1_2.10.95-0ubuntu2.2_amd64.deb' libapparmor1_2.10.95-0ubuntu2.2_amd64.deb 31764 MD5Sum:1480ea01ece83354a5de93c65428d37b -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/apt-transport-https_1.2.12~ubuntu16.04.1_amd64.deb' apt-transport-https_1.2.12~ubuntu16.04.1_amd64.deb 25682 MD5Sum:cac09fdaa937c86826857b7295c9a6ee -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-client3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb' libavahi-client3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb 25148 MD5Sum:e58d3b6a71e9da24b430f76f90f63f9d -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-common3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb' libavahi-common3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb 21642 MD5Sum:9f4106c0918bf2b779e7d4e2158ef648 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-common-data_0.6.32~rc+dfsg-1ubuntu2_amd64.deb' libavahi-common-data_0.6.32~rc+dfsg-1ubuntu2_amd64.deb 21706 MD5Sum:f7e6efc7b58036c6154be9b3f050845b -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libdns-export162_9.10.3.dfsg.P4-8ubuntu1.1_amd64.deb' libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.1_amd64.deb 664976 MD5Sum:626456312a8c704499dcdfbe82d46d1a -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libisc-export160_9.10.3.dfsg.P4-8ubuntu1.1_amd64.deb' libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.1_amd64.deb 152104 MD5Sum:abf810146cd0bbb6b7b59b2bae6ffe29 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/binutils/binutils_2.26.1-1ubuntu1~16.04.3_amd64.deb' binutils_2.26.1-1ubuntu1~16.04.3_amd64.deb 2310310 MD5Sum:04b00c4b3ba1d86afbb679b63476d05a -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/blinker/python3-blinker_1.3.dfsg2-1build1_all.deb' python3-blinker_1.3.dfsg2-1build1_all.deb 12518 MD5Sum:ba0b5d380216ccb354cbc9a21e0929d5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bluez/libbluetooth3_5.37-0ubuntu5_amd64.deb' libbluetooth3_5.37-0ubuntu5_amd64.deb 61306 MD5Sum:c8a82247c33f550d76e9489de794533d -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-iostreams1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-iostreams1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 28954 MD5Sum:6f938f436adabb8e01cf4382f1d89876 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-random1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-random1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 11674 MD5Sum:22138508eb0106143b73c270141d1761 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-system1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-system1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 9146 MD5Sum:3dd69b1b4c2a64a4600cd781c38f3c6a -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-thread1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-thread1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 47010 MD5Sum:2c185c0d3e0ff3d424fbb077e78fe545 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bridge-utils/bridge-utils_1.5-9ubuntu1_amd64.deb' bridge-utils_1.5-9ubuntu1_amd64.deb 28610 MD5Sum:a81ea7f42da2e7a6c32b866681897ad4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/brltty/libbrlapi0.6_5.3.1-2ubuntu2.1_amd64.deb' libbrlapi0.6_5.3.1-2ubuntu2.1_amd64.deb 20714 MD5Sum:18e457ca6629c3a0863994a976f93973 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/build-essential/build-essential_12.1ubuntu2_amd64.deb' build-essential_12.1ubuntu2_amd64.deb 4758 MD5Sum:731c3a328f87a14bf4f887ceffc51241 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ca-certificates-java/ca-certificates-java_20160321_all.deb' ca-certificates-java_20160321_all.deb 12862 MD5Sum:fcb5fd121a45e7e49b85e87fc038d6d5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ceph/librados2_10.2.2-0ubuntu0.16.04.2_amd64.deb' librados2_10.2.2-0ubuntu0.16.04.2_amd64.deb 1633494 MD5Sum:b977fc1737be2db89e3cdafc8134e1ac -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ceph/librbd1_10.2.2-0ubuntu0.16.04.2_amd64.deb' librbd1_10.2.2-0ubuntu0.16.04.2_amd64.deb 2108866 MD5Sum:60f4d61fe06d5fbf8e7d8c5b80f1cf16 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloud-init/cloud-init_0.7.8-1-g3705bb5-0ubuntu1~16.04.1_all.deb' cloud-init_0.7.8-1-g3705bb5-0ubuntu1~16.04.1_all.deb 268710 MD5Sum:d0c6d223fd5555659546cc9bf5a09f9e -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloud-utils/cloud-guest-utils_0.27-0ubuntu24_all.deb' cloud-guest-utils_0.27-0ubuntu24_all.deb 15164 MD5Sum:8b08dbc4a576e942fe4acdd9f4f51aca -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/configobj/python3-configobj_5.0.6-2_all.deb' python3-configobj_5.0.6-2_all.deb 34200 MD5Sum:cbce754e3638c980fd63c384f1a163a8 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cpu-checker/cpu-checker_0.7-0ubuntu7_amd64.deb' cpu-checker_0.7-0ubuntu7_amd64.deb 6862 MD5Sum:1a809fb421f82a1d5d148013bedcba59 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cups/libcups2_2.1.3-4_amd64.deb' libcups2_2.1.3-4_amd64.deb 196652 MD5Sum:3995ab409b0cb7c4440dfc90b54729d6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/curl/libcurl3-gnutls_7.47.0-1ubuntu2.1_amd64.deb' libcurl3-gnutls_7.47.0-1ubuntu2.1_amd64.deb 183306 MD5Sum:3d0b151da2430eaebfec7cfce3f8f224 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.26.dfsg1-14build1_amd64.deb' libsasl2-2_2.1.26.dfsg1-14build1_amd64.deb 48708 MD5Sum:af15d7b37cbdfc4c413273c5225a67a6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cyrus-sasl2/libsasl2-modules_2.1.26.dfsg1-14build1_amd64.deb' libsasl2-modules_2.1.26.dfsg1-14build1_amd64.deb 47526 MD5Sum:8fda866e5a4adfe40a1ffc15fac77542 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cyrus-sasl2/libsasl2-modules-db_2.1.26.dfsg1-14build1_amd64.deb' libsasl2-modules-db_2.1.26.dfsg1-14build1_amd64.deb 14458 MD5Sum:08577afddd24ee2e6fce4ff455653081 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/device-tree-compiler/libfdt1_1.4.0+dfsg-2_amd64.deb' libfdt1_1.4.0+dfsg-2_amd64.deb 14136 MD5Sum:ea277dec72e4b0dc9ae18140dab6f147 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dkms/dkms_2.2.0.3-2ubuntu11.2_all.deb' dkms_2.2.0.3-2ubuntu11.2_all.deb 66166 MD5Sum:60b5993d95679f32bbf2d015082f8325 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg-dev_1.18.4ubuntu1.1_all.deb' dpkg-dev_1.18.4ubuntu1.1_all.deb 584114 MD5Sum:8e732fd2f0eb2141b9fa5efa33891858 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/libdpkg-perl_1.18.4ubuntu1.1_all.deb' libdpkg-perl_1.18.4ubuntu1.1_all.deb 195494 MD5Sum:ef90a84e0cbdc08dbf664d3367ba0fc4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/e/expat/libexpat1-dev_2.1.0-7ubuntu0.16.04.2_amd64.deb' libexpat1-dev_2.1.0-7ubuntu0.16.04.2_amd64.deb 115328 MD5Sum:df5d013eec845ea323df40c64e3ac2e6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/fakeroot_1.20.2-1ubuntu1_amd64.deb' fakeroot_1.20.2-1ubuntu1_amd64.deb 61784 MD5Sum:b153b1ed316419be55f3f575c092e73b -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/libfakeroot_1.20.2-1ubuntu1_amd64.deb' libfakeroot_1.20.2-1ubuntu1_amd64.deb 25510 MD5Sum:e3c90aa7376ae3a3e966d1688b9dab70 -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/flac/libflac8_1.3.1-4_amd64.deb' libflac8_1.3.1-4_amd64.deb 210396 MD5Sum:c0c0306a333d443f35c866bcf5e05c3a -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fontconfig/fontconfig-config_2.11.94-0ubuntu1.1_all.deb' fontconfig-config_2.11.94-0ubuntu1.1_all.deb 49934 MD5Sum:d8ee5cb98a73e9fd84f0c21b7f00728f -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fontconfig/libfontconfig1_2.11.94-0ubuntu1.1_amd64.deb' libfontconfig1_2.11.94-0ubuntu1.1_amd64.deb 131248 MD5Sum:e1d3510a190b0910720a7ae597ce53ea -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fonts-dejavu/fonts-dejavu-core_2.35-1_all.deb' fonts-dejavu-core_2.35-1_all.deb 1038624 MD5Sum:d3c6235a85d2646078f1b82ab257ef33 -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fuse/libfuse2_2.9.4-1ubuntu3.1_amd64.deb' libfuse2_2.9.4-1ubuntu3.1_amd64.deb 89908 MD5Sum:2bdd7633ce8e2d8b9978756416772991 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/cpp-5_5.4.0-6ubuntu1~16.04.2_amd64.deb' cpp-5_5.4.0-6ubuntu1~16.04.2_amd64.deb 7659676 MD5Sum:9698b350232194a90c341d9f22acb0d3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/g++-5_5.4.0-6ubuntu1~16.04.2_amd64.deb' g++-5_5.4.0-6ubuntu1~16.04.2_amd64.deb 8302162 MD5Sum:58f099107ac2fab651614c8f2fb6da06 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/gcc-5_5.4.0-6ubuntu1~16.04.2_amd64.deb' gcc-5_5.4.0-6ubuntu1~16.04.2_amd64.deb 8604454 MD5Sum:5ff380306e56532dbe785702cf6bd479 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/gcc-5-base_5.4.0-6ubuntu1~16.04.2_amd64.deb' gcc-5-base_5.4.0-6ubuntu1~16.04.2_amd64.deb 16594 MD5Sum:8941046618527561ea3a143dbb43a0d5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libasan2_5.4.0-6ubuntu1~16.04.2_amd64.deb' libasan2_5.4.0-6ubuntu1~16.04.2_amd64.deb 264328 MD5Sum:d4add17174523564cb4f49760d402524 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libatomic1_5.4.0-6ubuntu1~16.04.2_amd64.deb' libatomic1_5.4.0-6ubuntu1~16.04.2_amd64.deb 8902 MD5Sum:791bb61bdab3a151cbf76b208ba56ba0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libcc1-0_5.4.0-6ubuntu1~16.04.2_amd64.deb' libcc1-0_5.4.0-6ubuntu1~16.04.2_amd64.deb 38758 MD5Sum:1efe2ca3c472a4a67fc0ba16932f46dc -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libcilkrts5_5.4.0-6ubuntu1~16.04.2_amd64.deb' libcilkrts5_5.4.0-6ubuntu1~16.04.2_amd64.deb 40032 MD5Sum:fa5a85bc91d27a8010f605414f395ccb -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libgcc-5-dev_5.4.0-6ubuntu1~16.04.2_amd64.deb' libgcc-5-dev_5.4.0-6ubuntu1~16.04.2_amd64.deb 2240894 MD5Sum:c2c62da98a5cb071360bd1edab39b3a5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libgomp1_5.4.0-6ubuntu1~16.04.2_amd64.deb' libgomp1_5.4.0-6ubuntu1~16.04.2_amd64.deb 55060 MD5Sum:b682973038383927d420a3a6388b0675 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libitm1_5.4.0-6ubuntu1~16.04.2_amd64.deb' libitm1_5.4.0-6ubuntu1~16.04.2_amd64.deb 27362 MD5Sum:4ce1445d6e0649b4fac34606042ac642 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/liblsan0_5.4.0-6ubuntu1~16.04.2_amd64.deb' liblsan0_5.4.0-6ubuntu1~16.04.2_amd64.deb 104918 MD5Sum:a4898598aa7d583235f0306b52da4fbc -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libmpx0_5.4.0-6ubuntu1~16.04.2_amd64.deb' libmpx0_5.4.0-6ubuntu1~16.04.2_amd64.deb 9762 MD5Sum:ff9605e2a19365f091f1093a307713d1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libquadmath0_5.4.0-6ubuntu1~16.04.2_amd64.deb' libquadmath0_5.4.0-6ubuntu1~16.04.2_amd64.deb 131348 MD5Sum:ddda6e016e5422789bac0f6414195d62 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++-5-dev_5.4.0-6ubuntu1~16.04.2_amd64.deb' libstdc++-5-dev_5.4.0-6ubuntu1~16.04.2_amd64.deb 1430352 MD5Sum:0e51627ce6c39c2473b5c4d5d2d0d4c9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.deb' libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.deb 393348 MD5Sum:e81ffa2d98cc04fd295ebac1f8f51c1c -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libtsan0_5.4.0-6ubuntu1~16.04.2_amd64.deb' libtsan0_5.4.0-6ubuntu1~16.04.2_amd64.deb 244150 MD5Sum:fb1996b8b434b8b34e5f56479e3bbc41 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libubsan0_5.4.0-6ubuntu1~16.04.2_amd64.deb' libubsan0_5.4.0-6ubuntu1~16.04.2_amd64.deb 95358 MD5Sum:d325be762cdd32aaf7fe78f8797e2b77 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/cpp_5.3.1-1ubuntu1_amd64.deb' cpp_4%3a5.3.1-1ubuntu1_amd64.deb 27662 MD5Sum:4c291e4aaf6406f61e3188d526479d51 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/g++_5.3.1-1ubuntu1_amd64.deb' g++_4%3a5.3.1-1ubuntu1_amd64.deb 1504 MD5Sum:0c03d113ff00ebc960f294420e60855b -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/gcc_5.3.1-1ubuntu1_amd64.deb' gcc_4%3a5.3.1-1ubuntu1_amd64.deb 5244 MD5Sum:df1516b203a66a86a728eab7a4c349e8 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gdbm/libgdbm3_1.8.3-13.1_amd64.deb' libgdbm3_1.8.3-13.1_amd64.deb 16926 MD5Sum:b2001800d7c61d4b0b12b077a0af2b5a -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gdisk/gdisk_1.0.1-1build1_amd64.deb' gdisk_1.0.1-1build1_amd64.deb 194230 MD5Sum:24e876aa3c2e94e39c17a4551f5d8514 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/git/git_2.7.4-0ubuntu1_amd64.deb' git_1%3a2.7.4-0ubuntu1_amd64.deb 3006120 MD5Sum:0412535c34d3f900629e9409ad73aead -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/git/git-man_2.7.4-0ubuntu1_all.deb' git-man_1%3a2.7.4-0ubuntu1_all.deb 734758 MD5Sum:0c00ac0f6cc7cc5b1b17f2e30ad44342 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc6-dev_2.23-0ubuntu3_amd64.deb' libc6-dev_2.23-0ubuntu3_amd64.deb 2084240 MD5Sum:0437b586145b9179837377a979c78364 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc-dev-bin_2.23-0ubuntu3_amd64.deb' libc-dev-bin_2.23-0ubuntu3_amd64.deb 68656 MD5Sum:366f27af788856105f3402f15a30d92f -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnupg/gnupg_1.4.20-1ubuntu3.1_amd64.deb' gnupg_1.4.20-1ubuntu3.1_amd64.deb 625938 MD5Sum:955b23eb62539452a8aa37e34e6f77c1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnupg/gpgv_1.4.20-1ubuntu3.1_amd64.deb' gpgv_1.4.20-1ubuntu3.1_amd64.deb 165264 MD5Sum:1debba9f668b7dcdca878d1e0e25c98a -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/groff/groff-base_1.22.3-7_amd64.deb' groff-base_1.22.3-7_amd64.deb 1150932 MD5Sum:7afb23ed2960cd67ab3196f29b9ff7e2 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub2-common_2.02~beta2-36ubuntu3.2_amd64.deb' grub2-common_2.02~beta2-36ubuntu3.2_amd64.deb 510912 MD5Sum:634e13acd2c8cab54b01e84b5e254845 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-common_2.02~beta2-36ubuntu3.2_amd64.deb' grub-common_2.02~beta2-36ubuntu3.2_amd64.deb 1706552 MD5Sum:7899a24a07f8b62e08a455bdab510c47 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-pc_2.02~beta2-36ubuntu3.2_amd64.deb' grub-pc_2.02~beta2-36ubuntu3.2_amd64.deb 197080 MD5Sum:5d4cdb8542ad3e63302698a075e5e959 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-pc-bin_2.02~beta2-36ubuntu3.2_amd64.deb' grub-pc-bin_2.02~beta2-36ubuntu3.2_amd64.deb 883966 MD5Sum:9bb93b3374a6ad20419396c488cbf5f9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libasn1-8-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libasn1-8-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 174366 MD5Sum:42aa97710227f6c372d232799fde6790 -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libgssapi3-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libgssapi3-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 96084 MD5Sum:0c9467b00d258e3175addbb5a16fdc72 -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libhcrypto4-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libhcrypto4-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 84938 MD5Sum:d6337d57fa1dda2c877a9f1c163ba0dd -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libheimbase1-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libheimbase1-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 29228 MD5Sum:15a7c7d180f14253f46d5e56409a0ffb -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libheimntlm0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libheimntlm0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 15090 MD5Sum:6f7a32beb2a3a04181c05efe940df1ee -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libhx509-5-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libhx509-5-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 107192 MD5Sum:b2b294bd3d2226f10c69058900323876 -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libkrb5-26-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libkrb5-26-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 202156 MD5Sum:000a329b39ae158d0ec280957741b14d -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libroken18-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libroken18-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 41190 MD5Sum:58c4093551f88ccca3c6c8a11d5e2357 -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libwind0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libwind0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 48180 MD5Sum:7e368713a6d03afb23a8f956a16b9ba7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/ifupdown/ifupdown_0.8.10ubuntu1.1_amd64.deb' ifupdown_0.8.10ubuntu1.1_amd64.deb 54916 MD5Sum:d013023982a1e01067d9ef9e02a327a3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools_0.122ubuntu8.3_all.deb' initramfs-tools_0.122ubuntu8.3_all.deb 8636 MD5Sum:c9c1a2d07e79a31c99a84ca94eb19932 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools-bin_0.122ubuntu8.3_amd64.deb' initramfs-tools-bin_0.122ubuntu8.3_amd64.deb 9130 MD5Sum:d8ec6d9584de01fe838b0f25371a4224 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools-core_0.122ubuntu8.3_all.deb' initramfs-tools-core_0.122ubuntu8.3_all.deb 42596 MD5Sum:a9b10c1bff464cd1569c7160535076f5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/init-system-helpers/init_1.29ubuntu3_amd64.deb' init_1.29ubuntu3_amd64.deb 4716 MD5Sum:5967a023e146860d888297cfb5773017 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/init-system-helpers/init-system-helpers_1.29ubuntu3_all.deb' init-system-helpers_1.29ubuntu3_all.deb 32416 MD5Sum:9b8e5436025f8006ae7f309fd3687b60 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/iptables/iptables_1.6.0-2ubuntu3_amd64.deb' iptables_1.6.0-2ubuntu3_amd64.deb 265782 MD5Sum:706f191cbb20bff7c7a9a0fc01a78c25 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/ipxe/ipxe-qemu_1.0.0+git-20150424.a25a16d-1ubuntu1_all.deb' ipxe-qemu_1.0.0+git-20150424.a25a16d-1ubuntu1_all.deb 717714 MD5Sum:01570467dacbe007f2d0fb76c30653a7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isc-dhcp/isc-dhcp-client_4.3.3-5ubuntu12.3_amd64.deb' isc-dhcp-client_4.3.3-5ubuntu12.3_amd64.deb 222802 MD5Sum:2a48c0fdf30e8337137a801539df7eae -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isc-dhcp/isc-dhcp-common_4.3.3-5ubuntu12.3_amd64.deb' isc-dhcp-common_4.3.3-5ubuntu12.3_amd64.deb 104476 MD5Sum:9dc9a16bf371874e4ba4d0807550264c -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isl/libisl15_0.16.1-1_amd64.deb' libisl15_0.16.1-1_amd64.deb 524254 MD5Sum:eec42a28e5ed8a5eaaf6278b455176ed -'http://us.archive.ubuntu.com/ubuntu/pool/main/j/java-common/java-common_0.56ubuntu2_all.deb' java-common_0.56ubuntu2_all.deb 7742 MD5Sum:cef7383c2628cc09bccbf0777e4eac37 -'http://us.archive.ubuntu.com/ubuntu/pool/main/j/jinja2/python3-jinja2_2.8-1_all.deb' python3-jinja2_2.8-1_all.deb 102518 MD5Sum:2511385ccb261c47c7dc2479abb6848d -'http://us.archive.ubuntu.com/ubuntu/pool/main/k/keyutils/keyutils_1.5.9-8ubuntu1_amd64.deb' keyutils_1.5.9-8ubuntu1_amd64.deb 47054 MD5Sum:c7a363bce61cc8fbfb2b252d7a98f0fa -'http://us.archive.ubuntu.com/ubuntu/pool/main/k/klibc/klibc-utils_2.0.4-8ubuntu1.16.04.2_amd64.deb' klibc-utils_2.0.4-8ubuntu1.16.04.2_amd64.deb 107498 MD5Sum:e07a76e70f2acfef7edf54b08be0a4a3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/k/klibc/libklibc_2.0.4-8ubuntu1.16.04.2_amd64.deb' libklibc_2.0.4-8ubuntu1.16.04.2_amd64.deb 41326 MD5Sum:b123c76c6d8f2f80a6247e5ce915dd48 -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libaio/libaio1_0.3.110-2_amd64.deb' libaio1_0.3.110-2_amd64.deb 6356 MD5Sum:2ed968780e68742f43eddebadf82ff67 -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-perl/libalgorithm-diff-perl_1.19.03-1_all.deb' libalgorithm-diff-perl_1.19.03-1_all.deb 47622 MD5Sum:3d6f7b46454ff0b8589904fc4f8dd602 -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-xs-perl/libalgorithm-diff-xs-perl_0.04-4build1_amd64.deb' libalgorithm-diff-xs-perl_0.04-4build1_amd64.deb 10998 MD5Sum:330e839dcd98097723870b28ba9a8810 -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-merge-perl/libalgorithm-merge-perl_0.08-3_all.deb' libalgorithm-merge-perl_0.08-3_all.deb 11992 MD5Sum:6b456963b6629af0514be1b8ccbaa7fc -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libasyncns/libasyncns0_0.8-5build1_amd64.deb' libasyncns0_0.8-5build1_amd64.deb 12336 MD5Sum:dbb4957abb710a70453eac0e77fc797b -'http://us.archive.ubuntu.com/ubuntu/pool/main/libc/libcaca/libcaca0_0.99.beta19-2build2~gcc5.2_amd64.deb' libcaca0_0.99.beta19-2build2~gcc5.2_amd64.deb 202380 MD5Sum:b49a9b48694bf35e217fee1295dd14dd -'http://us.archive.ubuntu.com/ubuntu/pool/main/libc/libcacard/libcacard0_2.5.0-2_amd64.deb' libcacard0_1%3a2.5.0-2_amd64.deb 19666 MD5Sum:0d371aa9cdc23ac668bc6e2afa1c44f0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libeatmydata/eatmydata_105-3_all.deb' eatmydata_105-3_all.deb 5502 MD5Sum:bc5bc47ea615b69da0f5d3c090c74a91 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libeatmydata/libeatmydata1_105-3_amd64.deb' libeatmydata1_105-3_amd64.deb 7280 MD5Sum:1f39d8cff52be865527547c09fc772db -'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/liberror-perl/liberror-perl_0.17-1.2_all.deb' liberror-perl_0.17-1.2_all.deb 19594 MD5Sum:bd1a8035bbfae2cd7d718f54fd93e0d5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libevent/libevent-2.0-5_2.0.21-stable-2_amd64.deb' libevent-2.0-5_2.0.21-stable-2_amd64.deb 112550 MD5Sum:071d5951d910147ea84d0d024bee13ce -'http://us.archive.ubuntu.com/ubuntu/pool/main/libf/libfile-fcntllock-perl/libfile-fcntllock-perl_0.22-3_amd64.deb' libfile-fcntllock-perl_0.22-3_amd64.deb 32002 MD5Sum:26476d54bf4677cc993c8cd9a7dbaeca -'http://us.archive.ubuntu.com/ubuntu/pool/main/libg/libgcrypt20/libgcrypt20_1.6.5-2ubuntu0.2_amd64.deb' libgcrypt20_1.6.5-2ubuntu0.2_amd64.deb 336194 MD5Sum:ebe89b8db7294a6dc2ff9995a7d30060 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libi/libidn/libidn11_1.32-3ubuntu1.1_amd64.deb' libidn11_1.32-3ubuntu1.1_amd64.deb 45552 MD5Sum:74c4e3f65c05e61596efe2ef46941009 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libi/libiscsi/libiscsi2_1.12.0-2_amd64.deb' libiscsi2_1.12.0-2_amd64.deb 51550 MD5Sum:6c8f4a397968e478e9567785bba4283e -'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg8-empty/libjpeg8_8c-2ubuntu8_amd64.deb' libjpeg8_8c-2ubuntu8_amd64.deb 2194 MD5Sum:e0f16286dd787b951ffa953987fdf6a7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg-turbo/libjpeg-turbo8_1.4.2-0ubuntu3_amd64.deb' libjpeg-turbo8_1.4.2-0ubuntu3_amd64.deb 110656 MD5Sum:8e505d67491b22a9d38be353654b3bc3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnfnetlink/libnfnetlink0_1.0.1-3_amd64.deb' libnfnetlink0_1.0.1-3_amd64.deb 13262 MD5Sum:914d0640e09dd02057d0fd09f3da0eb5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnfsidmap/libnfsidmap2_0.25-5_amd64.deb' libnfsidmap2_0.25-5_amd64.deb 32182 MD5Sum:5e06543f26481fa549a1e017eec4ef36 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libo/libogg/libogg0_1.3.2-1_amd64.deb' libogg0_1.3.2-1_amd64.deb 17192 MD5Sum:55dd9b6982d66d6b168aa18fb3f90d2f -'http://us.archive.ubuntu.com/ubuntu/pool/main/libs/libsdl1.2/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb' libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb 167606 MD5Sum:52418fa1951b7edff3aecc67821f5786 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libs/libsndfile/libsndfile1_1.0.25-10_amd64.deb' libsndfile1_1.0.25-10_amd64.deb 137498 MD5Sum:1218c82cf611a5e4ff9919b91130c21e -'http://us.archive.ubuntu.com/ubuntu/pool/main/libt/libtirpc/libtirpc1_0.2.5-1_amd64.deb' libtirpc1_0.2.5-1_amd64.deb 75624 MD5Sum:bc4fb6407a0636517ce6670fd3ac2c40 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbis0a_1.3.5-3_amd64.deb' libvorbis0a_1.3.5-3_amd64.deb 86776 MD5Sum:248a92f34c15bfc3fff460186eac1358 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbisenc2_1.3.5-3_amd64.deb' libvorbisenc2_1.3.5-3_amd64.deb 70678 MD5Sum:62b0f630a03291eff71de6f844746721 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxi/libxi6_1.7.6-1_amd64.deb' libxi6_2%3a1.7.6-1_amd64.deb 28572 MD5Sum:2ad504b68a0a7c3f987307166de56a3a -'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxrender/libxrender1_0.9.9-0ubuntu1_amd64.deb' libxrender1_1%3a0.9.9-0ubuntu1_amd64.deb 18482 MD5Sum:124d535fd56229469116dfd6e47fe406 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxtst/libxtst6_1.2.2-1_amd64.deb' libxtst6_2%3a1.2.2-1_amd64.deb 14086 MD5Sum:2594435dcd76d6eec2ff3fb68a3d4e9d -'http://us.archive.ubuntu.com/ubuntu/pool/main/liby/libyaml/libyaml-0-2_0.1.6-3_amd64.deb' libyaml-0-2_0.1.6-3_amd64.deb 47596 MD5Sum:d5e5f5f176ebfe25ccb22965431bfe38 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/language-selector/language-selector-common_0.165.4_all.deb' language-selector-common_0.165.4_all.deb 213586 MD5Sum:b020f997ca40682c071d7b0f5c44062e -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/lcms2/liblcms2-2_2.6-3ubuntu2_amd64.deb' liblcms2-2_2.6-3ubuntu2_amd64.deb 136966 MD5Sum:425ab20e484e500aa2d48a281cb98d2c -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/less/less_481-2.1ubuntu0.1_amd64.deb' less_481-2.1ubuntu0.1_amd64.deb 109538 MD5Sum:ae43696453da4a56d9db1215e95e8302 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-firmware/linux-firmware_1.157.4_all.deb' linux-firmware_1.157.4_all.deb 32779996 MD5Sum:0f696c8a8de78e7721f164015328498e -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-headers-4.4.0-42_4.4.0-42.62_all.deb' linux-headers-4.4.0-42_4.4.0-42.62_all.deb 9948528 MD5Sum:abe8e11814e7c6e4edfa96b363c90461 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-headers-4.4.0-42-generic_4.4.0-42.62_amd64.deb' linux-headers-4.4.0-42-generic_4.4.0-42.62_amd64.deb 788508 MD5Sum:b2afb09929d0cc68657143289307fef9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-image-4.4.0-42-generic_4.4.0-42.62_amd64.deb' linux-image-4.4.0-42-generic_4.4.0-42.62_amd64.deb 18753766 MD5Sum:f55925e343173816b8b1d57a91a1bb03 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-image-extra-4.4.0-42-generic_4.4.0-42.62_amd64.deb' linux-image-extra-4.4.0-42-generic_4.4.0-42.62_amd64.deb 38993840 MD5Sum:98256fd53e2e4ef3c13f618218378991 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-libc-dev_4.4.0-42.62_amd64.deb' linux-libc-dev_4.4.0-42.62_amd64.deb 837378 MD5Sum:b5a8a47c365233058ac3c88c73e3dd5b -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta/linux-generic_4.4.0.42.44_amd64.deb' linux-generic_4.4.0.42.44_amd64.deb 1786 MD5Sum:f72f5e107062415a98de4067b9207e9d -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta/linux-headers-generic_4.4.0.42.44_amd64.deb' linux-headers-generic_4.4.0.42.44_amd64.deb 2294 MD5Sum:30d5d1420ca1a890237079213493c54c -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta/linux-image-generic_4.4.0.42.44_amd64.deb' linux-image-generic_4.4.0.42.44_amd64.deb 2324 MD5Sum:cfd481fe302c084175851e69debf52bd -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/make-dfsg/make_4.1-6_amd64.deb' make_4.1-6_amd64.deb 150924 MD5Sum:a2c33fce65c313f2d9be0e55166fc3f5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/manpages/manpages_4.04-2_all.deb' manpages_4.04-2_all.deb 1086712 MD5Sum:bb93c041e490ee0b6c2fef876dddf502 -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/manpages/manpages-dev_4.04-2_all.deb' manpages-dev_4.04-2_all.deb 2047608 MD5Sum:fea47c59fcc997aeab05238ecf9c5aba -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/markupsafe/python3-markupsafe_0.23-2build2_amd64.deb' python3-markupsafe_0.23-2build2_amd64.deb 16120 MD5Sum:de4d087f2d9db48351efd1fe861b21be -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/mpclib3/libmpc3_1.0.3-1_amd64.deb' libmpc3_1.0.3-1_amd64.deb 39676 MD5Sum:7892c51e73d8c5a5c16c1f2e8b93faa1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/mpfr4/libmpfr4_3.1.4-1_amd64.deb' libmpfr4_3.1.4-1_amd64.deb 190628 MD5Sum:5e8b331bd179e68edf5734a8b11306b2 -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/msr-tools/msr-tools_1.3-2_amd64.deb' msr-tools_1.3-2_amd64.deb 10636 MD5Sum:5ffb50c3889cfccc901b940923d89e29 -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nfs-utils/nfs-common_1.2.8-9ubuntu12_amd64.deb' nfs-common_1%3a1.2.8-9ubuntu12_amd64.deb 184538 MD5Sum:811cfcf44b77a9f3c0dca443c4a6cdbf -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nspr/libnspr4_4.12-0ubuntu0.16.04.1_amd64.deb' libnspr4_2%3a4.12-0ubuntu0.16.04.1_amd64.deb 112400 MD5Sum:6136aa494e3970cef74a03a5cc2415bb -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3_3.23-0ubuntu0.16.04.1_amd64.deb' libnss3_2%3a3.23-0ubuntu0.16.04.1_amd64.deb 1144232 MD5Sum:05b78e390c150fd4eb65c8de47358036 -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3-nssdb_3.23-0ubuntu0.16.04.1_all.deb' libnss3-nssdb_2%3a3.23-0ubuntu0.16.04.1_all.deb 10584 MD5Sum:6e7f301f6169b123e8f9ce82d68451ae -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/numactl/libnuma1_2.0.11-1ubuntu1_amd64.deb' libnuma1_2.0.11-1ubuntu1_amd64.deb 21016 MD5Sum:fb873c905ae23079608114661a32d1c7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openjdk-8/openjdk-8-jdk-headless_8u91-b14-3ubuntu1~16.04.1_amd64.deb' openjdk-8-jdk-headless_8u91-b14-3ubuntu1~16.04.1_amd64.deb 8165662 MD5Sum:601e4084a718213819c04f1bb38c9de1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openjdk-8/openjdk-8-jre-headless_8u91-b14-3ubuntu1~16.04.1_amd64.deb' openjdk-8-jre-headless_8u91-b14-3ubuntu1~16.04.1_amd64.deb 26881330 MD5Sum:9d11f2586e47b0062c55d440bdb48118 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openldap/libldap-2.4-2_2.4.42+dfsg-2ubuntu3.1_amd64.deb' libldap-2.4-2_2.4.42+dfsg-2ubuntu3.1_amd64.deb 160630 MD5Sum:bfb7d8edf8289d8f01742469420efe37 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-client_7.2p2-4ubuntu2.1_amd64.deb' openssh-client_1%3a7.2p2-4ubuntu2.1_amd64.deb 587050 MD5Sum:55c7b2f2e9e18fbd70ce9f042bd99261 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-server_7.2p2-4ubuntu2.1_amd64.deb' openssh-server_1%3a7.2p2-4ubuntu2.1_amd64.deb 337896 MD5Sum:c2c16d323dbb288f745b7537c327d206 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-sftp-server_7.2p2-4ubuntu2.1_amd64.deb' openssh-sftp-server_1%3a7.2p2-4ubuntu2.1_amd64.deb 38762 MD5Sum:952e3bb32e10e130a090fa057dc408a6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.0.0_1.0.2g-1ubuntu4.5_amd64.deb' libssl1.0.0_1.0.2g-1ubuntu4.5_amd64.deb 1081760 MD5Sum:43fd613e133e35e98333ebceae7184ff -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_1.0.2g-1ubuntu4.5_amd64.deb' openssl_1.0.2g-1ubuntu4.5_amd64.deb 491434 MD5Sum:cff1a42acbf034afde850269791440af -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/opus/libopus0_1.1.2-1ubuntu1_amd64.deb' libopus0_1.1.2-1ubuntu1_amd64.deb 159200 MD5Sum:b8f45b2da56ac6d1a5a64769d2232e2c -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/p11-kit/libp11-kit0_0.23.2-5~ubuntu16.04.1_amd64.deb' libp11-kit0_0.23.2-5~ubuntu16.04.1_amd64.deb 105478 MD5Sum:b7eac686f16419708424463a5abcd859 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/patch/patch_2.7.5-1_amd64.deb' patch_2.7.5-1_amd64.deb 90382 MD5Sum:0c03555b50fc094f942a938e9efb33d8 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pcsc-lite/libpcsclite1_1.8.14-1ubuntu1_amd64.deb' libpcsclite1_1.8.14-1ubuntu1_amd64.deb 21384 MD5Sum:67383a357c969292fa13d5ca85fc1737 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/libperl5.22_5.22.1-9_amd64.deb' libperl5.22_5.22.1-9_amd64.deb 3370548 MD5Sum:37c5a3fd13de2e1fbe0568aceb4ff043 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl_5.22.1-9_amd64.deb' perl_5.22.1-9_amd64.deb 237264 MD5Sum:a4b787e5cf0a032822bc486ace90cdad -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl-modules-5.22_5.22.1-9_all.deb' perl-modules-5.22_5.22.1-9_all.deb 2640598 MD5Sum:71fb658af2eeaedbe87494cf511a0c92 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pixman/libpixman-1-0_0.33.6-1_amd64.deb' libpixman-1-0_0.33.6-1_amd64.deb 231222 MD5Sum:2d60906f5c3e3a3548490b1c621d1392 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/prettytable/python3-prettytable_0.7.2-3_all.deb' python3-prettytable_0.7.2-3_all.deb 19730 MD5Sum:958069d49fc751b73d945ac2e5adec4f -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pulseaudio/libpulse0_8.0-0ubuntu3_amd64.deb' libpulse0_1%3a8.0-0ubuntu3_amd64.deb 247294 MD5Sum:429bb3f1bbf5d4262c74dba335de1c7d -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyasn1/python3-pyasn1_0.1.9-1_all.deb' python3-pyasn1_0.1.9-1_all.deb 28132 MD5Sum:aea3d0df93c568bda4817c3c3910ef08 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pycurl/python3-pycurl_7.43.0-1ubuntu1_amd64.deb' python3-pycurl_7.43.0-1ubuntu1_amd64.deb 42334 MD5Sum:9384e6be4685d2cd06994a6ec23dbfac -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyjwt/python3-jwt_1.3.0-1_all.deb' python3-jwt_1.3.0-1_all.deb 15994 MD5Sum:aa1437e45418bb3371e1ab78fad20c8b -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyserial/python3-serial_3.0.1-1_all.deb' python3-serial_3.0.1-1_all.deb 54058 MD5Sum:4b9e76fe3f6cdaa0c8d8f5c6ee0e80b1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7_2.7.12-1~16.04_amd64.deb' libpython2.7_2.7.12-1~16.04_amd64.deb 1070082 MD5Sum:5dee64f8f1d154b5b06ce6bda5ca88a3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-dev_2.7.12-1~16.04_amd64.deb' libpython2.7-dev_2.7.12-1~16.04_amd64.deb 27811082 MD5Sum:ca436bfa41ffa542be09fae6a5d0cfa0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-minimal_2.7.12-1~16.04_amd64.deb' libpython2.7-minimal_2.7.12-1~16.04_amd64.deb 339248 MD5Sum:3026db2e76567a2fa0a448196a61595e -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-stdlib_2.7.12-1~16.04_amd64.deb' libpython2.7-stdlib_2.7.12-1~16.04_amd64.deb 1877292 MD5Sum:d4f16d116fa39fc21e12a3a07ab3978c -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7_2.7.12-1~16.04_amd64.deb' python2.7_2.7.12-1~16.04_amd64.deb 223912 MD5Sum:083fcd207064b991e671bce4229540ab -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7-dev_2.7.12-1~16.04_amd64.deb' python2.7-dev_2.7.12-1~16.04_amd64.deb 276004 MD5Sum:4ddffd34d74ae8900257d422a68d1565 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7-minimal_2.7.12-1~16.04_amd64.deb' python2.7-minimal_2.7.12-1~16.04_amd64.deb 1294316 MD5Sum:5728b152923b667dd3da148fc8e7523e -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/libpython3.5-minimal_3.5.2-2~16.04_amd64.deb' libpython3.5-minimal_3.5.2-2~16.04_amd64.deb 526904 MD5Sum:1d60f7158bf90f03a06e9ac6a7daffdd -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/libpython3.5-stdlib_3.5.2-2~16.04_amd64.deb' libpython3.5-stdlib_3.5.2-2~16.04_amd64.deb 2130712 MD5Sum:2ee59e3acacfd6b6d0b1521489a494b1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/python3.5_3.5.2-2~16.04_amd64.deb' python3.5_3.5.2-2~16.04_amd64.deb 165248 MD5Sum:577fd35ad727e2c76673f611d99d4257 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/python3.5-minimal_3.5.2-2~16.04_amd64.deb' python3.5-minimal_3.5.2-2~16.04_amd64.deb 1599056 MD5Sum:697c4af00b5744388835a023b2d5db3f -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-cffi/python3-cffi-backend_1.5.2-1ubuntu1_amd64.deb' python3-cffi-backend_1.5.2-1ubuntu1_amd64.deb 59108 MD5Sum:c27b5b99bd74a557cbf97186a1266bf7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-cryptography/python3-cryptography_1.2.3-1_amd64.deb' python3-cryptography_1.2.3-1_amd64.deb 198070 MD5Sum:e1e24fd82d7ad6e0c0a5ecf2931a3dc2 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-all-dev_2.7.11-1_amd64.deb' libpython-all-dev_2.7.11-1_amd64.deb 992 MD5Sum:5b8013073862e493f5c4f35e4fc12d62 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-dev_2.7.11-1_amd64.deb' libpython-dev_2.7.11-1_amd64.deb 7728 MD5Sum:27b5b2364088a2e4d49e00e0b50f75e1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-stdlib_2.7.11-1_amd64.deb' libpython-stdlib_2.7.11-1_amd64.deb 7656 MD5Sum:0632b48d11a10ea0b58adad543887f8a -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python_2.7.11-1_amd64.deb' python_2.7.11-1_amd64.deb 136892 MD5Sum:af686bd03f39be3f3cd865d38b44f5bf -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-all_2.7.11-1_amd64.deb' python-all_2.7.11-1_amd64.deb 978 MD5Sum:bf338b9d5360ec685bfbf9a323afcf1e -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-all-dev_2.7.11-1_amd64.deb' python-all-dev_2.7.11-1_amd64.deb 1000 MD5Sum:d68ff89d7581cd985bc0ff3c7c1c31a0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-dev_2.7.11-1_amd64.deb' python-dev_2.7.11-1_amd64.deb 1160 MD5Sum:a1dc029ad0f502f7d41fdb5639650b85 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-minimal_2.7.11-1_amd64.deb' python-minimal_2.7.11-1_amd64.deb 28156 MD5Sum:5f74584a69921aac52908a029aca4e04 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-idna/python3-idna_2.0-3_all.deb' python3-idna_2.0-3_all.deb 35084 MD5Sum:5a78ae4de7cc7e91a16badc125cf5225 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-json-patch/python3-jsonpatch_1.19-3_all.deb' python3-jsonpatch_1.19-3_all.deb 12416 MD5Sum:cb2596025e967af7ff27427842766833 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-json-pointer/python3-json-pointer_1.9-3_all.deb' python3-json-pointer_1.9-3_all.deb 7262 MD5Sum:1bde57c985279df596aed63775fd1ed5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-oauthlib/python3-oauthlib_1.0.3-1_all.deb' python3-oauthlib_1.0.3-1_all.deb 62486 MD5Sum:7c1f5bd6db8c0ce8c08dd4220ee548a6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-pkg-resources_20.7.0-1_all.deb' python-pkg-resources_20.7.0-1_all.deb 108428 MD5Sum:33fb00c7fd20b868b36407e0210cda2c -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-setuptools_20.7.0-1_all.deb' python-setuptools_20.7.0-1_all.deb 169084 MD5Sum:5f51f781ed0c8c027029cf58336b1858 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyyaml/python3-yaml_3.11-3build1_amd64.deb' python3-yaml_3.11-3build1_amd64.deb 95592 MD5Sum:1f9e9ba917bfc2ab4857bae73434c7a7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-block-extra_2.5+dfsg-5ubuntu10.5_amd64.deb' qemu-block-extra_1%3a2.5+dfsg-5ubuntu10.5_amd64.deb 31710 MD5Sum:a552a1fbe088097abd5cac1c757a372e -'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-common_2.5+dfsg-5ubuntu10.5_amd64.deb' qemu-system-common_1%3a2.5+dfsg-5ubuntu10.5_amd64.deb 281388 MD5Sum:1f06c1eca84618b7b5992b733f59fcda -'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-x86_2.5+dfsg-5ubuntu10.5_amd64.deb' qemu-system-x86_1%3a2.5+dfsg-5ubuntu10.5_amd64.deb 2751474 MD5Sum:c6a73f74845e5a3af46b68488ec0a2ac -'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-utils_2.5+dfsg-5ubuntu10.5_amd64.deb' qemu-utils_1%3a2.5+dfsg-5ubuntu10.5_amd64.deb 578554 MD5Sum:2f873fab98b4a7163ae791c6e4b91251 -'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rename/rename_0.20-4_all.deb' rename_0.20-4_all.deb 12010 MD5Sum:6cf1938ef51145a469ccef181a9304ce -'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rpcbind/rpcbind_0.2.3-0.2_amd64.deb' rpcbind_0.2.3-0.2_amd64.deb 40252 MD5Sum:52576ed752c0c2bb04db68576aecd827 -'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rsync/rsync_3.1.1-3ubuntu1_amd64.deb' rsync_3.1.1-3ubuntu1_amd64.deb 324680 MD5Sum:c856c6f0ced17498b62cd5222918e2e0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d-1build1_amd64.deb' librtmp1_2.4+20151223.gitfa8646d-1build1_amd64.deb 53892 MD5Sum:8b0bf8b00890590f67fba42b8050de2d -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/seabios/seabios_1.8.2-1ubuntu1_all.deb' seabios_1.8.2-1ubuntu1_all.deb 112532 MD5Sum:4c2c2bf6aa6d8bd26f90aa21a4ac4e0f -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/sharutils/sharutils_4.15.2-1_amd64.deb' sharutils_1%3a4.15.2-1_amd64.deb 148320 MD5Sum:82eebb19d70fcb9fe029b7e34407bea9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/software-properties/python3-software-properties_0.96.20.4_all.deb' python3-software-properties_0.96.20.4_all.deb 20002 MD5Sum:40c2d5596791c7ecf44a532f2e37f778 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/software-properties/software-properties-common_0.96.20.4_all.deb' software-properties-common_0.96.20.4_all.deb 9416 MD5Sum:c90b19b946703ae87f9969efda4d9a67 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/spice/libspice-server1_0.12.6-4ubuntu0.1_amd64.deb' libspice-server1_0.12.6-4ubuntu0.1_amd64.deb 337930 MD5Sum:c9c1151a559f28da293d41e9df4262da -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/libstrongswan_5.3.5-1ubuntu3_amd64.deb' libstrongswan_5.3.5-1ubuntu3_amd64.deb 1389936 MD5Sum:35b18e264b9596ab99b4a1be3d04bc13 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/libstrongswan-standard-plugins_5.3.5-1ubuntu3_amd64.deb' libstrongswan-standard-plugins_5.3.5-1ubuntu3_amd64.deb 265898 MD5Sum:5a06dd0c30304a6c3cc1263ca3f15c3d -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan_5.3.5-1ubuntu3_all.deb' strongswan_5.3.5-1ubuntu3_all.deb 27042 MD5Sum:b6336f9bc594ab356d13fdcb8e56ce9f -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-charon_5.3.5-1ubuntu3_amd64.deb' strongswan-charon_5.3.5-1ubuntu3_amd64.deb 55514 MD5Sum:22a8d0cdba50b922ae9611c297820208 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-libcharon_5.3.5-1ubuntu3_amd64.deb' strongswan-libcharon_5.3.5-1ubuntu3_amd64.deb 1240762 MD5Sum:9d230aea890e695545a7508af56eac24 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-starter_5.3.5-1ubuntu3_amd64.deb' strongswan-starter_5.3.5-1ubuntu3_amd64.deb 742676 MD5Sum:a793db72f6f7bc37dc29393399b9bfd5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/sudo/sudo_1.8.16-0ubuntu1.2_amd64.deb' sudo_1.8.16-0ubuntu1.2_amd64.deb 389432 MD5Sum:bebd286de1e01ef45e41786461e42cdc -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libsystemd0_229-4ubuntu10_amd64.deb' libsystemd0_229-4ubuntu10_amd64.deb 205726 MD5Sum:d1946ee175dffd7abcf51278b8d4be7a -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libudev1_229-4ubuntu10_amd64.deb' libudev1_229-4ubuntu10_amd64.deb 55752 MD5Sum:c00fd8b035d1dcdb299ca77ee6228e88 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/systemd_229-4ubuntu10_amd64.deb' systemd_229-4ubuntu10_amd64.deb 3640766 MD5Sum:1c4954a49114d36b10da6441fb35beaf -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/systemd-sysv_229-4ubuntu10_amd64.deb' systemd-sysv_229-4ubuntu10_amd64.deb 13218 MD5Sum:b4c21c06b2dc8bac3e07257c34cce1dd -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/udev_229-4ubuntu10_amd64.deb' udev_229-4ubuntu10_amd64.deb 990560 MD5Sum:98ad18faeebec667d871891190f55c78 -'http://us.archive.ubuntu.com/ubuntu/pool/main/u/unattended-upgrades/unattended-upgrades_0.90_all.deb' unattended-upgrades_0.90_all.deb 31606 MD5Sum:6cb4bffbe7b838886a63ecd786f92374 -'http://us.archive.ubuntu.com/ubuntu/pool/main/u/usbredir/libusbredirparser1_0.7.1-1_amd64.deb' libusbredirparser1_0.7.1-1_amd64.deb 13612 MD5Sum:617c6126646b6b4d1e159b31a4a0dd28 -'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xen/libxen-4.6_4.6.0-1ubuntu4.2_amd64.deb' libxen-4.6_4.6.0-1ubuntu4.2_amd64.deb 344510 MD5Sum:5ca2669763f0de854ae0e967a22c2330 -'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xen/libxenstore3.0_4.6.0-1ubuntu4.2_amd64.deb' libxenstore3.0_4.6.0-1ubuntu4.2_amd64.deb 19658 MD5Sum:aa5c61be8faa0cd725d4bd0cc78fb35a -'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xorg/x11-common_7.7+13ubuntu3_all.deb' x11-common_1%3a7.7+13ubuntu3_all.deb 22390 MD5Sum:b0943f823b6f471e8c41ca66c2b5a2dd -'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xz-utils/xz-utils_5.1.1alpha+20120614-2ubuntu2_amd64.deb' xz-utils_5.1.1alpha+20120614-2ubuntu2_amd64.deb 78794 MD5Sum:195995c093404e3ee766d04ea3cdffe6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/y/yajl/libyajl2_2.1.0-2_amd64.deb' libyajl2_2.1.0-2_amd64.deb 19638 MD5Sum:331f71d0965718605fe52fa178cef955 -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-pip/python-pip_8.1.1-2ubuntu0.2_all.deb' python-pip_8.1.1-2ubuntu0.2_all.deb 144304 MD5Sum:9ee95be0f5610c55ca17f2a713283f82 -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-pip/python-pip-whl_8.1.1-2ubuntu0.2_all.deb' python-pip-whl_8.1.1-2ubuntu0.2_all.deb 1110592 MD5Sum:6e97a284519dbc91a258f373be337cb1 -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/python3-virtualenv_15.0.1+ds-3_all.deb' python3-virtualenv_15.0.1+ds-3_all.deb 43314 MD5Sum:1b24978862f9c9f1c59b6569f2480859 -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/python-virtualenv_15.0.1+ds-3_all.deb' python-virtualenv_15.0.1+ds-3_all.deb 46666 MD5Sum:767afd769b5d61aa707daf76b86afd1e -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/virtualenv_15.0.1+ds-3_all.deb' virtualenv_15.0.1+ds-3_all.deb 4342 MD5Sum:181e1f80105ca58cadcae1d351d916ce -'http://us.archive.ubuntu.com/ubuntu/pool/universe/w/wheel/python-wheel_0.29.0-1_all.deb' python-wheel_0.29.0-1_all.deb 48050 MD5Sum:cec5453c98565e6c57d446c45176f38b +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/accountsservice/accountsservice_0.6.40-2ubuntu11.2_amd64.deb' accountsservice_0.6.40-2ubuntu11.2_amd64.deb 56180 MD5Sum:6bea6a08b0a3a74c847aa27ccdba1b9e +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/accountsservice/libaccountsservice0_0.6.40-2ubuntu11.2_amd64.deb' libaccountsservice0_0.6.40-2ubuntu11.2_amd64.deb 68856 MD5Sum:607cc8b17a6a5ed940060400d964e189 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/acl/acl_2.2.52-3_amd64.deb' acl_2.2.52-3_amd64.deb 37960 MD5Sum:39c72a4a24b243236757759d679380bb +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2_1.1.0-0ubuntu1_amd64.deb' libasound2_1.1.0-0ubuntu1_amd64.deb 350112 MD5Sum:c7a5b1b0cfdd1d7f1a8f26bcac4701a3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2-data_1.1.0-0ubuntu1_all.deb' libasound2-data_1.1.0-0ubuntu1_all.deb 29438 MD5Sum:4cd49c6c84f451d11459c880236bb337 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apparmor/libapparmor1_2.10.95-0ubuntu2.2_amd64.deb' libapparmor1_2.10.95-0ubuntu2.2_amd64.deb 31764 MD5Sum:1480ea01ece83354a5de93c65428d37b +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/apt-transport-https_1.2.12~ubuntu16.04.1_amd64.deb' apt-transport-https_1.2.12~ubuntu16.04.1_amd64.deb 25682 MD5Sum:cac09fdaa937c86826857b7295c9a6ee +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-client3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb' libavahi-client3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb 25148 MD5Sum:e58d3b6a71e9da24b430f76f90f63f9d +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-common3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb' libavahi-common3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb 21642 MD5Sum:9f4106c0918bf2b779e7d4e2158ef648 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-common-data_0.6.32~rc+dfsg-1ubuntu2_amd64.deb' libavahi-common-data_0.6.32~rc+dfsg-1ubuntu2_amd64.deb 21706 MD5Sum:f7e6efc7b58036c6154be9b3f050845b +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libdns-export162_9.10.3.dfsg.P4-8ubuntu1.1_amd64.deb' libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.1_amd64.deb 664976 MD5Sum:626456312a8c704499dcdfbe82d46d1a +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libisc-export160_9.10.3.dfsg.P4-8ubuntu1.1_amd64.deb' libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.1_amd64.deb 152104 MD5Sum:abf810146cd0bbb6b7b59b2bae6ffe29 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/binutils/binutils_2.26.1-1ubuntu1~16.04.3_amd64.deb' binutils_2.26.1-1ubuntu1~16.04.3_amd64.deb 2310310 MD5Sum:04b00c4b3ba1d86afbb679b63476d05a +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/blinker/python3-blinker_1.3.dfsg2-1build1_all.deb' python3-blinker_1.3.dfsg2-1build1_all.deb 12518 MD5Sum:ba0b5d380216ccb354cbc9a21e0929d5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bluez/libbluetooth3_5.37-0ubuntu5_amd64.deb' libbluetooth3_5.37-0ubuntu5_amd64.deb 61306 MD5Sum:c8a82247c33f550d76e9489de794533d +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-iostreams1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-iostreams1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 28954 MD5Sum:6f938f436adabb8e01cf4382f1d89876 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-random1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-random1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 11674 MD5Sum:22138508eb0106143b73c270141d1761 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-system1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-system1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 9146 MD5Sum:3dd69b1b4c2a64a4600cd781c38f3c6a +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-thread1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-thread1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 47010 MD5Sum:2c185c0d3e0ff3d424fbb077e78fe545 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bridge-utils/bridge-utils_1.5-9ubuntu1_amd64.deb' bridge-utils_1.5-9ubuntu1_amd64.deb 28610 MD5Sum:a81ea7f42da2e7a6c32b866681897ad4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/brltty/libbrlapi0.6_5.3.1-2ubuntu2.1_amd64.deb' libbrlapi0.6_5.3.1-2ubuntu2.1_amd64.deb 20714 MD5Sum:18e457ca6629c3a0863994a976f93973 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/build-essential/build-essential_12.1ubuntu2_amd64.deb' build-essential_12.1ubuntu2_amd64.deb 4758 MD5Sum:731c3a328f87a14bf4f887ceffc51241 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ca-certificates-java/ca-certificates-java_20160321_all.deb' ca-certificates-java_20160321_all.deb 12862 MD5Sum:fcb5fd121a45e7e49b85e87fc038d6d5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ceph/librados2_10.2.2-0ubuntu0.16.04.2_amd64.deb' librados2_10.2.2-0ubuntu0.16.04.2_amd64.deb 1633494 MD5Sum:b977fc1737be2db89e3cdafc8134e1ac +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ceph/librbd1_10.2.2-0ubuntu0.16.04.2_amd64.deb' librbd1_10.2.2-0ubuntu0.16.04.2_amd64.deb 2108866 MD5Sum:60f4d61fe06d5fbf8e7d8c5b80f1cf16 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloud-init/cloud-init_0.7.8-1-g3705bb5-0ubuntu1~16.04.1_all.deb' cloud-init_0.7.8-1-g3705bb5-0ubuntu1~16.04.1_all.deb 268710 MD5Sum:d0c6d223fd5555659546cc9bf5a09f9e +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloud-utils/cloud-guest-utils_0.27-0ubuntu24_all.deb' cloud-guest-utils_0.27-0ubuntu24_all.deb 15164 MD5Sum:8b08dbc4a576e942fe4acdd9f4f51aca +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/configobj/python3-configobj_5.0.6-2_all.deb' python3-configobj_5.0.6-2_all.deb 34200 MD5Sum:cbce754e3638c980fd63c384f1a163a8 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cpu-checker/cpu-checker_0.7-0ubuntu7_amd64.deb' cpu-checker_0.7-0ubuntu7_amd64.deb 6862 MD5Sum:1a809fb421f82a1d5d148013bedcba59 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cups/libcups2_2.1.3-4_amd64.deb' libcups2_2.1.3-4_amd64.deb 196652 MD5Sum:3995ab409b0cb7c4440dfc90b54729d6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/curl/libcurl3-gnutls_7.47.0-1ubuntu2.1_amd64.deb' libcurl3-gnutls_7.47.0-1ubuntu2.1_amd64.deb 183306 MD5Sum:3d0b151da2430eaebfec7cfce3f8f224 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.26.dfsg1-14build1_amd64.deb' libsasl2-2_2.1.26.dfsg1-14build1_amd64.deb 48708 MD5Sum:af15d7b37cbdfc4c413273c5225a67a6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cyrus-sasl2/libsasl2-modules_2.1.26.dfsg1-14build1_amd64.deb' libsasl2-modules_2.1.26.dfsg1-14build1_amd64.deb 47526 MD5Sum:8fda866e5a4adfe40a1ffc15fac77542 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cyrus-sasl2/libsasl2-modules-db_2.1.26.dfsg1-14build1_amd64.deb' libsasl2-modules-db_2.1.26.dfsg1-14build1_amd64.deb 14458 MD5Sum:08577afddd24ee2e6fce4ff455653081 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/device-tree-compiler/libfdt1_1.4.0+dfsg-2_amd64.deb' libfdt1_1.4.0+dfsg-2_amd64.deb 14136 MD5Sum:ea277dec72e4b0dc9ae18140dab6f147 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dkms/dkms_2.2.0.3-2ubuntu11.2_all.deb' dkms_2.2.0.3-2ubuntu11.2_all.deb 66166 MD5Sum:60b5993d95679f32bbf2d015082f8325 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg-dev_1.18.4ubuntu1.1_all.deb' dpkg-dev_1.18.4ubuntu1.1_all.deb 584114 MD5Sum:8e732fd2f0eb2141b9fa5efa33891858 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/libdpkg-perl_1.18.4ubuntu1.1_all.deb' libdpkg-perl_1.18.4ubuntu1.1_all.deb 195494 MD5Sum:ef90a84e0cbdc08dbf664d3367ba0fc4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/e/expat/libexpat1-dev_2.1.0-7ubuntu0.16.04.2_amd64.deb' libexpat1-dev_2.1.0-7ubuntu0.16.04.2_amd64.deb 115328 MD5Sum:df5d013eec845ea323df40c64e3ac2e6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/fakeroot_1.20.2-1ubuntu1_amd64.deb' fakeroot_1.20.2-1ubuntu1_amd64.deb 61784 MD5Sum:b153b1ed316419be55f3f575c092e73b +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/libfakeroot_1.20.2-1ubuntu1_amd64.deb' libfakeroot_1.20.2-1ubuntu1_amd64.deb 25510 MD5Sum:e3c90aa7376ae3a3e966d1688b9dab70 +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/flac/libflac8_1.3.1-4_amd64.deb' libflac8_1.3.1-4_amd64.deb 210396 MD5Sum:c0c0306a333d443f35c866bcf5e05c3a +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fontconfig/fontconfig-config_2.11.94-0ubuntu1.1_all.deb' fontconfig-config_2.11.94-0ubuntu1.1_all.deb 49934 MD5Sum:d8ee5cb98a73e9fd84f0c21b7f00728f +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fontconfig/libfontconfig1_2.11.94-0ubuntu1.1_amd64.deb' libfontconfig1_2.11.94-0ubuntu1.1_amd64.deb 131248 MD5Sum:e1d3510a190b0910720a7ae597ce53ea +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fonts-dejavu/fonts-dejavu-core_2.35-1_all.deb' fonts-dejavu-core_2.35-1_all.deb 1038624 MD5Sum:d3c6235a85d2646078f1b82ab257ef33 +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fuse/libfuse2_2.9.4-1ubuntu3.1_amd64.deb' libfuse2_2.9.4-1ubuntu3.1_amd64.deb 89908 MD5Sum:2bdd7633ce8e2d8b9978756416772991 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/cpp-5_5.4.0-6ubuntu1~16.04.2_amd64.deb' cpp-5_5.4.0-6ubuntu1~16.04.2_amd64.deb 7659676 MD5Sum:9698b350232194a90c341d9f22acb0d3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/g++-5_5.4.0-6ubuntu1~16.04.2_amd64.deb' g++-5_5.4.0-6ubuntu1~16.04.2_amd64.deb 8302162 MD5Sum:58f099107ac2fab651614c8f2fb6da06 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/gcc-5_5.4.0-6ubuntu1~16.04.2_amd64.deb' gcc-5_5.4.0-6ubuntu1~16.04.2_amd64.deb 8604454 MD5Sum:5ff380306e56532dbe785702cf6bd479 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/gcc-5-base_5.4.0-6ubuntu1~16.04.2_amd64.deb' gcc-5-base_5.4.0-6ubuntu1~16.04.2_amd64.deb 16594 MD5Sum:8941046618527561ea3a143dbb43a0d5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libasan2_5.4.0-6ubuntu1~16.04.2_amd64.deb' libasan2_5.4.0-6ubuntu1~16.04.2_amd64.deb 264328 MD5Sum:d4add17174523564cb4f49760d402524 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libatomic1_5.4.0-6ubuntu1~16.04.2_amd64.deb' libatomic1_5.4.0-6ubuntu1~16.04.2_amd64.deb 8902 MD5Sum:791bb61bdab3a151cbf76b208ba56ba0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libcc1-0_5.4.0-6ubuntu1~16.04.2_amd64.deb' libcc1-0_5.4.0-6ubuntu1~16.04.2_amd64.deb 38758 MD5Sum:1efe2ca3c472a4a67fc0ba16932f46dc +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libcilkrts5_5.4.0-6ubuntu1~16.04.2_amd64.deb' libcilkrts5_5.4.0-6ubuntu1~16.04.2_amd64.deb 40032 MD5Sum:fa5a85bc91d27a8010f605414f395ccb +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libgcc-5-dev_5.4.0-6ubuntu1~16.04.2_amd64.deb' libgcc-5-dev_5.4.0-6ubuntu1~16.04.2_amd64.deb 2240894 MD5Sum:c2c62da98a5cb071360bd1edab39b3a5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libgomp1_5.4.0-6ubuntu1~16.04.2_amd64.deb' libgomp1_5.4.0-6ubuntu1~16.04.2_amd64.deb 55060 MD5Sum:b682973038383927d420a3a6388b0675 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libitm1_5.4.0-6ubuntu1~16.04.2_amd64.deb' libitm1_5.4.0-6ubuntu1~16.04.2_amd64.deb 27362 MD5Sum:4ce1445d6e0649b4fac34606042ac642 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/liblsan0_5.4.0-6ubuntu1~16.04.2_amd64.deb' liblsan0_5.4.0-6ubuntu1~16.04.2_amd64.deb 104918 MD5Sum:a4898598aa7d583235f0306b52da4fbc +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libmpx0_5.4.0-6ubuntu1~16.04.2_amd64.deb' libmpx0_5.4.0-6ubuntu1~16.04.2_amd64.deb 9762 MD5Sum:ff9605e2a19365f091f1093a307713d1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libquadmath0_5.4.0-6ubuntu1~16.04.2_amd64.deb' libquadmath0_5.4.0-6ubuntu1~16.04.2_amd64.deb 131348 MD5Sum:ddda6e016e5422789bac0f6414195d62 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++-5-dev_5.4.0-6ubuntu1~16.04.2_amd64.deb' libstdc++-5-dev_5.4.0-6ubuntu1~16.04.2_amd64.deb 1430352 MD5Sum:0e51627ce6c39c2473b5c4d5d2d0d4c9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.deb' libstdc++6_5.4.0-6ubuntu1~16.04.2_amd64.deb 393348 MD5Sum:e81ffa2d98cc04fd295ebac1f8f51c1c +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libtsan0_5.4.0-6ubuntu1~16.04.2_amd64.deb' libtsan0_5.4.0-6ubuntu1~16.04.2_amd64.deb 244150 MD5Sum:fb1996b8b434b8b34e5f56479e3bbc41 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libubsan0_5.4.0-6ubuntu1~16.04.2_amd64.deb' libubsan0_5.4.0-6ubuntu1~16.04.2_amd64.deb 95358 MD5Sum:d325be762cdd32aaf7fe78f8797e2b77 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/cpp_5.3.1-1ubuntu1_amd64.deb' cpp_4%3a5.3.1-1ubuntu1_amd64.deb 27662 MD5Sum:4c291e4aaf6406f61e3188d526479d51 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/g++_5.3.1-1ubuntu1_amd64.deb' g++_4%3a5.3.1-1ubuntu1_amd64.deb 1504 MD5Sum:0c03d113ff00ebc960f294420e60855b +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/gcc_5.3.1-1ubuntu1_amd64.deb' gcc_4%3a5.3.1-1ubuntu1_amd64.deb 5244 MD5Sum:df1516b203a66a86a728eab7a4c349e8 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gdbm/libgdbm3_1.8.3-13.1_amd64.deb' libgdbm3_1.8.3-13.1_amd64.deb 16926 MD5Sum:b2001800d7c61d4b0b12b077a0af2b5a +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gdisk/gdisk_1.0.1-1build1_amd64.deb' gdisk_1.0.1-1build1_amd64.deb 194230 MD5Sum:24e876aa3c2e94e39c17a4551f5d8514 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/git/git_2.7.4-0ubuntu1_amd64.deb' git_1%3a2.7.4-0ubuntu1_amd64.deb 3006120 MD5Sum:0412535c34d3f900629e9409ad73aead +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/git/git-man_2.7.4-0ubuntu1_all.deb' git-man_1%3a2.7.4-0ubuntu1_all.deb 734758 MD5Sum:0c00ac0f6cc7cc5b1b17f2e30ad44342 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc6-dev_2.23-0ubuntu3_amd64.deb' libc6-dev_2.23-0ubuntu3_amd64.deb 2084240 MD5Sum:0437b586145b9179837377a979c78364 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc-dev-bin_2.23-0ubuntu3_amd64.deb' libc-dev-bin_2.23-0ubuntu3_amd64.deb 68656 MD5Sum:366f27af788856105f3402f15a30d92f +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnupg/gnupg_1.4.20-1ubuntu3.1_amd64.deb' gnupg_1.4.20-1ubuntu3.1_amd64.deb 625938 MD5Sum:955b23eb62539452a8aa37e34e6f77c1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnupg/gpgv_1.4.20-1ubuntu3.1_amd64.deb' gpgv_1.4.20-1ubuntu3.1_amd64.deb 165264 MD5Sum:1debba9f668b7dcdca878d1e0e25c98a +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/groff/groff-base_1.22.3-7_amd64.deb' groff-base_1.22.3-7_amd64.deb 1150932 MD5Sum:7afb23ed2960cd67ab3196f29b9ff7e2 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub2-common_2.02~beta2-36ubuntu3.2_amd64.deb' grub2-common_2.02~beta2-36ubuntu3.2_amd64.deb 510912 MD5Sum:634e13acd2c8cab54b01e84b5e254845 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-common_2.02~beta2-36ubuntu3.2_amd64.deb' grub-common_2.02~beta2-36ubuntu3.2_amd64.deb 1706552 MD5Sum:7899a24a07f8b62e08a455bdab510c47 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-pc_2.02~beta2-36ubuntu3.2_amd64.deb' grub-pc_2.02~beta2-36ubuntu3.2_amd64.deb 197080 MD5Sum:5d4cdb8542ad3e63302698a075e5e959 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-pc-bin_2.02~beta2-36ubuntu3.2_amd64.deb' grub-pc-bin_2.02~beta2-36ubuntu3.2_amd64.deb 883966 MD5Sum:9bb93b3374a6ad20419396c488cbf5f9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libasn1-8-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libasn1-8-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 174366 MD5Sum:42aa97710227f6c372d232799fde6790 +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libgssapi3-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libgssapi3-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 96084 MD5Sum:0c9467b00d258e3175addbb5a16fdc72 +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libhcrypto4-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libhcrypto4-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 84938 MD5Sum:d6337d57fa1dda2c877a9f1c163ba0dd +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libheimbase1-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libheimbase1-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 29228 MD5Sum:15a7c7d180f14253f46d5e56409a0ffb +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libheimntlm0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libheimntlm0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 15090 MD5Sum:6f7a32beb2a3a04181c05efe940df1ee +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libhx509-5-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libhx509-5-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 107192 MD5Sum:b2b294bd3d2226f10c69058900323876 +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libkrb5-26-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libkrb5-26-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 202156 MD5Sum:000a329b39ae158d0ec280957741b14d +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libroken18-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libroken18-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 41190 MD5Sum:58c4093551f88ccca3c6c8a11d5e2357 +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libwind0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libwind0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 48180 MD5Sum:7e368713a6d03afb23a8f956a16b9ba7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/ifupdown/ifupdown_0.8.10ubuntu1.1_amd64.deb' ifupdown_0.8.10ubuntu1.1_amd64.deb 54916 MD5Sum:d013023982a1e01067d9ef9e02a327a3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools_0.122ubuntu8.3_all.deb' initramfs-tools_0.122ubuntu8.3_all.deb 8636 MD5Sum:c9c1a2d07e79a31c99a84ca94eb19932 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools-bin_0.122ubuntu8.3_amd64.deb' initramfs-tools-bin_0.122ubuntu8.3_amd64.deb 9130 MD5Sum:d8ec6d9584de01fe838b0f25371a4224 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools-core_0.122ubuntu8.3_all.deb' initramfs-tools-core_0.122ubuntu8.3_all.deb 42596 MD5Sum:a9b10c1bff464cd1569c7160535076f5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/init-system-helpers/init_1.29ubuntu3_amd64.deb' init_1.29ubuntu3_amd64.deb 4716 MD5Sum:5967a023e146860d888297cfb5773017 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/init-system-helpers/init-system-helpers_1.29ubuntu3_all.deb' init-system-helpers_1.29ubuntu3_all.deb 32416 MD5Sum:9b8e5436025f8006ae7f309fd3687b60 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/iptables/iptables_1.6.0-2ubuntu3_amd64.deb' iptables_1.6.0-2ubuntu3_amd64.deb 265782 MD5Sum:706f191cbb20bff7c7a9a0fc01a78c25 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/ipxe/ipxe-qemu_1.0.0+git-20150424.a25a16d-1ubuntu1_all.deb' ipxe-qemu_1.0.0+git-20150424.a25a16d-1ubuntu1_all.deb 717714 MD5Sum:01570467dacbe007f2d0fb76c30653a7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isc-dhcp/isc-dhcp-client_4.3.3-5ubuntu12.3_amd64.deb' isc-dhcp-client_4.3.3-5ubuntu12.3_amd64.deb 222802 MD5Sum:2a48c0fdf30e8337137a801539df7eae +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isc-dhcp/isc-dhcp-common_4.3.3-5ubuntu12.3_amd64.deb' isc-dhcp-common_4.3.3-5ubuntu12.3_amd64.deb 104476 MD5Sum:9dc9a16bf371874e4ba4d0807550264c +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isl/libisl15_0.16.1-1_amd64.deb' libisl15_0.16.1-1_amd64.deb 524254 MD5Sum:eec42a28e5ed8a5eaaf6278b455176ed +'http://us.archive.ubuntu.com/ubuntu/pool/main/j/java-common/java-common_0.56ubuntu2_all.deb' java-common_0.56ubuntu2_all.deb 7742 MD5Sum:cef7383c2628cc09bccbf0777e4eac37 +'http://us.archive.ubuntu.com/ubuntu/pool/main/j/jinja2/python3-jinja2_2.8-1_all.deb' python3-jinja2_2.8-1_all.deb 102518 MD5Sum:2511385ccb261c47c7dc2479abb6848d +'http://us.archive.ubuntu.com/ubuntu/pool/main/k/keyutils/keyutils_1.5.9-8ubuntu1_amd64.deb' keyutils_1.5.9-8ubuntu1_amd64.deb 47054 MD5Sum:c7a363bce61cc8fbfb2b252d7a98f0fa +'http://us.archive.ubuntu.com/ubuntu/pool/main/k/klibc/klibc-utils_2.0.4-8ubuntu1.16.04.2_amd64.deb' klibc-utils_2.0.4-8ubuntu1.16.04.2_amd64.deb 107498 MD5Sum:e07a76e70f2acfef7edf54b08be0a4a3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/k/klibc/libklibc_2.0.4-8ubuntu1.16.04.2_amd64.deb' libklibc_2.0.4-8ubuntu1.16.04.2_amd64.deb 41326 MD5Sum:b123c76c6d8f2f80a6247e5ce915dd48 +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libaio/libaio1_0.3.110-2_amd64.deb' libaio1_0.3.110-2_amd64.deb 6356 MD5Sum:2ed968780e68742f43eddebadf82ff67 +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-perl/libalgorithm-diff-perl_1.19.03-1_all.deb' libalgorithm-diff-perl_1.19.03-1_all.deb 47622 MD5Sum:3d6f7b46454ff0b8589904fc4f8dd602 +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-xs-perl/libalgorithm-diff-xs-perl_0.04-4build1_amd64.deb' libalgorithm-diff-xs-perl_0.04-4build1_amd64.deb 10998 MD5Sum:330e839dcd98097723870b28ba9a8810 +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-merge-perl/libalgorithm-merge-perl_0.08-3_all.deb' libalgorithm-merge-perl_0.08-3_all.deb 11992 MD5Sum:6b456963b6629af0514be1b8ccbaa7fc +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libasyncns/libasyncns0_0.8-5build1_amd64.deb' libasyncns0_0.8-5build1_amd64.deb 12336 MD5Sum:dbb4957abb710a70453eac0e77fc797b +'http://us.archive.ubuntu.com/ubuntu/pool/main/libc/libcaca/libcaca0_0.99.beta19-2build2~gcc5.2_amd64.deb' libcaca0_0.99.beta19-2build2~gcc5.2_amd64.deb 202380 MD5Sum:b49a9b48694bf35e217fee1295dd14dd +'http://us.archive.ubuntu.com/ubuntu/pool/main/libc/libcacard/libcacard0_2.5.0-2_amd64.deb' libcacard0_1%3a2.5.0-2_amd64.deb 19666 MD5Sum:0d371aa9cdc23ac668bc6e2afa1c44f0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libeatmydata/eatmydata_105-3_all.deb' eatmydata_105-3_all.deb 5502 MD5Sum:bc5bc47ea615b69da0f5d3c090c74a91 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libeatmydata/libeatmydata1_105-3_amd64.deb' libeatmydata1_105-3_amd64.deb 7280 MD5Sum:1f39d8cff52be865527547c09fc772db +'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/liberror-perl/liberror-perl_0.17-1.2_all.deb' liberror-perl_0.17-1.2_all.deb 19594 MD5Sum:bd1a8035bbfae2cd7d718f54fd93e0d5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libevent/libevent-2.0-5_2.0.21-stable-2_amd64.deb' libevent-2.0-5_2.0.21-stable-2_amd64.deb 112550 MD5Sum:071d5951d910147ea84d0d024bee13ce +'http://us.archive.ubuntu.com/ubuntu/pool/main/libf/libfile-fcntllock-perl/libfile-fcntllock-perl_0.22-3_amd64.deb' libfile-fcntllock-perl_0.22-3_amd64.deb 32002 MD5Sum:26476d54bf4677cc993c8cd9a7dbaeca +'http://us.archive.ubuntu.com/ubuntu/pool/main/libg/libgcrypt20/libgcrypt20_1.6.5-2ubuntu0.2_amd64.deb' libgcrypt20_1.6.5-2ubuntu0.2_amd64.deb 336194 MD5Sum:ebe89b8db7294a6dc2ff9995a7d30060 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libi/libidn/libidn11_1.32-3ubuntu1.1_amd64.deb' libidn11_1.32-3ubuntu1.1_amd64.deb 45552 MD5Sum:74c4e3f65c05e61596efe2ef46941009 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libi/libiscsi/libiscsi2_1.12.0-2_amd64.deb' libiscsi2_1.12.0-2_amd64.deb 51550 MD5Sum:6c8f4a397968e478e9567785bba4283e +'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg8-empty/libjpeg8_8c-2ubuntu8_amd64.deb' libjpeg8_8c-2ubuntu8_amd64.deb 2194 MD5Sum:e0f16286dd787b951ffa953987fdf6a7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg-turbo/libjpeg-turbo8_1.4.2-0ubuntu3_amd64.deb' libjpeg-turbo8_1.4.2-0ubuntu3_amd64.deb 110656 MD5Sum:8e505d67491b22a9d38be353654b3bc3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnfnetlink/libnfnetlink0_1.0.1-3_amd64.deb' libnfnetlink0_1.0.1-3_amd64.deb 13262 MD5Sum:914d0640e09dd02057d0fd09f3da0eb5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnfsidmap/libnfsidmap2_0.25-5_amd64.deb' libnfsidmap2_0.25-5_amd64.deb 32182 MD5Sum:5e06543f26481fa549a1e017eec4ef36 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libo/libogg/libogg0_1.3.2-1_amd64.deb' libogg0_1.3.2-1_amd64.deb 17192 MD5Sum:55dd9b6982d66d6b168aa18fb3f90d2f +'http://us.archive.ubuntu.com/ubuntu/pool/main/libs/libsdl1.2/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb' libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb 167606 MD5Sum:52418fa1951b7edff3aecc67821f5786 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libs/libsndfile/libsndfile1_1.0.25-10_amd64.deb' libsndfile1_1.0.25-10_amd64.deb 137498 MD5Sum:1218c82cf611a5e4ff9919b91130c21e +'http://us.archive.ubuntu.com/ubuntu/pool/main/libt/libtirpc/libtirpc1_0.2.5-1_amd64.deb' libtirpc1_0.2.5-1_amd64.deb 75624 MD5Sum:bc4fb6407a0636517ce6670fd3ac2c40 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbis0a_1.3.5-3_amd64.deb' libvorbis0a_1.3.5-3_amd64.deb 86776 MD5Sum:248a92f34c15bfc3fff460186eac1358 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbisenc2_1.3.5-3_amd64.deb' libvorbisenc2_1.3.5-3_amd64.deb 70678 MD5Sum:62b0f630a03291eff71de6f844746721 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxi/libxi6_1.7.6-1_amd64.deb' libxi6_2%3a1.7.6-1_amd64.deb 28572 MD5Sum:2ad504b68a0a7c3f987307166de56a3a +'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxrender/libxrender1_0.9.9-0ubuntu1_amd64.deb' libxrender1_1%3a0.9.9-0ubuntu1_amd64.deb 18482 MD5Sum:124d535fd56229469116dfd6e47fe406 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxtst/libxtst6_1.2.2-1_amd64.deb' libxtst6_2%3a1.2.2-1_amd64.deb 14086 MD5Sum:2594435dcd76d6eec2ff3fb68a3d4e9d +'http://us.archive.ubuntu.com/ubuntu/pool/main/liby/libyaml/libyaml-0-2_0.1.6-3_amd64.deb' libyaml-0-2_0.1.6-3_amd64.deb 47596 MD5Sum:d5e5f5f176ebfe25ccb22965431bfe38 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/language-selector/language-selector-common_0.165.4_all.deb' language-selector-common_0.165.4_all.deb 213586 MD5Sum:b020f997ca40682c071d7b0f5c44062e +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/lcms2/liblcms2-2_2.6-3ubuntu2_amd64.deb' liblcms2-2_2.6-3ubuntu2_amd64.deb 136966 MD5Sum:425ab20e484e500aa2d48a281cb98d2c +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/less/less_481-2.1ubuntu0.1_amd64.deb' less_481-2.1ubuntu0.1_amd64.deb 109538 MD5Sum:ae43696453da4a56d9db1215e95e8302 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-firmware/linux-firmware_1.157.4_all.deb' linux-firmware_1.157.4_all.deb 32779996 MD5Sum:0f696c8a8de78e7721f164015328498e +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-headers-4.4.0-42_4.4.0-42.62_all.deb' linux-headers-4.4.0-42_4.4.0-42.62_all.deb 9948528 MD5Sum:abe8e11814e7c6e4edfa96b363c90461 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-headers-4.4.0-42-generic_4.4.0-42.62_amd64.deb' linux-headers-4.4.0-42-generic_4.4.0-42.62_amd64.deb 788508 MD5Sum:b2afb09929d0cc68657143289307fef9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-image-4.4.0-42-generic_4.4.0-42.62_amd64.deb' linux-image-4.4.0-42-generic_4.4.0-42.62_amd64.deb 18753766 MD5Sum:f55925e343173816b8b1d57a91a1bb03 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-image-extra-4.4.0-42-generic_4.4.0-42.62_amd64.deb' linux-image-extra-4.4.0-42-generic_4.4.0-42.62_amd64.deb 38993840 MD5Sum:98256fd53e2e4ef3c13f618218378991 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-libc-dev_4.4.0-42.62_amd64.deb' linux-libc-dev_4.4.0-42.62_amd64.deb 837378 MD5Sum:b5a8a47c365233058ac3c88c73e3dd5b +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta/linux-generic_4.4.0.42.44_amd64.deb' linux-generic_4.4.0.42.44_amd64.deb 1786 MD5Sum:f72f5e107062415a98de4067b9207e9d +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta/linux-headers-generic_4.4.0.42.44_amd64.deb' linux-headers-generic_4.4.0.42.44_amd64.deb 2294 MD5Sum:30d5d1420ca1a890237079213493c54c +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta/linux-image-generic_4.4.0.42.44_amd64.deb' linux-image-generic_4.4.0.42.44_amd64.deb 2324 MD5Sum:cfd481fe302c084175851e69debf52bd +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/make-dfsg/make_4.1-6_amd64.deb' make_4.1-6_amd64.deb 150924 MD5Sum:a2c33fce65c313f2d9be0e55166fc3f5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/manpages/manpages_4.04-2_all.deb' manpages_4.04-2_all.deb 1086712 MD5Sum:bb93c041e490ee0b6c2fef876dddf502 +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/manpages/manpages-dev_4.04-2_all.deb' manpages-dev_4.04-2_all.deb 2047608 MD5Sum:fea47c59fcc997aeab05238ecf9c5aba +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/markupsafe/python3-markupsafe_0.23-2build2_amd64.deb' python3-markupsafe_0.23-2build2_amd64.deb 16120 MD5Sum:de4d087f2d9db48351efd1fe861b21be +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/mpclib3/libmpc3_1.0.3-1_amd64.deb' libmpc3_1.0.3-1_amd64.deb 39676 MD5Sum:7892c51e73d8c5a5c16c1f2e8b93faa1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/mpfr4/libmpfr4_3.1.4-1_amd64.deb' libmpfr4_3.1.4-1_amd64.deb 190628 MD5Sum:5e8b331bd179e68edf5734a8b11306b2 +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/msr-tools/msr-tools_1.3-2_amd64.deb' msr-tools_1.3-2_amd64.deb 10636 MD5Sum:5ffb50c3889cfccc901b940923d89e29 +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nfs-utils/nfs-common_1.2.8-9ubuntu12_amd64.deb' nfs-common_1%3a1.2.8-9ubuntu12_amd64.deb 184538 MD5Sum:811cfcf44b77a9f3c0dca443c4a6cdbf +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nspr/libnspr4_4.12-0ubuntu0.16.04.1_amd64.deb' libnspr4_2%3a4.12-0ubuntu0.16.04.1_amd64.deb 112400 MD5Sum:6136aa494e3970cef74a03a5cc2415bb +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3_3.23-0ubuntu0.16.04.1_amd64.deb' libnss3_2%3a3.23-0ubuntu0.16.04.1_amd64.deb 1144232 MD5Sum:05b78e390c150fd4eb65c8de47358036 +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3-nssdb_3.23-0ubuntu0.16.04.1_all.deb' libnss3-nssdb_2%3a3.23-0ubuntu0.16.04.1_all.deb 10584 MD5Sum:6e7f301f6169b123e8f9ce82d68451ae +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/numactl/libnuma1_2.0.11-1ubuntu1_amd64.deb' libnuma1_2.0.11-1ubuntu1_amd64.deb 21016 MD5Sum:fb873c905ae23079608114661a32d1c7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openjdk-8/openjdk-8-jdk-headless_8u91-b14-3ubuntu1~16.04.1_amd64.deb' openjdk-8-jdk-headless_8u91-b14-3ubuntu1~16.04.1_amd64.deb 8165662 MD5Sum:601e4084a718213819c04f1bb38c9de1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openjdk-8/openjdk-8-jre-headless_8u91-b14-3ubuntu1~16.04.1_amd64.deb' openjdk-8-jre-headless_8u91-b14-3ubuntu1~16.04.1_amd64.deb 26881330 MD5Sum:9d11f2586e47b0062c55d440bdb48118 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openldap/libldap-2.4-2_2.4.42+dfsg-2ubuntu3.1_amd64.deb' libldap-2.4-2_2.4.42+dfsg-2ubuntu3.1_amd64.deb 160630 MD5Sum:bfb7d8edf8289d8f01742469420efe37 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-client_7.2p2-4ubuntu2.1_amd64.deb' openssh-client_1%3a7.2p2-4ubuntu2.1_amd64.deb 587050 MD5Sum:55c7b2f2e9e18fbd70ce9f042bd99261 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-server_7.2p2-4ubuntu2.1_amd64.deb' openssh-server_1%3a7.2p2-4ubuntu2.1_amd64.deb 337896 MD5Sum:c2c16d323dbb288f745b7537c327d206 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-sftp-server_7.2p2-4ubuntu2.1_amd64.deb' openssh-sftp-server_1%3a7.2p2-4ubuntu2.1_amd64.deb 38762 MD5Sum:952e3bb32e10e130a090fa057dc408a6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.0.0_1.0.2g-1ubuntu4.5_amd64.deb' libssl1.0.0_1.0.2g-1ubuntu4.5_amd64.deb 1081760 MD5Sum:43fd613e133e35e98333ebceae7184ff +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_1.0.2g-1ubuntu4.5_amd64.deb' openssl_1.0.2g-1ubuntu4.5_amd64.deb 491434 MD5Sum:cff1a42acbf034afde850269791440af +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/opus/libopus0_1.1.2-1ubuntu1_amd64.deb' libopus0_1.1.2-1ubuntu1_amd64.deb 159200 MD5Sum:b8f45b2da56ac6d1a5a64769d2232e2c +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/p11-kit/libp11-kit0_0.23.2-5~ubuntu16.04.1_amd64.deb' libp11-kit0_0.23.2-5~ubuntu16.04.1_amd64.deb 105478 MD5Sum:b7eac686f16419708424463a5abcd859 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/patch/patch_2.7.5-1_amd64.deb' patch_2.7.5-1_amd64.deb 90382 MD5Sum:0c03555b50fc094f942a938e9efb33d8 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pcsc-lite/libpcsclite1_1.8.14-1ubuntu1_amd64.deb' libpcsclite1_1.8.14-1ubuntu1_amd64.deb 21384 MD5Sum:67383a357c969292fa13d5ca85fc1737 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/libperl5.22_5.22.1-9_amd64.deb' libperl5.22_5.22.1-9_amd64.deb 3370548 MD5Sum:37c5a3fd13de2e1fbe0568aceb4ff043 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl_5.22.1-9_amd64.deb' perl_5.22.1-9_amd64.deb 237264 MD5Sum:a4b787e5cf0a032822bc486ace90cdad +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl-modules-5.22_5.22.1-9_all.deb' perl-modules-5.22_5.22.1-9_all.deb 2640598 MD5Sum:71fb658af2eeaedbe87494cf511a0c92 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pixman/libpixman-1-0_0.33.6-1_amd64.deb' libpixman-1-0_0.33.6-1_amd64.deb 231222 MD5Sum:2d60906f5c3e3a3548490b1c621d1392 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/prettytable/python3-prettytable_0.7.2-3_all.deb' python3-prettytable_0.7.2-3_all.deb 19730 MD5Sum:958069d49fc751b73d945ac2e5adec4f +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pulseaudio/libpulse0_8.0-0ubuntu3_amd64.deb' libpulse0_1%3a8.0-0ubuntu3_amd64.deb 247294 MD5Sum:429bb3f1bbf5d4262c74dba335de1c7d +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyasn1/python3-pyasn1_0.1.9-1_all.deb' python3-pyasn1_0.1.9-1_all.deb 28132 MD5Sum:aea3d0df93c568bda4817c3c3910ef08 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pycurl/python3-pycurl_7.43.0-1ubuntu1_amd64.deb' python3-pycurl_7.43.0-1ubuntu1_amd64.deb 42334 MD5Sum:9384e6be4685d2cd06994a6ec23dbfac +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyjwt/python3-jwt_1.3.0-1_all.deb' python3-jwt_1.3.0-1_all.deb 15994 MD5Sum:aa1437e45418bb3371e1ab78fad20c8b +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyserial/python3-serial_3.0.1-1_all.deb' python3-serial_3.0.1-1_all.deb 54058 MD5Sum:4b9e76fe3f6cdaa0c8d8f5c6ee0e80b1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7_2.7.12-1~16.04_amd64.deb' libpython2.7_2.7.12-1~16.04_amd64.deb 1070082 MD5Sum:5dee64f8f1d154b5b06ce6bda5ca88a3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-dev_2.7.12-1~16.04_amd64.deb' libpython2.7-dev_2.7.12-1~16.04_amd64.deb 27811082 MD5Sum:ca436bfa41ffa542be09fae6a5d0cfa0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-minimal_2.7.12-1~16.04_amd64.deb' libpython2.7-minimal_2.7.12-1~16.04_amd64.deb 339248 MD5Sum:3026db2e76567a2fa0a448196a61595e +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-stdlib_2.7.12-1~16.04_amd64.deb' libpython2.7-stdlib_2.7.12-1~16.04_amd64.deb 1877292 MD5Sum:d4f16d116fa39fc21e12a3a07ab3978c +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7_2.7.12-1~16.04_amd64.deb' python2.7_2.7.12-1~16.04_amd64.deb 223912 MD5Sum:083fcd207064b991e671bce4229540ab +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7-dev_2.7.12-1~16.04_amd64.deb' python2.7-dev_2.7.12-1~16.04_amd64.deb 276004 MD5Sum:4ddffd34d74ae8900257d422a68d1565 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7-minimal_2.7.12-1~16.04_amd64.deb' python2.7-minimal_2.7.12-1~16.04_amd64.deb 1294316 MD5Sum:5728b152923b667dd3da148fc8e7523e +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/libpython3.5-minimal_3.5.2-2~16.04_amd64.deb' libpython3.5-minimal_3.5.2-2~16.04_amd64.deb 526904 MD5Sum:1d60f7158bf90f03a06e9ac6a7daffdd +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/libpython3.5-stdlib_3.5.2-2~16.04_amd64.deb' libpython3.5-stdlib_3.5.2-2~16.04_amd64.deb 2130712 MD5Sum:2ee59e3acacfd6b6d0b1521489a494b1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/python3.5_3.5.2-2~16.04_amd64.deb' python3.5_3.5.2-2~16.04_amd64.deb 165248 MD5Sum:577fd35ad727e2c76673f611d99d4257 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/python3.5-minimal_3.5.2-2~16.04_amd64.deb' python3.5-minimal_3.5.2-2~16.04_amd64.deb 1599056 MD5Sum:697c4af00b5744388835a023b2d5db3f +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-cffi/python3-cffi-backend_1.5.2-1ubuntu1_amd64.deb' python3-cffi-backend_1.5.2-1ubuntu1_amd64.deb 59108 MD5Sum:c27b5b99bd74a557cbf97186a1266bf7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-cryptography/python3-cryptography_1.2.3-1_amd64.deb' python3-cryptography_1.2.3-1_amd64.deb 198070 MD5Sum:e1e24fd82d7ad6e0c0a5ecf2931a3dc2 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-all-dev_2.7.11-1_amd64.deb' libpython-all-dev_2.7.11-1_amd64.deb 992 MD5Sum:5b8013073862e493f5c4f35e4fc12d62 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-dev_2.7.11-1_amd64.deb' libpython-dev_2.7.11-1_amd64.deb 7728 MD5Sum:27b5b2364088a2e4d49e00e0b50f75e1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-stdlib_2.7.11-1_amd64.deb' libpython-stdlib_2.7.11-1_amd64.deb 7656 MD5Sum:0632b48d11a10ea0b58adad543887f8a +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python_2.7.11-1_amd64.deb' python_2.7.11-1_amd64.deb 136892 MD5Sum:af686bd03f39be3f3cd865d38b44f5bf +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-all_2.7.11-1_amd64.deb' python-all_2.7.11-1_amd64.deb 978 MD5Sum:bf338b9d5360ec685bfbf9a323afcf1e +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-all-dev_2.7.11-1_amd64.deb' python-all-dev_2.7.11-1_amd64.deb 1000 MD5Sum:d68ff89d7581cd985bc0ff3c7c1c31a0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-dev_2.7.11-1_amd64.deb' python-dev_2.7.11-1_amd64.deb 1160 MD5Sum:a1dc029ad0f502f7d41fdb5639650b85 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-minimal_2.7.11-1_amd64.deb' python-minimal_2.7.11-1_amd64.deb 28156 MD5Sum:5f74584a69921aac52908a029aca4e04 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-idna/python3-idna_2.0-3_all.deb' python3-idna_2.0-3_all.deb 35084 MD5Sum:5a78ae4de7cc7e91a16badc125cf5225 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-json-patch/python3-jsonpatch_1.19-3_all.deb' python3-jsonpatch_1.19-3_all.deb 12416 MD5Sum:cb2596025e967af7ff27427842766833 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-json-pointer/python3-json-pointer_1.9-3_all.deb' python3-json-pointer_1.9-3_all.deb 7262 MD5Sum:1bde57c985279df596aed63775fd1ed5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-oauthlib/python3-oauthlib_1.0.3-1_all.deb' python3-oauthlib_1.0.3-1_all.deb 62486 MD5Sum:7c1f5bd6db8c0ce8c08dd4220ee548a6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-pkg-resources_20.7.0-1_all.deb' python-pkg-resources_20.7.0-1_all.deb 108428 MD5Sum:33fb00c7fd20b868b36407e0210cda2c +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-setuptools_20.7.0-1_all.deb' python-setuptools_20.7.0-1_all.deb 169084 MD5Sum:5f51f781ed0c8c027029cf58336b1858 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyyaml/python3-yaml_3.11-3build1_amd64.deb' python3-yaml_3.11-3build1_amd64.deb 95592 MD5Sum:1f9e9ba917bfc2ab4857bae73434c7a7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-block-extra_2.5+dfsg-5ubuntu10.5_amd64.deb' qemu-block-extra_1%3a2.5+dfsg-5ubuntu10.5_amd64.deb 31710 MD5Sum:a552a1fbe088097abd5cac1c757a372e +'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-common_2.5+dfsg-5ubuntu10.5_amd64.deb' qemu-system-common_1%3a2.5+dfsg-5ubuntu10.5_amd64.deb 281388 MD5Sum:1f06c1eca84618b7b5992b733f59fcda +'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-x86_2.5+dfsg-5ubuntu10.5_amd64.deb' qemu-system-x86_1%3a2.5+dfsg-5ubuntu10.5_amd64.deb 2751474 MD5Sum:c6a73f74845e5a3af46b68488ec0a2ac +'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-utils_2.5+dfsg-5ubuntu10.5_amd64.deb' qemu-utils_1%3a2.5+dfsg-5ubuntu10.5_amd64.deb 578554 MD5Sum:2f873fab98b4a7163ae791c6e4b91251 +'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rename/rename_0.20-4_all.deb' rename_0.20-4_all.deb 12010 MD5Sum:6cf1938ef51145a469ccef181a9304ce +'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rpcbind/rpcbind_0.2.3-0.2_amd64.deb' rpcbind_0.2.3-0.2_amd64.deb 40252 MD5Sum:52576ed752c0c2bb04db68576aecd827 +'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rsync/rsync_3.1.1-3ubuntu1_amd64.deb' rsync_3.1.1-3ubuntu1_amd64.deb 324680 MD5Sum:c856c6f0ced17498b62cd5222918e2e0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d-1build1_amd64.deb' librtmp1_2.4+20151223.gitfa8646d-1build1_amd64.deb 53892 MD5Sum:8b0bf8b00890590f67fba42b8050de2d +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/seabios/seabios_1.8.2-1ubuntu1_all.deb' seabios_1.8.2-1ubuntu1_all.deb 112532 MD5Sum:4c2c2bf6aa6d8bd26f90aa21a4ac4e0f +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/sharutils/sharutils_4.15.2-1_amd64.deb' sharutils_1%3a4.15.2-1_amd64.deb 148320 MD5Sum:82eebb19d70fcb9fe029b7e34407bea9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/software-properties/python3-software-properties_0.96.20.4_all.deb' python3-software-properties_0.96.20.4_all.deb 20002 MD5Sum:40c2d5596791c7ecf44a532f2e37f778 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/software-properties/software-properties-common_0.96.20.4_all.deb' software-properties-common_0.96.20.4_all.deb 9416 MD5Sum:c90b19b946703ae87f9969efda4d9a67 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/spice/libspice-server1_0.12.6-4ubuntu0.1_amd64.deb' libspice-server1_0.12.6-4ubuntu0.1_amd64.deb 337930 MD5Sum:c9c1151a559f28da293d41e9df4262da +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/libstrongswan_5.3.5-1ubuntu3_amd64.deb' libstrongswan_5.3.5-1ubuntu3_amd64.deb 1389936 MD5Sum:35b18e264b9596ab99b4a1be3d04bc13 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/libstrongswan-standard-plugins_5.3.5-1ubuntu3_amd64.deb' libstrongswan-standard-plugins_5.3.5-1ubuntu3_amd64.deb 265898 MD5Sum:5a06dd0c30304a6c3cc1263ca3f15c3d +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan_5.3.5-1ubuntu3_all.deb' strongswan_5.3.5-1ubuntu3_all.deb 27042 MD5Sum:b6336f9bc594ab356d13fdcb8e56ce9f +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-charon_5.3.5-1ubuntu3_amd64.deb' strongswan-charon_5.3.5-1ubuntu3_amd64.deb 55514 MD5Sum:22a8d0cdba50b922ae9611c297820208 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-libcharon_5.3.5-1ubuntu3_amd64.deb' strongswan-libcharon_5.3.5-1ubuntu3_amd64.deb 1240762 MD5Sum:9d230aea890e695545a7508af56eac24 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-starter_5.3.5-1ubuntu3_amd64.deb' strongswan-starter_5.3.5-1ubuntu3_amd64.deb 742676 MD5Sum:a793db72f6f7bc37dc29393399b9bfd5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/sudo/sudo_1.8.16-0ubuntu1.2_amd64.deb' sudo_1.8.16-0ubuntu1.2_amd64.deb 389432 MD5Sum:bebd286de1e01ef45e41786461e42cdc +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libsystemd0_229-4ubuntu10_amd64.deb' libsystemd0_229-4ubuntu10_amd64.deb 205726 MD5Sum:d1946ee175dffd7abcf51278b8d4be7a +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libudev1_229-4ubuntu10_amd64.deb' libudev1_229-4ubuntu10_amd64.deb 55752 MD5Sum:c00fd8b035d1dcdb299ca77ee6228e88 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/systemd_229-4ubuntu10_amd64.deb' systemd_229-4ubuntu10_amd64.deb 3640766 MD5Sum:1c4954a49114d36b10da6441fb35beaf +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/systemd-sysv_229-4ubuntu10_amd64.deb' systemd-sysv_229-4ubuntu10_amd64.deb 13218 MD5Sum:b4c21c06b2dc8bac3e07257c34cce1dd +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/udev_229-4ubuntu10_amd64.deb' udev_229-4ubuntu10_amd64.deb 990560 MD5Sum:98ad18faeebec667d871891190f55c78 +'http://us.archive.ubuntu.com/ubuntu/pool/main/u/unattended-upgrades/unattended-upgrades_0.90_all.deb' unattended-upgrades_0.90_all.deb 31606 MD5Sum:6cb4bffbe7b838886a63ecd786f92374 +'http://us.archive.ubuntu.com/ubuntu/pool/main/u/usbredir/libusbredirparser1_0.7.1-1_amd64.deb' libusbredirparser1_0.7.1-1_amd64.deb 13612 MD5Sum:617c6126646b6b4d1e159b31a4a0dd28 +'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xen/libxen-4.6_4.6.0-1ubuntu4.2_amd64.deb' libxen-4.6_4.6.0-1ubuntu4.2_amd64.deb 344510 MD5Sum:5ca2669763f0de854ae0e967a22c2330 +'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xen/libxenstore3.0_4.6.0-1ubuntu4.2_amd64.deb' libxenstore3.0_4.6.0-1ubuntu4.2_amd64.deb 19658 MD5Sum:aa5c61be8faa0cd725d4bd0cc78fb35a +'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xorg/x11-common_7.7+13ubuntu3_all.deb' x11-common_1%3a7.7+13ubuntu3_all.deb 22390 MD5Sum:b0943f823b6f471e8c41ca66c2b5a2dd +'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xz-utils/xz-utils_5.1.1alpha+20120614-2ubuntu2_amd64.deb' xz-utils_5.1.1alpha+20120614-2ubuntu2_amd64.deb 78794 MD5Sum:195995c093404e3ee766d04ea3cdffe6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/y/yajl/libyajl2_2.1.0-2_amd64.deb' libyajl2_2.1.0-2_amd64.deb 19638 MD5Sum:331f71d0965718605fe52fa178cef955 +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-pip/python-pip_8.1.1-2ubuntu0.2_all.deb' python-pip_8.1.1-2ubuntu0.2_all.deb 144304 MD5Sum:9ee95be0f5610c55ca17f2a713283f82 +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-pip/python-pip-whl_8.1.1-2ubuntu0.2_all.deb' python-pip-whl_8.1.1-2ubuntu0.2_all.deb 1110592 MD5Sum:6e97a284519dbc91a258f373be337cb1 +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/python3-virtualenv_15.0.1+ds-3_all.deb' python3-virtualenv_15.0.1+ds-3_all.deb 43314 MD5Sum:1b24978862f9c9f1c59b6569f2480859 +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/python-virtualenv_15.0.1+ds-3_all.deb' python-virtualenv_15.0.1+ds-3_all.deb 46666 MD5Sum:767afd769b5d61aa707daf76b86afd1e +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/virtualenv_15.0.1+ds-3_all.deb' virtualenv_15.0.1+ds-3_all.deb 4342 MD5Sum:181e1f80105ca58cadcae1d351d916ce +'http://us.archive.ubuntu.com/ubuntu/pool/universe/w/wheel/python-wheel_0.29.0-1_all.deb' python-wheel_0.29.0-1_all.deb 48050 MD5Sum:cec5453c98565e6c57d446c45176f38b diff --git a/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-10-10_1.4/pip-requirements.txt b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-10-10_1.4/pip-requirements.txt index 17bd8f0d6a..f8bacf5298 100644 --- a/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-10-10_1.4/pip-requirements.txt +++ b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-10-10_1.4/pip-requirements.txt @@ -1,15 +1,15 @@ -docopt==0.6.2 -ecdsa==0.13 -enum34==1.1.2 -interruptingcow==0.6 -ipaddress==1.0.16 -paramiko==1.16.0 -pycrypto==2.6.1 -pykwalify==1.5.0 -python-dateutil==2.4.2 -PyYAML==3.11 -requests==2.9.1 -robotframework==2.9.2 -scapy==2.3.1 -scp==0.10.2 -six==1.10.0 +docopt==0.6.2 +ecdsa==0.13 +enum34==1.1.2 +interruptingcow==0.6 +ipaddress==1.0.16 +paramiko==1.16.0 +pycrypto==2.6.1 +pykwalify==1.5.0 +python-dateutil==2.4.2 +PyYAML==3.11 +requests==2.9.1 +robotframework==2.9.2 +scapy==2.3.1 +scp==0.10.2 +six==1.10.0 diff --git a/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-11-28_1.5/apt-packages.txt b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-11-28_1.5/apt-packages.txt index 333251d965..44f6bc34c3 100644 --- a/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-11-28_1.5/apt-packages.txt +++ b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-11-28_1.5/apt-packages.txt @@ -1,268 +1,268 @@ -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/accountsservice/accountsservice_0.6.40-2ubuntu11.3_amd64.deb' accountsservice_0.6.40-2ubuntu11.3_amd64.deb 56054 MD5Sum:b95cd60fcd9b2d0243c9075beb8d541b -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/accountsservice/libaccountsservice0_0.6.40-2ubuntu11.3_amd64.deb' libaccountsservice0_0.6.40-2ubuntu11.3_amd64.deb 68730 MD5Sum:68be2b361d99978d30dd900fda8775bf -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/acl/acl_2.2.52-3_amd64.deb' acl_2.2.52-3_amd64.deb 37960 MD5Sum:39c72a4a24b243236757759d679380bb -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2_1.1.0-0ubuntu1_amd64.deb' libasound2_1.1.0-0ubuntu1_amd64.deb 350112 MD5Sum:c7a5b1b0cfdd1d7f1a8f26bcac4701a3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2-data_1.1.0-0ubuntu1_all.deb' libasound2-data_1.1.0-0ubuntu1_all.deb 29438 MD5Sum:4cd49c6c84f451d11459c880236bb337 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apparmor/libapparmor1_2.10.95-0ubuntu2.5_amd64.deb' libapparmor1_2.10.95-0ubuntu2.5_amd64.deb 31568 MD5Sum:6368f1dd486380cbbd769547840ccc7e -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/apt_1.2.15_amd64.deb' apt_1.2.15_amd64.deb 1041320 MD5Sum:ba1c209b0186131ddee9c787012922fa -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/apt-utils_1.2.15_amd64.deb' apt-utils_1.2.15_amd64.deb 195914 MD5Sum:e9a50437daa2d3d2262b01b4784899f0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/libapt-inst2.0_1.2.15_amd64.deb' libapt-inst2.0_1.2.15_amd64.deb 55466 MD5Sum:c48d1335a509059951fbf76057edc063 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/libapt-pkg5.0_1.2.15_amd64.deb' libapt-pkg5.0_1.2.15_amd64.deb 702112 MD5Sum:fd14c8389920296a3accc75fea8d253d -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-client3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb' libavahi-client3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb 25148 MD5Sum:e58d3b6a71e9da24b430f76f90f63f9d -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-common3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb' libavahi-common3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb 21642 MD5Sum:9f4106c0918bf2b779e7d4e2158ef648 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-common-data_0.6.32~rc+dfsg-1ubuntu2_amd64.deb' libavahi-common-data_0.6.32~rc+dfsg-1ubuntu2_amd64.deb 21706 MD5Sum:f7e6efc7b58036c6154be9b3f050845b -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/base-files/base-files_9.4ubuntu4.3_amd64.deb' base-files_9.4ubuntu4.3_amd64.deb 67704 MD5Sum:02d9491f26e50c8e54996e4a9960eaa3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libdns-export162_9.10.3.dfsg.P4-8ubuntu1.2_amd64.deb' libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.2_amd64.deb 665284 MD5Sum:f6bb3437f70cafc02a88bd06f0fcec59 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libisc-export160_9.10.3.dfsg.P4-8ubuntu1.2_amd64.deb' libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.2_amd64.deb 151972 MD5Sum:d512e8d4eb2a1365a424ffe429788f1b -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/binutils/binutils_2.26.1-1ubuntu1~16.04.3_amd64.deb' binutils_2.26.1-1ubuntu1~16.04.3_amd64.deb 2310310 MD5Sum:04b00c4b3ba1d86afbb679b63476d05a -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/blinker/python3-blinker_1.3.dfsg2-1build1_all.deb' python3-blinker_1.3.dfsg2-1build1_all.deb 12518 MD5Sum:ba0b5d380216ccb354cbc9a21e0929d5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bluez/libbluetooth3_5.37-0ubuntu5_amd64.deb' libbluetooth3_5.37-0ubuntu5_amd64.deb 61306 MD5Sum:c8a82247c33f550d76e9489de794533d -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-iostreams1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-iostreams1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 28954 MD5Sum:6f938f436adabb8e01cf4382f1d89876 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-random1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-random1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 11674 MD5Sum:22138508eb0106143b73c270141d1761 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-system1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-system1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 9146 MD5Sum:3dd69b1b4c2a64a4600cd781c38f3c6a -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-thread1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-thread1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 47010 MD5Sum:2c185c0d3e0ff3d424fbb077e78fe545 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bridge-utils/bridge-utils_1.5-9ubuntu1_amd64.deb' bridge-utils_1.5-9ubuntu1_amd64.deb 28610 MD5Sum:a81ea7f42da2e7a6c32b866681897ad4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/brltty/libbrlapi0.6_5.3.1-2ubuntu2.1_amd64.deb' libbrlapi0.6_5.3.1-2ubuntu2.1_amd64.deb 20714 MD5Sum:18e457ca6629c3a0863994a976f93973 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/build-essential/build-essential_12.1ubuntu2_amd64.deb' build-essential_12.1ubuntu2_amd64.deb 4758 MD5Sum:731c3a328f87a14bf4f887ceffc51241 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ca-certificates-java/ca-certificates-java_20160321_all.deb' ca-certificates-java_20160321_all.deb 12862 MD5Sum:fcb5fd121a45e7e49b85e87fc038d6d5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ceph/librados2_10.2.2-0ubuntu0.16.04.2_amd64.deb' librados2_10.2.2-0ubuntu0.16.04.2_amd64.deb 1633494 MD5Sum:b977fc1737be2db89e3cdafc8134e1ac -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ceph/librbd1_10.2.2-0ubuntu0.16.04.2_amd64.deb' librbd1_10.2.2-0ubuntu0.16.04.2_amd64.deb 2108866 MD5Sum:60f4d61fe06d5fbf8e7d8c5b80f1cf16 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloud-init/cloud-init_0.7.8-49-g9e904bb-0ubuntu1~16.04.1_all.deb' cloud-init_0.7.8-49-g9e904bb-0ubuntu1~16.04.1_all.deb 287546 MD5Sum:8b4654780848a7ace5f2a1b6b1e3a24b -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloud-utils/cloud-guest-utils_0.27-0ubuntu24_all.deb' cloud-guest-utils_0.27-0ubuntu24_all.deb 15164 MD5Sum:8b08dbc4a576e942fe4acdd9f4f51aca -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/configobj/python3-configobj_5.0.6-2_all.deb' python3-configobj_5.0.6-2_all.deb 34200 MD5Sum:cbce754e3638c980fd63c384f1a163a8 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cpu-checker/cpu-checker_0.7-0ubuntu7_amd64.deb' cpu-checker_0.7-0ubuntu7_amd64.deb 6862 MD5Sum:1a809fb421f82a1d5d148013bedcba59 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cups/libcups2_2.1.3-4_amd64.deb' libcups2_2.1.3-4_amd64.deb 196652 MD5Sum:3995ab409b0cb7c4440dfc90b54729d6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/curl/libcurl3-gnutls_7.47.0-1ubuntu2.2_amd64.deb' libcurl3-gnutls_7.47.0-1ubuntu2.2_amd64.deb 184138 MD5Sum:e1ae11ed9e545314ff650ab2d10df818 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.26.dfsg1-14build1_amd64.deb' libsasl2-2_2.1.26.dfsg1-14build1_amd64.deb 48708 MD5Sum:af15d7b37cbdfc4c413273c5225a67a6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cyrus-sasl2/libsasl2-modules_2.1.26.dfsg1-14build1_amd64.deb' libsasl2-modules_2.1.26.dfsg1-14build1_amd64.deb 47526 MD5Sum:8fda866e5a4adfe40a1ffc15fac77542 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cyrus-sasl2/libsasl2-modules-db_2.1.26.dfsg1-14build1_amd64.deb' libsasl2-modules-db_2.1.26.dfsg1-14build1_amd64.deb 14458 MD5Sum:08577afddd24ee2e6fce4ff455653081 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dbus/dbus_1.10.6-1ubuntu3.1_amd64.deb' dbus_1.10.6-1ubuntu3.1_amd64.deb 141352 MD5Sum:2bc40ff5d33a6d65993b125fe3af653c -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dbus/libdbus-1-3_1.10.6-1ubuntu3.1_amd64.deb' libdbus-1-3_1.10.6-1ubuntu3.1_amd64.deb 160756 MD5Sum:1deb247321c3a2007e178e7806d27318 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/device-tree-compiler/libfdt1_1.4.0+dfsg-2_amd64.deb' libfdt1_1.4.0+dfsg-2_amd64.deb 14136 MD5Sum:ea277dec72e4b0dc9ae18140dab6f147 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/distro-info-data/distro-info-data_0.28ubuntu0.2_all.deb' distro-info-data_0.28ubuntu0.2_all.deb 4006 MD5Sum:4497d860935a3fec1cea983b26082821 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dkms/dkms_2.2.0.3-2ubuntu11.3_all.deb' dkms_2.2.0.3-2ubuntu11.3_all.deb 66148 MD5Sum:e4f4d32677876e2792a7b152cd706a54 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg-dev_1.18.4ubuntu1.1_all.deb' dpkg-dev_1.18.4ubuntu1.1_all.deb 584114 MD5Sum:8e732fd2f0eb2141b9fa5efa33891858 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/libdpkg-perl_1.18.4ubuntu1.1_all.deb' libdpkg-perl_1.18.4ubuntu1.1_all.deb 195494 MD5Sum:ef90a84e0cbdc08dbf664d3367ba0fc4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/e/expat/libexpat1-dev_2.1.0-7ubuntu0.16.04.2_amd64.deb' libexpat1-dev_2.1.0-7ubuntu0.16.04.2_amd64.deb 115328 MD5Sum:df5d013eec845ea323df40c64e3ac2e6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/fakeroot_1.20.2-1ubuntu1_amd64.deb' fakeroot_1.20.2-1ubuntu1_amd64.deb 61784 MD5Sum:b153b1ed316419be55f3f575c092e73b -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/libfakeroot_1.20.2-1ubuntu1_amd64.deb' libfakeroot_1.20.2-1ubuntu1_amd64.deb 25510 MD5Sum:e3c90aa7376ae3a3e966d1688b9dab70 -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/flac/libflac8_1.3.1-4_amd64.deb' libflac8_1.3.1-4_amd64.deb 210396 MD5Sum:c0c0306a333d443f35c866bcf5e05c3a -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fontconfig/fontconfig-config_2.11.94-0ubuntu1.1_all.deb' fontconfig-config_2.11.94-0ubuntu1.1_all.deb 49934 MD5Sum:d8ee5cb98a73e9fd84f0c21b7f00728f -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fontconfig/libfontconfig1_2.11.94-0ubuntu1.1_amd64.deb' libfontconfig1_2.11.94-0ubuntu1.1_amd64.deb 131248 MD5Sum:e1d3510a190b0910720a7ae597ce53ea -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fonts-dejavu/fonts-dejavu-core_2.35-1_all.deb' fonts-dejavu-core_2.35-1_all.deb 1038624 MD5Sum:d3c6235a85d2646078f1b82ab257ef33 -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fuse/libfuse2_2.9.4-1ubuntu3.1_amd64.deb' libfuse2_2.9.4-1ubuntu3.1_amd64.deb 89908 MD5Sum:2bdd7633ce8e2d8b9978756416772991 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/cpp-5_5.4.0-6ubuntu1~16.04.4_amd64.deb' cpp-5_5.4.0-6ubuntu1~16.04.4_amd64.deb 7653108 MD5Sum:95c5a34a437e2fd3fac60c3b911c73f4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/g++-5_5.4.0-6ubuntu1~16.04.4_amd64.deb' g++-5_5.4.0-6ubuntu1~16.04.4_amd64.deb 8299854 MD5Sum:218ba077dc7a555055446919bc51545a -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/gcc-5_5.4.0-6ubuntu1~16.04.4_amd64.deb' gcc-5_5.4.0-6ubuntu1~16.04.4_amd64.deb 8577362 MD5Sum:1f98521f896a3c1c528f5953a9063ac1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/gcc-5-base_5.4.0-6ubuntu1~16.04.4_amd64.deb' gcc-5-base_5.4.0-6ubuntu1~16.04.4_amd64.deb 16770 MD5Sum:376937778a114defb614754043c40977 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libasan2_5.4.0-6ubuntu1~16.04.4_amd64.deb' libasan2_5.4.0-6ubuntu1~16.04.4_amd64.deb 264364 MD5Sum:bf412ced66f2fae39b50c5f74f0cbd5d -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libatomic1_5.4.0-6ubuntu1~16.04.4_amd64.deb' libatomic1_5.4.0-6ubuntu1~16.04.4_amd64.deb 8912 MD5Sum:05f0d545dce15b8e9d2388b3709ad753 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libcc1-0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libcc1-0_5.4.0-6ubuntu1~16.04.4_amd64.deb 38792 MD5Sum:1d2578c6168349fb265ea244cb7800b9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libcilkrts5_5.4.0-6ubuntu1~16.04.4_amd64.deb' libcilkrts5_5.4.0-6ubuntu1~16.04.4_amd64.deb 40088 MD5Sum:e2cdd94f50eb96b68b1844f1cd148687 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libgcc-5-dev_5.4.0-6ubuntu1~16.04.4_amd64.deb' libgcc-5-dev_5.4.0-6ubuntu1~16.04.4_amd64.deb 2236718 MD5Sum:92c3c2d39dcbb870745c4f75e7d2a658 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libgomp1_5.4.0-6ubuntu1~16.04.4_amd64.deb' libgomp1_5.4.0-6ubuntu1~16.04.4_amd64.deb 55046 MD5Sum:e4e5c6228e730d9403a20b6f9c59d314 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libitm1_5.4.0-6ubuntu1~16.04.4_amd64.deb' libitm1_5.4.0-6ubuntu1~16.04.4_amd64.deb 27420 MD5Sum:106531f1a3a213f8e61df014d8e64046 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/liblsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb' liblsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb 104930 MD5Sum:64baa9c8945b3adcac86b3e08cc64e2b -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libmpx0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libmpx0_5.4.0-6ubuntu1~16.04.4_amd64.deb 9766 MD5Sum:0a654c0c2e205d04c2e222d0a68ab3d2 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libquadmath0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libquadmath0_5.4.0-6ubuntu1~16.04.4_amd64.deb 131214 MD5Sum:e212664529333fb7e2db1afc8f6c50b2 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++-5-dev_5.4.0-6ubuntu1~16.04.4_amd64.deb' libstdc++-5-dev_5.4.0-6ubuntu1~16.04.4_amd64.deb 1425994 MD5Sum:328ff483c56502b1d1ebb2f30b269350 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.4_amd64.deb' libstdc++6_5.4.0-6ubuntu1~16.04.4_amd64.deb 393398 MD5Sum:17eff9bc4d304ca36f2f1633be482654 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libtsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libtsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb 243674 MD5Sum:73f6474b928dc0038c94f171890c6386 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libubsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libubsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb 95334 MD5Sum:01552deb86cb21a84f5aea05038a1290 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/cpp_5.3.1-1ubuntu1_amd64.deb' cpp_4%3a5.3.1-1ubuntu1_amd64.deb 27662 MD5Sum:4c291e4aaf6406f61e3188d526479d51 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/g++_5.3.1-1ubuntu1_amd64.deb' g++_4%3a5.3.1-1ubuntu1_amd64.deb 1504 MD5Sum:0c03d113ff00ebc960f294420e60855b -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/gcc_5.3.1-1ubuntu1_amd64.deb' gcc_4%3a5.3.1-1ubuntu1_amd64.deb 5244 MD5Sum:df1516b203a66a86a728eab7a4c349e8 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gdbm/libgdbm3_1.8.3-13.1_amd64.deb' libgdbm3_1.8.3-13.1_amd64.deb 16926 MD5Sum:b2001800d7c61d4b0b12b077a0af2b5a -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gdisk/gdisk_1.0.1-1build1_amd64.deb' gdisk_1.0.1-1build1_amd64.deb 194230 MD5Sum:24e876aa3c2e94e39c17a4551f5d8514 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/git/git_2.7.4-0ubuntu1_amd64.deb' git_1%3a2.7.4-0ubuntu1_amd64.deb 3006120 MD5Sum:0412535c34d3f900629e9409ad73aead -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/git/git-man_2.7.4-0ubuntu1_all.deb' git-man_1%3a2.7.4-0ubuntu1_all.deb 734758 MD5Sum:0c00ac0f6cc7cc5b1b17f2e30ad44342 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc6_2.23-0ubuntu4_amd64.deb' libc6_2.23-0ubuntu4_amd64.deb 2586034 MD5Sum:e4c2d64ecf1740c251bcbce0c14c49be -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc6-dev_2.23-0ubuntu4_amd64.deb' libc6-dev_2.23-0ubuntu4_amd64.deb 2084120 MD5Sum:4aa086096630eb45938f05043a76ac0e -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc-bin_2.23-0ubuntu4_amd64.deb' libc-bin_2.23-0ubuntu4_amd64.deb 623420 MD5Sum:6d38874c42ae8c38bbfde95c26d45d5b -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc-dev-bin_2.23-0ubuntu4_amd64.deb' libc-dev-bin_2.23-0ubuntu4_amd64.deb 68676 MD5Sum:6416120c72cdd6621e5958f8c32a81f9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/locales_2.23-0ubuntu4_all.deb' locales_2.23-0ubuntu4_all.deb 3213658 MD5Sum:100029ea04495062871be11d32105d98 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/multiarch-support_2.23-0ubuntu4_amd64.deb' multiarch-support_2.23-0ubuntu4_amd64.deb 6828 MD5Sum:5c2dab8596dff6294675d8ac6e25f1f4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnupg/gnupg_1.4.20-1ubuntu3.1_amd64.deb' gnupg_1.4.20-1ubuntu3.1_amd64.deb 625938 MD5Sum:955b23eb62539452a8aa37e34e6f77c1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnupg/gpgv_1.4.20-1ubuntu3.1_amd64.deb' gpgv_1.4.20-1ubuntu3.1_amd64.deb 165264 MD5Sum:1debba9f668b7dcdca878d1e0e25c98a -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/groff/groff-base_1.22.3-7_amd64.deb' groff-base_1.22.3-7_amd64.deb 1150932 MD5Sum:7afb23ed2960cd67ab3196f29b9ff7e2 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub2-common_2.02~beta2-36ubuntu3.2_amd64.deb' grub2-common_2.02~beta2-36ubuntu3.2_amd64.deb 510912 MD5Sum:634e13acd2c8cab54b01e84b5e254845 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-common_2.02~beta2-36ubuntu3.2_amd64.deb' grub-common_2.02~beta2-36ubuntu3.2_amd64.deb 1706552 MD5Sum:7899a24a07f8b62e08a455bdab510c47 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-pc_2.02~beta2-36ubuntu3.2_amd64.deb' grub-pc_2.02~beta2-36ubuntu3.2_amd64.deb 197080 MD5Sum:5d4cdb8542ad3e63302698a075e5e959 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-pc-bin_2.02~beta2-36ubuntu3.2_amd64.deb' grub-pc-bin_2.02~beta2-36ubuntu3.2_amd64.deb 883966 MD5Sum:9bb93b3374a6ad20419396c488cbf5f9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libasn1-8-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libasn1-8-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 174366 MD5Sum:42aa97710227f6c372d232799fde6790 -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libgssapi3-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libgssapi3-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 96084 MD5Sum:0c9467b00d258e3175addbb5a16fdc72 -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libhcrypto4-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libhcrypto4-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 84938 MD5Sum:d6337d57fa1dda2c877a9f1c163ba0dd -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libheimbase1-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libheimbase1-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 29228 MD5Sum:15a7c7d180f14253f46d5e56409a0ffb -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libheimntlm0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libheimntlm0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 15090 MD5Sum:6f7a32beb2a3a04181c05efe940df1ee -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libhx509-5-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libhx509-5-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 107192 MD5Sum:b2b294bd3d2226f10c69058900323876 -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libkrb5-26-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libkrb5-26-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 202156 MD5Sum:000a329b39ae158d0ec280957741b14d -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libroken18-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libroken18-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 41190 MD5Sum:58c4093551f88ccca3c6c8a11d5e2357 -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libwind0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libwind0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 48180 MD5Sum:7e368713a6d03afb23a8f956a16b9ba7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/ifupdown/ifupdown_0.8.10ubuntu1.1_amd64.deb' ifupdown_0.8.10ubuntu1.1_amd64.deb 54916 MD5Sum:d013023982a1e01067d9ef9e02a327a3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools_0.122ubuntu8.5_all.deb' initramfs-tools_0.122ubuntu8.5_all.deb 8618 MD5Sum:6f5cdff02741b119d8033165749b812e -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools-bin_0.122ubuntu8.5_amd64.deb' initramfs-tools-bin_0.122ubuntu8.5_amd64.deb 9334 MD5Sum:c4f25ed3f10f6d234fc4f9b4e2556619 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools-core_0.122ubuntu8.5_all.deb' initramfs-tools-core_0.122ubuntu8.5_all.deb 42160 MD5Sum:c2e8b352d17b48c9e9badd040b1ed3c9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/init-system-helpers/init_1.29ubuntu3_amd64.deb' init_1.29ubuntu3_amd64.deb 4716 MD5Sum:5967a023e146860d888297cfb5773017 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/init-system-helpers/init-system-helpers_1.29ubuntu3_all.deb' init-system-helpers_1.29ubuntu3_all.deb 32416 MD5Sum:9b8e5436025f8006ae7f309fd3687b60 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/iptables/iptables_1.6.0-2ubuntu3_amd64.deb' iptables_1.6.0-2ubuntu3_amd64.deb 265782 MD5Sum:706f191cbb20bff7c7a9a0fc01a78c25 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/ipxe/ipxe-qemu_1.0.0+git-20150424.a25a16d-1ubuntu1_all.deb' ipxe-qemu_1.0.0+git-20150424.a25a16d-1ubuntu1_all.deb 717714 MD5Sum:01570467dacbe007f2d0fb76c30653a7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isc-dhcp/isc-dhcp-client_4.3.3-5ubuntu12.4_amd64.deb' isc-dhcp-client_4.3.3-5ubuntu12.4_amd64.deb 223488 MD5Sum:0213ed75d3f4c7f06226ee7b9a974d12 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isc-dhcp/isc-dhcp-common_4.3.3-5ubuntu12.4_amd64.deb' isc-dhcp-common_4.3.3-5ubuntu12.4_amd64.deb 104488 MD5Sum:21948bd2241628b4d690e79c10515ecf -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isl/libisl15_0.16.1-1_amd64.deb' libisl15_0.16.1-1_amd64.deb 524254 MD5Sum:eec42a28e5ed8a5eaaf6278b455176ed -'http://us.archive.ubuntu.com/ubuntu/pool/main/j/java-common/java-common_0.56ubuntu2_all.deb' java-common_0.56ubuntu2_all.deb 7742 MD5Sum:cef7383c2628cc09bccbf0777e4eac37 -'http://us.archive.ubuntu.com/ubuntu/pool/main/j/jinja2/python3-jinja2_2.8-1_all.deb' python3-jinja2_2.8-1_all.deb 102518 MD5Sum:2511385ccb261c47c7dc2479abb6848d -'http://us.archive.ubuntu.com/ubuntu/pool/main/k/kbd/kbd_1.15.5-1ubuntu5_amd64.deb' kbd_1.15.5-1ubuntu5_amd64.deb 183018 MD5Sum:4e77ee969276644f3bc9168bee7e3995 -'http://us.archive.ubuntu.com/ubuntu/pool/main/k/keyutils/keyutils_1.5.9-8ubuntu1_amd64.deb' keyutils_1.5.9-8ubuntu1_amd64.deb 47054 MD5Sum:c7a363bce61cc8fbfb2b252d7a98f0fa -'http://us.archive.ubuntu.com/ubuntu/pool/main/k/klibc/klibc-utils_2.0.4-8ubuntu1.16.04.2_amd64.deb' klibc-utils_2.0.4-8ubuntu1.16.04.2_amd64.deb 107498 MD5Sum:e07a76e70f2acfef7edf54b08be0a4a3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/k/klibc/libklibc_2.0.4-8ubuntu1.16.04.2_amd64.deb' libklibc_2.0.4-8ubuntu1.16.04.2_amd64.deb 41326 MD5Sum:b123c76c6d8f2f80a6247e5ce915dd48 -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libaio/libaio1_0.3.110-2_amd64.deb' libaio1_0.3.110-2_amd64.deb 6356 MD5Sum:2ed968780e68742f43eddebadf82ff67 -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-perl/libalgorithm-diff-perl_1.19.03-1_all.deb' libalgorithm-diff-perl_1.19.03-1_all.deb 47622 MD5Sum:3d6f7b46454ff0b8589904fc4f8dd602 -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-xs-perl/libalgorithm-diff-xs-perl_0.04-4build1_amd64.deb' libalgorithm-diff-xs-perl_0.04-4build1_amd64.deb 10998 MD5Sum:330e839dcd98097723870b28ba9a8810 -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-merge-perl/libalgorithm-merge-perl_0.08-3_all.deb' libalgorithm-merge-perl_0.08-3_all.deb 11992 MD5Sum:6b456963b6629af0514be1b8ccbaa7fc -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libasyncns/libasyncns0_0.8-5build1_amd64.deb' libasyncns0_0.8-5build1_amd64.deb 12336 MD5Sum:dbb4957abb710a70453eac0e77fc797b -'http://us.archive.ubuntu.com/ubuntu/pool/main/libc/libcaca/libcaca0_0.99.beta19-2build2~gcc5.2_amd64.deb' libcaca0_0.99.beta19-2build2~gcc5.2_amd64.deb 202380 MD5Sum:b49a9b48694bf35e217fee1295dd14dd -'http://us.archive.ubuntu.com/ubuntu/pool/main/libc/libcacard/libcacard0_2.5.0-2_amd64.deb' libcacard0_1%3a2.5.0-2_amd64.deb 19666 MD5Sum:0d371aa9cdc23ac668bc6e2afa1c44f0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libeatmydata/eatmydata_105-3_all.deb' eatmydata_105-3_all.deb 5502 MD5Sum:bc5bc47ea615b69da0f5d3c090c74a91 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libeatmydata/libeatmydata1_105-3_amd64.deb' libeatmydata1_105-3_amd64.deb 7280 MD5Sum:1f39d8cff52be865527547c09fc772db -'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/liberror-perl/liberror-perl_0.17-1.2_all.deb' liberror-perl_0.17-1.2_all.deb 19594 MD5Sum:bd1a8035bbfae2cd7d718f54fd93e0d5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libevent/libevent-2.0-5_2.0.21-stable-2_amd64.deb' libevent-2.0-5_2.0.21-stable-2_amd64.deb 112550 MD5Sum:071d5951d910147ea84d0d024bee13ce -'http://us.archive.ubuntu.com/ubuntu/pool/main/libf/libfile-fcntllock-perl/libfile-fcntllock-perl_0.22-3_amd64.deb' libfile-fcntllock-perl_0.22-3_amd64.deb 32002 MD5Sum:26476d54bf4677cc993c8cd9a7dbaeca -'http://us.archive.ubuntu.com/ubuntu/pool/main/libg/libgcrypt20/libgcrypt20_1.6.5-2ubuntu0.2_amd64.deb' libgcrypt20_1.6.5-2ubuntu0.2_amd64.deb 336194 MD5Sum:ebe89b8db7294a6dc2ff9995a7d30060 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libi/libidn/libidn11_1.32-3ubuntu1.1_amd64.deb' libidn11_1.32-3ubuntu1.1_amd64.deb 45552 MD5Sum:74c4e3f65c05e61596efe2ef46941009 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libi/libiscsi/libiscsi2_1.12.0-2_amd64.deb' libiscsi2_1.12.0-2_amd64.deb 51550 MD5Sum:6c8f4a397968e478e9567785bba4283e -'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg8-empty/libjpeg8_8c-2ubuntu8_amd64.deb' libjpeg8_8c-2ubuntu8_amd64.deb 2194 MD5Sum:e0f16286dd787b951ffa953987fdf6a7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg-turbo/libjpeg-turbo8_1.4.2-0ubuntu3_amd64.deb' libjpeg-turbo8_1.4.2-0ubuntu3_amd64.deb 110656 MD5Sum:8e505d67491b22a9d38be353654b3bc3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnfnetlink/libnfnetlink0_1.0.1-3_amd64.deb' libnfnetlink0_1.0.1-3_amd64.deb 13262 MD5Sum:914d0640e09dd02057d0fd09f3da0eb5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnfsidmap/libnfsidmap2_0.25-5_amd64.deb' libnfsidmap2_0.25-5_amd64.deb 32182 MD5Sum:5e06543f26481fa549a1e017eec4ef36 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libo/libogg/libogg0_1.3.2-1_amd64.deb' libogg0_1.3.2-1_amd64.deb 17192 MD5Sum:55dd9b6982d66d6b168aa18fb3f90d2f -'http://us.archive.ubuntu.com/ubuntu/pool/main/libp/libpcap/libpcap0.8_1.7.4-2_amd64.deb' libpcap0.8_1.7.4-2_amd64.deb 116794 MD5Sum:6b4372b0840fada16f16ed4d97f32146 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libp/libpcap/libpcap0.8-dev_1.7.4-2_amd64.deb' libpcap0.8-dev_1.7.4-2_amd64.deb 212414 MD5Sum:44df3da8707c2b5cd1f3f0bb68a005a6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libp/libpcap/libpcap-dev_1.7.4-2_all.deb' libpcap-dev_1.7.4-2_all.deb 3394 MD5Sum:df89b21ddc14397fccb0a9e5e6a3542c -'http://us.archive.ubuntu.com/ubuntu/pool/main/libs/libsdl1.2/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb' libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb 167606 MD5Sum:52418fa1951b7edff3aecc67821f5786 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libs/libsndfile/libsndfile1_1.0.25-10_amd64.deb' libsndfile1_1.0.25-10_amd64.deb 137498 MD5Sum:1218c82cf611a5e4ff9919b91130c21e -'http://us.archive.ubuntu.com/ubuntu/pool/main/libt/libtirpc/libtirpc1_0.2.5-1_amd64.deb' libtirpc1_0.2.5-1_amd64.deb 75624 MD5Sum:bc4fb6407a0636517ce6670fd3ac2c40 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbis0a_1.3.5-3_amd64.deb' libvorbis0a_1.3.5-3_amd64.deb 86776 MD5Sum:248a92f34c15bfc3fff460186eac1358 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbisenc2_1.3.5-3_amd64.deb' libvorbisenc2_1.3.5-3_amd64.deb 70678 MD5Sum:62b0f630a03291eff71de6f844746721 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxi/libxi6_1.7.6-1_amd64.deb' libxi6_2%3a1.7.6-1_amd64.deb 28572 MD5Sum:2ad504b68a0a7c3f987307166de56a3a -'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxrender/libxrender1_0.9.9-0ubuntu1_amd64.deb' libxrender1_1%3a0.9.9-0ubuntu1_amd64.deb 18482 MD5Sum:124d535fd56229469116dfd6e47fe406 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxtst/libxtst6_1.2.2-1_amd64.deb' libxtst6_2%3a1.2.2-1_amd64.deb 14086 MD5Sum:2594435dcd76d6eec2ff3fb68a3d4e9d -'http://us.archive.ubuntu.com/ubuntu/pool/main/liby/libyaml/libyaml-0-2_0.1.6-3_amd64.deb' libyaml-0-2_0.1.6-3_amd64.deb 47596 MD5Sum:d5e5f5f176ebfe25ccb22965431bfe38 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/language-selector/language-selector-common_0.165.4_all.deb' language-selector-common_0.165.4_all.deb 213586 MD5Sum:b020f997ca40682c071d7b0f5c44062e -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/lcms2/liblcms2-2_2.6-3ubuntu2_amd64.deb' liblcms2-2_2.6-3ubuntu2_amd64.deb 136966 MD5Sum:425ab20e484e500aa2d48a281cb98d2c -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/less/less_481-2.1ubuntu0.1_amd64.deb' less_481-2.1ubuntu0.1_amd64.deb 109538 MD5Sum:ae43696453da4a56d9db1215e95e8302 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-firmware/linux-firmware_1.157.5_all.deb' linux-firmware_1.157.5_all.deb 37479650 MD5Sum:963700c4094b49605671b4c56ca2f8bc -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-headers-4.4.0-47_4.4.0-47.68_all.deb' linux-headers-4.4.0-47_4.4.0-47.68_all.deb 10002400 MD5Sum:33ff634199e695e7e3f439d47b5baa9b -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-headers-4.4.0-47-generic_4.4.0-47.68_amd64.deb' linux-headers-4.4.0-47-generic_4.4.0-47.68_amd64.deb 790156 MD5Sum:26c713f3d9666475ff49ada48984a8c6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-image-4.4.0-47-generic_4.4.0-47.68_amd64.deb' linux-image-4.4.0-47-generic_4.4.0-47.68_amd64.deb 18830894 MD5Sum:15ccfe224802de420913f7fb3f8075b4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-image-extra-4.4.0-47-generic_4.4.0-47.68_amd64.deb' linux-image-extra-4.4.0-47-generic_4.4.0-47.68_amd64.deb 38948166 MD5Sum:7da88764623fb9eef0e47a17abc378dc -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-libc-dev_4.4.0-47.68_amd64.deb' linux-libc-dev_4.4.0-47.68_amd64.deb 842418 MD5Sum:b227d19d5b228cc13883b0fcd22252af -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta/linux-generic_4.4.0.47.50_amd64.deb' linux-generic_4.4.0.47.50_amd64.deb 1790 MD5Sum:0a380d60e919fd548e30ec6f61da6c5d -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta/linux-headers-generic_4.4.0.47.50_amd64.deb' linux-headers-generic_4.4.0.47.50_amd64.deb 2286 MD5Sum:75496d02a8949e26e8e7df3dc3ad2cf7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta/linux-image-generic_4.4.0.47.50_amd64.deb' linux-image-generic_4.4.0.47.50_amd64.deb 2312 MD5Sum:4910c90490bb9d1ea223707ca1d52ce5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/make-dfsg/make_4.1-6_amd64.deb' make_4.1-6_amd64.deb 150924 MD5Sum:a2c33fce65c313f2d9be0e55166fc3f5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/manpages/manpages_4.04-2_all.deb' manpages_4.04-2_all.deb 1086712 MD5Sum:bb93c041e490ee0b6c2fef876dddf502 -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/manpages/manpages-dev_4.04-2_all.deb' manpages-dev_4.04-2_all.deb 2047608 MD5Sum:fea47c59fcc997aeab05238ecf9c5aba -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/markupsafe/python3-markupsafe_0.23-2build2_amd64.deb' python3-markupsafe_0.23-2build2_amd64.deb 16120 MD5Sum:de4d087f2d9db48351efd1fe861b21be -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/mpclib3/libmpc3_1.0.3-1_amd64.deb' libmpc3_1.0.3-1_amd64.deb 39676 MD5Sum:7892c51e73d8c5a5c16c1f2e8b93faa1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/mpfr4/libmpfr4_3.1.4-1_amd64.deb' libmpfr4_3.1.4-1_amd64.deb 190628 MD5Sum:5e8b331bd179e68edf5734a8b11306b2 -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/msr-tools/msr-tools_1.3-2_amd64.deb' msr-tools_1.3-2_amd64.deb 10636 MD5Sum:5ffb50c3889cfccc901b940923d89e29 -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nfs-utils/nfs-common_1.2.8-9ubuntu12_amd64.deb' nfs-common_1%3a1.2.8-9ubuntu12_amd64.deb 184538 MD5Sum:811cfcf44b77a9f3c0dca443c4a6cdbf -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nspr/libnspr4_4.12-0ubuntu0.16.04.1_amd64.deb' libnspr4_2%3a4.12-0ubuntu0.16.04.1_amd64.deb 112400 MD5Sum:6136aa494e3970cef74a03a5cc2415bb -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3_3.23-0ubuntu0.16.04.1_amd64.deb' libnss3_2%3a3.23-0ubuntu0.16.04.1_amd64.deb 1144232 MD5Sum:05b78e390c150fd4eb65c8de47358036 -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3-nssdb_3.23-0ubuntu0.16.04.1_all.deb' libnss3-nssdb_2%3a3.23-0ubuntu0.16.04.1_all.deb 10584 MD5Sum:6e7f301f6169b123e8f9ce82d68451ae -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/numactl/libnuma1_2.0.11-1ubuntu1_amd64.deb' libnuma1_2.0.11-1ubuntu1_amd64.deb 21016 MD5Sum:fb873c905ae23079608114661a32d1c7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openjdk-8/openjdk-8-jdk-headless_8u111-b14-2ubuntu0.16.04.2_amd64.deb' openjdk-8-jdk-headless_8u111-b14-2ubuntu0.16.04.2_amd64.deb 8166930 MD5Sum:95abce7371d1f3eda3584f6909e85f18 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openjdk-8/openjdk-8-jre-headless_8u111-b14-2ubuntu0.16.04.2_amd64.deb' openjdk-8-jre-headless_8u111-b14-2ubuntu0.16.04.2_amd64.deb 26886140 MD5Sum:4f3d16222254577160afce4cd333db19 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openldap/libldap-2.4-2_2.4.42+dfsg-2ubuntu3.1_amd64.deb' libldap-2.4-2_2.4.42+dfsg-2ubuntu3.1_amd64.deb 160630 MD5Sum:bfb7d8edf8289d8f01742469420efe37 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-client_7.2p2-4ubuntu2.1_amd64.deb' openssh-client_1%3a7.2p2-4ubuntu2.1_amd64.deb 587050 MD5Sum:55c7b2f2e9e18fbd70ce9f042bd99261 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-server_7.2p2-4ubuntu2.1_amd64.deb' openssh-server_1%3a7.2p2-4ubuntu2.1_amd64.deb 337896 MD5Sum:c2c16d323dbb288f745b7537c327d206 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-sftp-server_7.2p2-4ubuntu2.1_amd64.deb' openssh-sftp-server_1%3a7.2p2-4ubuntu2.1_amd64.deb 38762 MD5Sum:952e3bb32e10e130a090fa057dc408a6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.0.0_1.0.2g-1ubuntu4.5_amd64.deb' libssl1.0.0_1.0.2g-1ubuntu4.5_amd64.deb 1081760 MD5Sum:43fd613e133e35e98333ebceae7184ff -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_1.0.2g-1ubuntu4.5_amd64.deb' openssl_1.0.2g-1ubuntu4.5_amd64.deb 491434 MD5Sum:cff1a42acbf034afde850269791440af -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/opus/libopus0_1.1.2-1ubuntu1_amd64.deb' libopus0_1.1.2-1ubuntu1_amd64.deb 159200 MD5Sum:b8f45b2da56ac6d1a5a64769d2232e2c -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/p11-kit/libp11-kit0_0.23.2-5~ubuntu16.04.1_amd64.deb' libp11-kit0_0.23.2-5~ubuntu16.04.1_amd64.deb 105478 MD5Sum:b7eac686f16419708424463a5abcd859 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/patch/patch_2.7.5-1_amd64.deb' patch_2.7.5-1_amd64.deb 90382 MD5Sum:0c03555b50fc094f942a938e9efb33d8 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pcsc-lite/libpcsclite1_1.8.14-1ubuntu1_amd64.deb' libpcsclite1_1.8.14-1ubuntu1_amd64.deb 21384 MD5Sum:67383a357c969292fa13d5ca85fc1737 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/libperl5.22_5.22.1-9_amd64.deb' libperl5.22_5.22.1-9_amd64.deb 3370548 MD5Sum:37c5a3fd13de2e1fbe0568aceb4ff043 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl_5.22.1-9_amd64.deb' perl_5.22.1-9_amd64.deb 237264 MD5Sum:a4b787e5cf0a032822bc486ace90cdad -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl-modules-5.22_5.22.1-9_all.deb' perl-modules-5.22_5.22.1-9_all.deb 2640598 MD5Sum:71fb658af2eeaedbe87494cf511a0c92 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pixman/libpixman-1-0_0.33.6-1_amd64.deb' libpixman-1-0_0.33.6-1_amd64.deb 231222 MD5Sum:2d60906f5c3e3a3548490b1c621d1392 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/prettytable/python3-prettytable_0.7.2-3_all.deb' python3-prettytable_0.7.2-3_all.deb 19730 MD5Sum:958069d49fc751b73d945ac2e5adec4f -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/procps/libprocps4_3.3.10-4ubuntu2.2_amd64.deb' libprocps4_2%3a3.3.10-4ubuntu2.2_amd64.deb 32704 MD5Sum:2330d7b32009998578c06b8cff2d6c1b -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/procps/procps_3.3.10-4ubuntu2.2_amd64.deb' procps_2%3a3.3.10-4ubuntu2.2_amd64.deb 221854 MD5Sum:9a273d6972b24df7e3d86af0a2084ee2 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pulseaudio/libpulse0_8.0-0ubuntu3.1_amd64.deb' libpulse0_1%3a8.0-0ubuntu3.1_amd64.deb 248194 MD5Sum:04da1888132c241682bddcce35ed1e77 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyasn1/python3-pyasn1_0.1.9-1_all.deb' python3-pyasn1_0.1.9-1_all.deb 28132 MD5Sum:aea3d0df93c568bda4817c3c3910ef08 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pycurl/python3-pycurl_7.43.0-1ubuntu1_amd64.deb' python3-pycurl_7.43.0-1ubuntu1_amd64.deb 42334 MD5Sum:9384e6be4685d2cd06994a6ec23dbfac -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyjwt/python3-jwt_1.3.0-1_all.deb' python3-jwt_1.3.0-1_all.deb 15994 MD5Sum:aa1437e45418bb3371e1ab78fad20c8b -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyserial/python3-serial_3.0.1-1_all.deb' python3-serial_3.0.1-1_all.deb 54058 MD5Sum:4b9e76fe3f6cdaa0c8d8f5c6ee0e80b1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7_2.7.12-1ubuntu0~16.04.1_amd64.deb' libpython2.7_2.7.12-1ubuntu0~16.04.1_amd64.deb 1069728 MD5Sum:c355a8d8c72dee5f06c38aa637f7d5f6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-dev_2.7.12-1ubuntu0~16.04.1_amd64.deb' libpython2.7-dev_2.7.12-1ubuntu0~16.04.1_amd64.deb 27806182 MD5Sum:b1606b5ecd36ddbe756e1db9db371065 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-minimal_2.7.12-1ubuntu0~16.04.1_amd64.deb' libpython2.7-minimal_2.7.12-1ubuntu0~16.04.1_amd64.deb 339378 MD5Sum:16cd81bed67b58992ba326d225da74a9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-stdlib_2.7.12-1ubuntu0~16.04.1_amd64.deb' libpython2.7-stdlib_2.7.12-1ubuntu0~16.04.1_amd64.deb 1883824 MD5Sum:b51aee7135c4c40745afc1dd4fb87067 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7_2.7.12-1ubuntu0~16.04.1_amd64.deb' python2.7_2.7.12-1ubuntu0~16.04.1_amd64.deb 224330 MD5Sum:d9789fea16fda2a928f6ed39f3434f29 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7-dev_2.7.12-1ubuntu0~16.04.1_amd64.deb' python2.7-dev_2.7.12-1ubuntu0~16.04.1_amd64.deb 276176 MD5Sum:10628375ea7e36d5e8f7ba5273c7d9b1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7-minimal_2.7.12-1ubuntu0~16.04.1_amd64.deb' python2.7-minimal_2.7.12-1ubuntu0~16.04.1_amd64.deb 1295108 MD5Sum:60f2c79700931bcbd713556b6b5bda03 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/libpython3.5-minimal_3.5.2-2ubuntu0~16.04.1_amd64.deb' libpython3.5-minimal_3.5.2-2ubuntu0~16.04.1_amd64.deb 525856 MD5Sum:c787784b944542dee0b10465a45bac99 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/libpython3.5-stdlib_3.5.2-2ubuntu0~16.04.1_amd64.deb' libpython3.5-stdlib_3.5.2-2ubuntu0~16.04.1_amd64.deb 2129936 MD5Sum:500952aa58ef0e7f1f5f76b3a4037bdf -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/python3.5_3.5.2-2ubuntu0~16.04.1_amd64.deb' python3.5_3.5.2-2ubuntu0~16.04.1_amd64.deb 165176 MD5Sum:32b4fac2b139dfb340ddee92d78a7f59 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/python3.5-minimal_3.5.2-2ubuntu0~16.04.1_amd64.deb' python3.5-minimal_3.5.2-2ubuntu0~16.04.1_amd64.deb 1596870 MD5Sum:be7d322cad015751590ff585630c9244 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-cffi/python3-cffi-backend_1.5.2-1ubuntu1_amd64.deb' python3-cffi-backend_1.5.2-1ubuntu1_amd64.deb 59108 MD5Sum:c27b5b99bd74a557cbf97186a1266bf7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-cryptography/python3-cryptography_1.2.3-1_amd64.deb' python3-cryptography_1.2.3-1_amd64.deb 198070 MD5Sum:e1e24fd82d7ad6e0c0a5ecf2931a3dc2 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-all-dev_2.7.11-1_amd64.deb' libpython-all-dev_2.7.11-1_amd64.deb 992 MD5Sum:5b8013073862e493f5c4f35e4fc12d62 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-dev_2.7.11-1_amd64.deb' libpython-dev_2.7.11-1_amd64.deb 7728 MD5Sum:27b5b2364088a2e4d49e00e0b50f75e1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-stdlib_2.7.11-1_amd64.deb' libpython-stdlib_2.7.11-1_amd64.deb 7656 MD5Sum:0632b48d11a10ea0b58adad543887f8a -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python_2.7.11-1_amd64.deb' python_2.7.11-1_amd64.deb 136892 MD5Sum:af686bd03f39be3f3cd865d38b44f5bf -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-all_2.7.11-1_amd64.deb' python-all_2.7.11-1_amd64.deb 978 MD5Sum:bf338b9d5360ec685bfbf9a323afcf1e -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-all-dev_2.7.11-1_amd64.deb' python-all-dev_2.7.11-1_amd64.deb 1000 MD5Sum:d68ff89d7581cd985bc0ff3c7c1c31a0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-dev_2.7.11-1_amd64.deb' python-dev_2.7.11-1_amd64.deb 1160 MD5Sum:a1dc029ad0f502f7d41fdb5639650b85 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-minimal_2.7.11-1_amd64.deb' python-minimal_2.7.11-1_amd64.deb 28156 MD5Sum:5f74584a69921aac52908a029aca4e04 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-idna/python3-idna_2.0-3_all.deb' python3-idna_2.0-3_all.deb 35084 MD5Sum:5a78ae4de7cc7e91a16badc125cf5225 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-json-patch/python3-jsonpatch_1.19-3_all.deb' python3-jsonpatch_1.19-3_all.deb 12416 MD5Sum:cb2596025e967af7ff27427842766833 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-json-pointer/python3-json-pointer_1.9-3_all.deb' python3-json-pointer_1.9-3_all.deb 7262 MD5Sum:1bde57c985279df596aed63775fd1ed5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-oauthlib/python3-oauthlib_1.0.3-1_all.deb' python3-oauthlib_1.0.3-1_all.deb 62486 MD5Sum:7c1f5bd6db8c0ce8c08dd4220ee548a6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-pkg-resources_20.7.0-1_all.deb' python-pkg-resources_20.7.0-1_all.deb 108428 MD5Sum:33fb00c7fd20b868b36407e0210cda2c -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-setuptools_20.7.0-1_all.deb' python-setuptools_20.7.0-1_all.deb 169084 MD5Sum:5f51f781ed0c8c027029cf58336b1858 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyyaml/python3-yaml_3.11-3build1_amd64.deb' python3-yaml_3.11-3build1_amd64.deb 95592 MD5Sum:1f9e9ba917bfc2ab4857bae73434c7a7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-block-extra_2.5+dfsg-5ubuntu10.6_amd64.deb' qemu-block-extra_1%3a2.5+dfsg-5ubuntu10.6_amd64.deb 32770 MD5Sum:073e0430b15ef8bc093b5a4b99d36e6f -'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-common_2.5+dfsg-5ubuntu10.6_amd64.deb' qemu-system-common_1%3a2.5+dfsg-5ubuntu10.6_amd64.deb 281212 MD5Sum:96a52cc1b67600f120b2b468d59d23d6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-x86_2.5+dfsg-5ubuntu10.6_amd64.deb' qemu-system-x86_1%3a2.5+dfsg-5ubuntu10.6_amd64.deb 2758348 MD5Sum:0eeefc0245958be5dfe6dbec8c1e8516 -'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-utils_2.5+dfsg-5ubuntu10.6_amd64.deb' qemu-utils_1%3a2.5+dfsg-5ubuntu10.6_amd64.deb 577726 MD5Sum:533f6a19cd54df36e42a4a336bf29641 -'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rename/rename_0.20-4_all.deb' rename_0.20-4_all.deb 12010 MD5Sum:6cf1938ef51145a469ccef181a9304ce -'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rpcbind/rpcbind_0.2.3-0.2_amd64.deb' rpcbind_0.2.3-0.2_amd64.deb 40252 MD5Sum:52576ed752c0c2bb04db68576aecd827 -'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rsync/rsync_3.1.1-3ubuntu1_amd64.deb' rsync_3.1.1-3ubuntu1_amd64.deb 324680 MD5Sum:c856c6f0ced17498b62cd5222918e2e0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d-1build1_amd64.deb' librtmp1_2.4+20151223.gitfa8646d-1build1_amd64.deb 53892 MD5Sum:8b0bf8b00890590f67fba42b8050de2d -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/seabios/seabios_1.8.2-1ubuntu1_all.deb' seabios_1.8.2-1ubuntu1_all.deb 112532 MD5Sum:4c2c2bf6aa6d8bd26f90aa21a4ac4e0f -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/sharutils/sharutils_4.15.2-1_amd64.deb' sharutils_1%3a4.15.2-1_amd64.deb 148320 MD5Sum:82eebb19d70fcb9fe029b7e34407bea9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/software-properties/python3-software-properties_0.96.20.4_all.deb' python3-software-properties_0.96.20.4_all.deb 20002 MD5Sum:40c2d5596791c7ecf44a532f2e37f778 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/software-properties/software-properties-common_0.96.20.4_all.deb' software-properties-common_0.96.20.4_all.deb 9416 MD5Sum:c90b19b946703ae87f9969efda4d9a67 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/spice/libspice-server1_0.12.6-4ubuntu0.1_amd64.deb' libspice-server1_0.12.6-4ubuntu0.1_amd64.deb 337930 MD5Sum:c9c1151a559f28da293d41e9df4262da -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/libstrongswan_5.3.5-1ubuntu3_amd64.deb' libstrongswan_5.3.5-1ubuntu3_amd64.deb 1389936 MD5Sum:35b18e264b9596ab99b4a1be3d04bc13 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/libstrongswan-standard-plugins_5.3.5-1ubuntu3_amd64.deb' libstrongswan-standard-plugins_5.3.5-1ubuntu3_amd64.deb 265898 MD5Sum:5a06dd0c30304a6c3cc1263ca3f15c3d -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan_5.3.5-1ubuntu3_all.deb' strongswan_5.3.5-1ubuntu3_all.deb 27042 MD5Sum:b6336f9bc594ab356d13fdcb8e56ce9f -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-charon_5.3.5-1ubuntu3_amd64.deb' strongswan-charon_5.3.5-1ubuntu3_amd64.deb 55514 MD5Sum:22a8d0cdba50b922ae9611c297820208 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-libcharon_5.3.5-1ubuntu3_amd64.deb' strongswan-libcharon_5.3.5-1ubuntu3_amd64.deb 1240762 MD5Sum:9d230aea890e695545a7508af56eac24 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-starter_5.3.5-1ubuntu3_amd64.deb' strongswan-starter_5.3.5-1ubuntu3_amd64.deb 742676 MD5Sum:a793db72f6f7bc37dc29393399b9bfd5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/sudo/sudo_1.8.16-0ubuntu1.2_amd64.deb' sudo_1.8.16-0ubuntu1.2_amd64.deb 389432 MD5Sum:bebd286de1e01ef45e41786461e42cdc -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libsystemd0_229-4ubuntu12_amd64.deb' libsystemd0_229-4ubuntu12_amd64.deb 205222 MD5Sum:db9e34238d416ecce1bfbe9a4580b456 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libudev1_229-4ubuntu12_amd64.deb' libudev1_229-4ubuntu12_amd64.deb 55194 MD5Sum:4ea42145889745f95bbf7e0f025e9046 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/systemd_229-4ubuntu12_amd64.deb' systemd_229-4ubuntu12_amd64.deb 3782850 MD5Sum:ff1c8b26dc7ec4fa42c75dc24b157ebd -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/systemd-sysv_229-4ubuntu12_amd64.deb' systemd-sysv_229-4ubuntu12_amd64.deb 12668 MD5Sum:5c46b419ba52ceb7acbb95b1ec2c8057 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/udev_229-4ubuntu12_amd64.deb' udev_229-4ubuntu12_amd64.deb 992688 MD5Sum:bb5d269a93325b94d5e7363f00440cd4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/t/tar/tar_1.28-2.1ubuntu0.1_amd64.deb' tar_1.28-2.1ubuntu0.1_amd64.deb 208648 MD5Sum:984affa3d0dbbe9bbb9d67b005f14a8a -'http://us.archive.ubuntu.com/ubuntu/pool/main/t/tzdata/tzdata_2016h-0ubuntu0.16.04_all.deb' tzdata_2016h-0ubuntu0.16.04_all.deb 167942 MD5Sum:d87c080112c268ebdd809a4703f28b35 -'http://us.archive.ubuntu.com/ubuntu/pool/main/u/unattended-upgrades/unattended-upgrades_0.90ubuntu0.2_all.deb' unattended-upgrades_0.90ubuntu0.2_all.deb 31704 MD5Sum:1d06ac8bfff20729708f7ef0e884a3eb -'http://us.archive.ubuntu.com/ubuntu/pool/main/u/unzip/unzip_6.0-20ubuntu1_amd64.deb' unzip_6.0-20ubuntu1_amd64.deb 158434 MD5Sum:059c9f15163425d4c5f818e2ad599597 -'http://us.archive.ubuntu.com/ubuntu/pool/main/u/usbredir/libusbredirparser1_0.7.1-1_amd64.deb' libusbredirparser1_0.7.1-1_amd64.deb 13612 MD5Sum:617c6126646b6b4d1e159b31a4a0dd28 -'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xen/libxen-4.6_4.6.0-1ubuntu4.2_amd64.deb' libxen-4.6_4.6.0-1ubuntu4.2_amd64.deb 344510 MD5Sum:5ca2669763f0de854ae0e967a22c2330 -'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xen/libxenstore3.0_4.6.0-1ubuntu4.2_amd64.deb' libxenstore3.0_4.6.0-1ubuntu4.2_amd64.deb 19658 MD5Sum:aa5c61be8faa0cd725d4bd0cc78fb35a -'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xorg/x11-common_7.7+13ubuntu3_all.deb' x11-common_1%3a7.7+13ubuntu3_all.deb 22390 MD5Sum:b0943f823b6f471e8c41ca66c2b5a2dd -'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xz-utils/xz-utils_5.1.1alpha+20120614-2ubuntu2_amd64.deb' xz-utils_5.1.1alpha+20120614-2ubuntu2_amd64.deb 78794 MD5Sum:195995c093404e3ee766d04ea3cdffe6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/y/yajl/libyajl2_2.1.0-2_amd64.deb' libyajl2_2.1.0-2_amd64.deb 19638 MD5Sum:331f71d0965718605fe52fa178cef955 -'http://us.archive.ubuntu.com/ubuntu/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-2ubuntu4_amd64.deb' zlib1g-dev_1%3a1.2.8.dfsg-2ubuntu4_amd64.deb 167514 MD5Sum:da0bb3efa89c1b319490daa401c4f3e0 -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-pip/python-pip_8.1.1-2ubuntu0.4_all.deb' python-pip_8.1.1-2ubuntu0.4_all.deb 144288 MD5Sum:ca535f732af3f0c509514b7e5c859d3d -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-pip/python-pip-whl_8.1.1-2ubuntu0.4_all.deb' python-pip-whl_8.1.1-2ubuntu0.4_all.deb 1110472 MD5Sum:2671bdb380db5230ef41812d18062a8b -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/python3-virtualenv_15.0.1+ds-3_all.deb' python3-virtualenv_15.0.1+ds-3_all.deb 43314 MD5Sum:1b24978862f9c9f1c59b6569f2480859 -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/python-virtualenv_15.0.1+ds-3_all.deb' python-virtualenv_15.0.1+ds-3_all.deb 46666 MD5Sum:767afd769b5d61aa707daf76b86afd1e -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/virtualenv_15.0.1+ds-3_all.deb' virtualenv_15.0.1+ds-3_all.deb 4342 MD5Sum:181e1f80105ca58cadcae1d351d916ce -'http://us.archive.ubuntu.com/ubuntu/pool/universe/w/wheel/python-wheel_0.29.0-1_all.deb' python-wheel_0.29.0-1_all.deb 48050 MD5Sum:cec5453c98565e6c57d446c45176f38b - +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/accountsservice/accountsservice_0.6.40-2ubuntu11.3_amd64.deb' accountsservice_0.6.40-2ubuntu11.3_amd64.deb 56054 MD5Sum:b95cd60fcd9b2d0243c9075beb8d541b +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/accountsservice/libaccountsservice0_0.6.40-2ubuntu11.3_amd64.deb' libaccountsservice0_0.6.40-2ubuntu11.3_amd64.deb 68730 MD5Sum:68be2b361d99978d30dd900fda8775bf +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/acl/acl_2.2.52-3_amd64.deb' acl_2.2.52-3_amd64.deb 37960 MD5Sum:39c72a4a24b243236757759d679380bb +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2_1.1.0-0ubuntu1_amd64.deb' libasound2_1.1.0-0ubuntu1_amd64.deb 350112 MD5Sum:c7a5b1b0cfdd1d7f1a8f26bcac4701a3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2-data_1.1.0-0ubuntu1_all.deb' libasound2-data_1.1.0-0ubuntu1_all.deb 29438 MD5Sum:4cd49c6c84f451d11459c880236bb337 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apparmor/libapparmor1_2.10.95-0ubuntu2.5_amd64.deb' libapparmor1_2.10.95-0ubuntu2.5_amd64.deb 31568 MD5Sum:6368f1dd486380cbbd769547840ccc7e +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/apt_1.2.15_amd64.deb' apt_1.2.15_amd64.deb 1041320 MD5Sum:ba1c209b0186131ddee9c787012922fa +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/apt-utils_1.2.15_amd64.deb' apt-utils_1.2.15_amd64.deb 195914 MD5Sum:e9a50437daa2d3d2262b01b4784899f0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/libapt-inst2.0_1.2.15_amd64.deb' libapt-inst2.0_1.2.15_amd64.deb 55466 MD5Sum:c48d1335a509059951fbf76057edc063 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/libapt-pkg5.0_1.2.15_amd64.deb' libapt-pkg5.0_1.2.15_amd64.deb 702112 MD5Sum:fd14c8389920296a3accc75fea8d253d +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-client3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb' libavahi-client3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb 25148 MD5Sum:e58d3b6a71e9da24b430f76f90f63f9d +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-common3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb' libavahi-common3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb 21642 MD5Sum:9f4106c0918bf2b779e7d4e2158ef648 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-common-data_0.6.32~rc+dfsg-1ubuntu2_amd64.deb' libavahi-common-data_0.6.32~rc+dfsg-1ubuntu2_amd64.deb 21706 MD5Sum:f7e6efc7b58036c6154be9b3f050845b +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/base-files/base-files_9.4ubuntu4.3_amd64.deb' base-files_9.4ubuntu4.3_amd64.deb 67704 MD5Sum:02d9491f26e50c8e54996e4a9960eaa3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libdns-export162_9.10.3.dfsg.P4-8ubuntu1.2_amd64.deb' libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.2_amd64.deb 665284 MD5Sum:f6bb3437f70cafc02a88bd06f0fcec59 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libisc-export160_9.10.3.dfsg.P4-8ubuntu1.2_amd64.deb' libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.2_amd64.deb 151972 MD5Sum:d512e8d4eb2a1365a424ffe429788f1b +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/binutils/binutils_2.26.1-1ubuntu1~16.04.3_amd64.deb' binutils_2.26.1-1ubuntu1~16.04.3_amd64.deb 2310310 MD5Sum:04b00c4b3ba1d86afbb679b63476d05a +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/blinker/python3-blinker_1.3.dfsg2-1build1_all.deb' python3-blinker_1.3.dfsg2-1build1_all.deb 12518 MD5Sum:ba0b5d380216ccb354cbc9a21e0929d5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bluez/libbluetooth3_5.37-0ubuntu5_amd64.deb' libbluetooth3_5.37-0ubuntu5_amd64.deb 61306 MD5Sum:c8a82247c33f550d76e9489de794533d +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-iostreams1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-iostreams1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 28954 MD5Sum:6f938f436adabb8e01cf4382f1d89876 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-random1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-random1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 11674 MD5Sum:22138508eb0106143b73c270141d1761 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-system1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-system1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 9146 MD5Sum:3dd69b1b4c2a64a4600cd781c38f3c6a +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-thread1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-thread1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 47010 MD5Sum:2c185c0d3e0ff3d424fbb077e78fe545 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bridge-utils/bridge-utils_1.5-9ubuntu1_amd64.deb' bridge-utils_1.5-9ubuntu1_amd64.deb 28610 MD5Sum:a81ea7f42da2e7a6c32b866681897ad4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/brltty/libbrlapi0.6_5.3.1-2ubuntu2.1_amd64.deb' libbrlapi0.6_5.3.1-2ubuntu2.1_amd64.deb 20714 MD5Sum:18e457ca6629c3a0863994a976f93973 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/build-essential/build-essential_12.1ubuntu2_amd64.deb' build-essential_12.1ubuntu2_amd64.deb 4758 MD5Sum:731c3a328f87a14bf4f887ceffc51241 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ca-certificates-java/ca-certificates-java_20160321_all.deb' ca-certificates-java_20160321_all.deb 12862 MD5Sum:fcb5fd121a45e7e49b85e87fc038d6d5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ceph/librados2_10.2.2-0ubuntu0.16.04.2_amd64.deb' librados2_10.2.2-0ubuntu0.16.04.2_amd64.deb 1633494 MD5Sum:b977fc1737be2db89e3cdafc8134e1ac +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ceph/librbd1_10.2.2-0ubuntu0.16.04.2_amd64.deb' librbd1_10.2.2-0ubuntu0.16.04.2_amd64.deb 2108866 MD5Sum:60f4d61fe06d5fbf8e7d8c5b80f1cf16 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloud-init/cloud-init_0.7.8-49-g9e904bb-0ubuntu1~16.04.1_all.deb' cloud-init_0.7.8-49-g9e904bb-0ubuntu1~16.04.1_all.deb 287546 MD5Sum:8b4654780848a7ace5f2a1b6b1e3a24b +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloud-utils/cloud-guest-utils_0.27-0ubuntu24_all.deb' cloud-guest-utils_0.27-0ubuntu24_all.deb 15164 MD5Sum:8b08dbc4a576e942fe4acdd9f4f51aca +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/configobj/python3-configobj_5.0.6-2_all.deb' python3-configobj_5.0.6-2_all.deb 34200 MD5Sum:cbce754e3638c980fd63c384f1a163a8 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cpu-checker/cpu-checker_0.7-0ubuntu7_amd64.deb' cpu-checker_0.7-0ubuntu7_amd64.deb 6862 MD5Sum:1a809fb421f82a1d5d148013bedcba59 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cups/libcups2_2.1.3-4_amd64.deb' libcups2_2.1.3-4_amd64.deb 196652 MD5Sum:3995ab409b0cb7c4440dfc90b54729d6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/curl/libcurl3-gnutls_7.47.0-1ubuntu2.2_amd64.deb' libcurl3-gnutls_7.47.0-1ubuntu2.2_amd64.deb 184138 MD5Sum:e1ae11ed9e545314ff650ab2d10df818 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.26.dfsg1-14build1_amd64.deb' libsasl2-2_2.1.26.dfsg1-14build1_amd64.deb 48708 MD5Sum:af15d7b37cbdfc4c413273c5225a67a6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cyrus-sasl2/libsasl2-modules_2.1.26.dfsg1-14build1_amd64.deb' libsasl2-modules_2.1.26.dfsg1-14build1_amd64.deb 47526 MD5Sum:8fda866e5a4adfe40a1ffc15fac77542 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cyrus-sasl2/libsasl2-modules-db_2.1.26.dfsg1-14build1_amd64.deb' libsasl2-modules-db_2.1.26.dfsg1-14build1_amd64.deb 14458 MD5Sum:08577afddd24ee2e6fce4ff455653081 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dbus/dbus_1.10.6-1ubuntu3.1_amd64.deb' dbus_1.10.6-1ubuntu3.1_amd64.deb 141352 MD5Sum:2bc40ff5d33a6d65993b125fe3af653c +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dbus/libdbus-1-3_1.10.6-1ubuntu3.1_amd64.deb' libdbus-1-3_1.10.6-1ubuntu3.1_amd64.deb 160756 MD5Sum:1deb247321c3a2007e178e7806d27318 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/device-tree-compiler/libfdt1_1.4.0+dfsg-2_amd64.deb' libfdt1_1.4.0+dfsg-2_amd64.deb 14136 MD5Sum:ea277dec72e4b0dc9ae18140dab6f147 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/distro-info-data/distro-info-data_0.28ubuntu0.2_all.deb' distro-info-data_0.28ubuntu0.2_all.deb 4006 MD5Sum:4497d860935a3fec1cea983b26082821 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dkms/dkms_2.2.0.3-2ubuntu11.3_all.deb' dkms_2.2.0.3-2ubuntu11.3_all.deb 66148 MD5Sum:e4f4d32677876e2792a7b152cd706a54 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg-dev_1.18.4ubuntu1.1_all.deb' dpkg-dev_1.18.4ubuntu1.1_all.deb 584114 MD5Sum:8e732fd2f0eb2141b9fa5efa33891858 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/libdpkg-perl_1.18.4ubuntu1.1_all.deb' libdpkg-perl_1.18.4ubuntu1.1_all.deb 195494 MD5Sum:ef90a84e0cbdc08dbf664d3367ba0fc4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/e/expat/libexpat1-dev_2.1.0-7ubuntu0.16.04.2_amd64.deb' libexpat1-dev_2.1.0-7ubuntu0.16.04.2_amd64.deb 115328 MD5Sum:df5d013eec845ea323df40c64e3ac2e6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/fakeroot_1.20.2-1ubuntu1_amd64.deb' fakeroot_1.20.2-1ubuntu1_amd64.deb 61784 MD5Sum:b153b1ed316419be55f3f575c092e73b +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/libfakeroot_1.20.2-1ubuntu1_amd64.deb' libfakeroot_1.20.2-1ubuntu1_amd64.deb 25510 MD5Sum:e3c90aa7376ae3a3e966d1688b9dab70 +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/flac/libflac8_1.3.1-4_amd64.deb' libflac8_1.3.1-4_amd64.deb 210396 MD5Sum:c0c0306a333d443f35c866bcf5e05c3a +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fontconfig/fontconfig-config_2.11.94-0ubuntu1.1_all.deb' fontconfig-config_2.11.94-0ubuntu1.1_all.deb 49934 MD5Sum:d8ee5cb98a73e9fd84f0c21b7f00728f +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fontconfig/libfontconfig1_2.11.94-0ubuntu1.1_amd64.deb' libfontconfig1_2.11.94-0ubuntu1.1_amd64.deb 131248 MD5Sum:e1d3510a190b0910720a7ae597ce53ea +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fonts-dejavu/fonts-dejavu-core_2.35-1_all.deb' fonts-dejavu-core_2.35-1_all.deb 1038624 MD5Sum:d3c6235a85d2646078f1b82ab257ef33 +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fuse/libfuse2_2.9.4-1ubuntu3.1_amd64.deb' libfuse2_2.9.4-1ubuntu3.1_amd64.deb 89908 MD5Sum:2bdd7633ce8e2d8b9978756416772991 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/cpp-5_5.4.0-6ubuntu1~16.04.4_amd64.deb' cpp-5_5.4.0-6ubuntu1~16.04.4_amd64.deb 7653108 MD5Sum:95c5a34a437e2fd3fac60c3b911c73f4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/g++-5_5.4.0-6ubuntu1~16.04.4_amd64.deb' g++-5_5.4.0-6ubuntu1~16.04.4_amd64.deb 8299854 MD5Sum:218ba077dc7a555055446919bc51545a +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/gcc-5_5.4.0-6ubuntu1~16.04.4_amd64.deb' gcc-5_5.4.0-6ubuntu1~16.04.4_amd64.deb 8577362 MD5Sum:1f98521f896a3c1c528f5953a9063ac1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/gcc-5-base_5.4.0-6ubuntu1~16.04.4_amd64.deb' gcc-5-base_5.4.0-6ubuntu1~16.04.4_amd64.deb 16770 MD5Sum:376937778a114defb614754043c40977 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libasan2_5.4.0-6ubuntu1~16.04.4_amd64.deb' libasan2_5.4.0-6ubuntu1~16.04.4_amd64.deb 264364 MD5Sum:bf412ced66f2fae39b50c5f74f0cbd5d +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libatomic1_5.4.0-6ubuntu1~16.04.4_amd64.deb' libatomic1_5.4.0-6ubuntu1~16.04.4_amd64.deb 8912 MD5Sum:05f0d545dce15b8e9d2388b3709ad753 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libcc1-0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libcc1-0_5.4.0-6ubuntu1~16.04.4_amd64.deb 38792 MD5Sum:1d2578c6168349fb265ea244cb7800b9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libcilkrts5_5.4.0-6ubuntu1~16.04.4_amd64.deb' libcilkrts5_5.4.0-6ubuntu1~16.04.4_amd64.deb 40088 MD5Sum:e2cdd94f50eb96b68b1844f1cd148687 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libgcc-5-dev_5.4.0-6ubuntu1~16.04.4_amd64.deb' libgcc-5-dev_5.4.0-6ubuntu1~16.04.4_amd64.deb 2236718 MD5Sum:92c3c2d39dcbb870745c4f75e7d2a658 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libgomp1_5.4.0-6ubuntu1~16.04.4_amd64.deb' libgomp1_5.4.0-6ubuntu1~16.04.4_amd64.deb 55046 MD5Sum:e4e5c6228e730d9403a20b6f9c59d314 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libitm1_5.4.0-6ubuntu1~16.04.4_amd64.deb' libitm1_5.4.0-6ubuntu1~16.04.4_amd64.deb 27420 MD5Sum:106531f1a3a213f8e61df014d8e64046 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/liblsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb' liblsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb 104930 MD5Sum:64baa9c8945b3adcac86b3e08cc64e2b +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libmpx0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libmpx0_5.4.0-6ubuntu1~16.04.4_amd64.deb 9766 MD5Sum:0a654c0c2e205d04c2e222d0a68ab3d2 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libquadmath0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libquadmath0_5.4.0-6ubuntu1~16.04.4_amd64.deb 131214 MD5Sum:e212664529333fb7e2db1afc8f6c50b2 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++-5-dev_5.4.0-6ubuntu1~16.04.4_amd64.deb' libstdc++-5-dev_5.4.0-6ubuntu1~16.04.4_amd64.deb 1425994 MD5Sum:328ff483c56502b1d1ebb2f30b269350 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.4_amd64.deb' libstdc++6_5.4.0-6ubuntu1~16.04.4_amd64.deb 393398 MD5Sum:17eff9bc4d304ca36f2f1633be482654 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libtsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libtsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb 243674 MD5Sum:73f6474b928dc0038c94f171890c6386 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libubsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libubsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb 95334 MD5Sum:01552deb86cb21a84f5aea05038a1290 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/cpp_5.3.1-1ubuntu1_amd64.deb' cpp_4%3a5.3.1-1ubuntu1_amd64.deb 27662 MD5Sum:4c291e4aaf6406f61e3188d526479d51 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/g++_5.3.1-1ubuntu1_amd64.deb' g++_4%3a5.3.1-1ubuntu1_amd64.deb 1504 MD5Sum:0c03d113ff00ebc960f294420e60855b +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/gcc_5.3.1-1ubuntu1_amd64.deb' gcc_4%3a5.3.1-1ubuntu1_amd64.deb 5244 MD5Sum:df1516b203a66a86a728eab7a4c349e8 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gdbm/libgdbm3_1.8.3-13.1_amd64.deb' libgdbm3_1.8.3-13.1_amd64.deb 16926 MD5Sum:b2001800d7c61d4b0b12b077a0af2b5a +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gdisk/gdisk_1.0.1-1build1_amd64.deb' gdisk_1.0.1-1build1_amd64.deb 194230 MD5Sum:24e876aa3c2e94e39c17a4551f5d8514 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/git/git_2.7.4-0ubuntu1_amd64.deb' git_1%3a2.7.4-0ubuntu1_amd64.deb 3006120 MD5Sum:0412535c34d3f900629e9409ad73aead +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/git/git-man_2.7.4-0ubuntu1_all.deb' git-man_1%3a2.7.4-0ubuntu1_all.deb 734758 MD5Sum:0c00ac0f6cc7cc5b1b17f2e30ad44342 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc6_2.23-0ubuntu4_amd64.deb' libc6_2.23-0ubuntu4_amd64.deb 2586034 MD5Sum:e4c2d64ecf1740c251bcbce0c14c49be +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc6-dev_2.23-0ubuntu4_amd64.deb' libc6-dev_2.23-0ubuntu4_amd64.deb 2084120 MD5Sum:4aa086096630eb45938f05043a76ac0e +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc-bin_2.23-0ubuntu4_amd64.deb' libc-bin_2.23-0ubuntu4_amd64.deb 623420 MD5Sum:6d38874c42ae8c38bbfde95c26d45d5b +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc-dev-bin_2.23-0ubuntu4_amd64.deb' libc-dev-bin_2.23-0ubuntu4_amd64.deb 68676 MD5Sum:6416120c72cdd6621e5958f8c32a81f9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/locales_2.23-0ubuntu4_all.deb' locales_2.23-0ubuntu4_all.deb 3213658 MD5Sum:100029ea04495062871be11d32105d98 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/multiarch-support_2.23-0ubuntu4_amd64.deb' multiarch-support_2.23-0ubuntu4_amd64.deb 6828 MD5Sum:5c2dab8596dff6294675d8ac6e25f1f4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnupg/gnupg_1.4.20-1ubuntu3.1_amd64.deb' gnupg_1.4.20-1ubuntu3.1_amd64.deb 625938 MD5Sum:955b23eb62539452a8aa37e34e6f77c1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnupg/gpgv_1.4.20-1ubuntu3.1_amd64.deb' gpgv_1.4.20-1ubuntu3.1_amd64.deb 165264 MD5Sum:1debba9f668b7dcdca878d1e0e25c98a +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/groff/groff-base_1.22.3-7_amd64.deb' groff-base_1.22.3-7_amd64.deb 1150932 MD5Sum:7afb23ed2960cd67ab3196f29b9ff7e2 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub2-common_2.02~beta2-36ubuntu3.2_amd64.deb' grub2-common_2.02~beta2-36ubuntu3.2_amd64.deb 510912 MD5Sum:634e13acd2c8cab54b01e84b5e254845 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-common_2.02~beta2-36ubuntu3.2_amd64.deb' grub-common_2.02~beta2-36ubuntu3.2_amd64.deb 1706552 MD5Sum:7899a24a07f8b62e08a455bdab510c47 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-pc_2.02~beta2-36ubuntu3.2_amd64.deb' grub-pc_2.02~beta2-36ubuntu3.2_amd64.deb 197080 MD5Sum:5d4cdb8542ad3e63302698a075e5e959 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-pc-bin_2.02~beta2-36ubuntu3.2_amd64.deb' grub-pc-bin_2.02~beta2-36ubuntu3.2_amd64.deb 883966 MD5Sum:9bb93b3374a6ad20419396c488cbf5f9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libasn1-8-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libasn1-8-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 174366 MD5Sum:42aa97710227f6c372d232799fde6790 +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libgssapi3-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libgssapi3-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 96084 MD5Sum:0c9467b00d258e3175addbb5a16fdc72 +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libhcrypto4-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libhcrypto4-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 84938 MD5Sum:d6337d57fa1dda2c877a9f1c163ba0dd +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libheimbase1-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libheimbase1-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 29228 MD5Sum:15a7c7d180f14253f46d5e56409a0ffb +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libheimntlm0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libheimntlm0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 15090 MD5Sum:6f7a32beb2a3a04181c05efe940df1ee +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libhx509-5-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libhx509-5-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 107192 MD5Sum:b2b294bd3d2226f10c69058900323876 +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libkrb5-26-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libkrb5-26-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 202156 MD5Sum:000a329b39ae158d0ec280957741b14d +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libroken18-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libroken18-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 41190 MD5Sum:58c4093551f88ccca3c6c8a11d5e2357 +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libwind0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libwind0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 48180 MD5Sum:7e368713a6d03afb23a8f956a16b9ba7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/ifupdown/ifupdown_0.8.10ubuntu1.1_amd64.deb' ifupdown_0.8.10ubuntu1.1_amd64.deb 54916 MD5Sum:d013023982a1e01067d9ef9e02a327a3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools_0.122ubuntu8.5_all.deb' initramfs-tools_0.122ubuntu8.5_all.deb 8618 MD5Sum:6f5cdff02741b119d8033165749b812e +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools-bin_0.122ubuntu8.5_amd64.deb' initramfs-tools-bin_0.122ubuntu8.5_amd64.deb 9334 MD5Sum:c4f25ed3f10f6d234fc4f9b4e2556619 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools-core_0.122ubuntu8.5_all.deb' initramfs-tools-core_0.122ubuntu8.5_all.deb 42160 MD5Sum:c2e8b352d17b48c9e9badd040b1ed3c9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/init-system-helpers/init_1.29ubuntu3_amd64.deb' init_1.29ubuntu3_amd64.deb 4716 MD5Sum:5967a023e146860d888297cfb5773017 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/init-system-helpers/init-system-helpers_1.29ubuntu3_all.deb' init-system-helpers_1.29ubuntu3_all.deb 32416 MD5Sum:9b8e5436025f8006ae7f309fd3687b60 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/iptables/iptables_1.6.0-2ubuntu3_amd64.deb' iptables_1.6.0-2ubuntu3_amd64.deb 265782 MD5Sum:706f191cbb20bff7c7a9a0fc01a78c25 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/ipxe/ipxe-qemu_1.0.0+git-20150424.a25a16d-1ubuntu1_all.deb' ipxe-qemu_1.0.0+git-20150424.a25a16d-1ubuntu1_all.deb 717714 MD5Sum:01570467dacbe007f2d0fb76c30653a7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isc-dhcp/isc-dhcp-client_4.3.3-5ubuntu12.4_amd64.deb' isc-dhcp-client_4.3.3-5ubuntu12.4_amd64.deb 223488 MD5Sum:0213ed75d3f4c7f06226ee7b9a974d12 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isc-dhcp/isc-dhcp-common_4.3.3-5ubuntu12.4_amd64.deb' isc-dhcp-common_4.3.3-5ubuntu12.4_amd64.deb 104488 MD5Sum:21948bd2241628b4d690e79c10515ecf +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isl/libisl15_0.16.1-1_amd64.deb' libisl15_0.16.1-1_amd64.deb 524254 MD5Sum:eec42a28e5ed8a5eaaf6278b455176ed +'http://us.archive.ubuntu.com/ubuntu/pool/main/j/java-common/java-common_0.56ubuntu2_all.deb' java-common_0.56ubuntu2_all.deb 7742 MD5Sum:cef7383c2628cc09bccbf0777e4eac37 +'http://us.archive.ubuntu.com/ubuntu/pool/main/j/jinja2/python3-jinja2_2.8-1_all.deb' python3-jinja2_2.8-1_all.deb 102518 MD5Sum:2511385ccb261c47c7dc2479abb6848d +'http://us.archive.ubuntu.com/ubuntu/pool/main/k/kbd/kbd_1.15.5-1ubuntu5_amd64.deb' kbd_1.15.5-1ubuntu5_amd64.deb 183018 MD5Sum:4e77ee969276644f3bc9168bee7e3995 +'http://us.archive.ubuntu.com/ubuntu/pool/main/k/keyutils/keyutils_1.5.9-8ubuntu1_amd64.deb' keyutils_1.5.9-8ubuntu1_amd64.deb 47054 MD5Sum:c7a363bce61cc8fbfb2b252d7a98f0fa +'http://us.archive.ubuntu.com/ubuntu/pool/main/k/klibc/klibc-utils_2.0.4-8ubuntu1.16.04.2_amd64.deb' klibc-utils_2.0.4-8ubuntu1.16.04.2_amd64.deb 107498 MD5Sum:e07a76e70f2acfef7edf54b08be0a4a3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/k/klibc/libklibc_2.0.4-8ubuntu1.16.04.2_amd64.deb' libklibc_2.0.4-8ubuntu1.16.04.2_amd64.deb 41326 MD5Sum:b123c76c6d8f2f80a6247e5ce915dd48 +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libaio/libaio1_0.3.110-2_amd64.deb' libaio1_0.3.110-2_amd64.deb 6356 MD5Sum:2ed968780e68742f43eddebadf82ff67 +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-perl/libalgorithm-diff-perl_1.19.03-1_all.deb' libalgorithm-diff-perl_1.19.03-1_all.deb 47622 MD5Sum:3d6f7b46454ff0b8589904fc4f8dd602 +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-xs-perl/libalgorithm-diff-xs-perl_0.04-4build1_amd64.deb' libalgorithm-diff-xs-perl_0.04-4build1_amd64.deb 10998 MD5Sum:330e839dcd98097723870b28ba9a8810 +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-merge-perl/libalgorithm-merge-perl_0.08-3_all.deb' libalgorithm-merge-perl_0.08-3_all.deb 11992 MD5Sum:6b456963b6629af0514be1b8ccbaa7fc +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libasyncns/libasyncns0_0.8-5build1_amd64.deb' libasyncns0_0.8-5build1_amd64.deb 12336 MD5Sum:dbb4957abb710a70453eac0e77fc797b +'http://us.archive.ubuntu.com/ubuntu/pool/main/libc/libcaca/libcaca0_0.99.beta19-2build2~gcc5.2_amd64.deb' libcaca0_0.99.beta19-2build2~gcc5.2_amd64.deb 202380 MD5Sum:b49a9b48694bf35e217fee1295dd14dd +'http://us.archive.ubuntu.com/ubuntu/pool/main/libc/libcacard/libcacard0_2.5.0-2_amd64.deb' libcacard0_1%3a2.5.0-2_amd64.deb 19666 MD5Sum:0d371aa9cdc23ac668bc6e2afa1c44f0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libeatmydata/eatmydata_105-3_all.deb' eatmydata_105-3_all.deb 5502 MD5Sum:bc5bc47ea615b69da0f5d3c090c74a91 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libeatmydata/libeatmydata1_105-3_amd64.deb' libeatmydata1_105-3_amd64.deb 7280 MD5Sum:1f39d8cff52be865527547c09fc772db +'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/liberror-perl/liberror-perl_0.17-1.2_all.deb' liberror-perl_0.17-1.2_all.deb 19594 MD5Sum:bd1a8035bbfae2cd7d718f54fd93e0d5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libevent/libevent-2.0-5_2.0.21-stable-2_amd64.deb' libevent-2.0-5_2.0.21-stable-2_amd64.deb 112550 MD5Sum:071d5951d910147ea84d0d024bee13ce +'http://us.archive.ubuntu.com/ubuntu/pool/main/libf/libfile-fcntllock-perl/libfile-fcntllock-perl_0.22-3_amd64.deb' libfile-fcntllock-perl_0.22-3_amd64.deb 32002 MD5Sum:26476d54bf4677cc993c8cd9a7dbaeca +'http://us.archive.ubuntu.com/ubuntu/pool/main/libg/libgcrypt20/libgcrypt20_1.6.5-2ubuntu0.2_amd64.deb' libgcrypt20_1.6.5-2ubuntu0.2_amd64.deb 336194 MD5Sum:ebe89b8db7294a6dc2ff9995a7d30060 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libi/libidn/libidn11_1.32-3ubuntu1.1_amd64.deb' libidn11_1.32-3ubuntu1.1_amd64.deb 45552 MD5Sum:74c4e3f65c05e61596efe2ef46941009 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libi/libiscsi/libiscsi2_1.12.0-2_amd64.deb' libiscsi2_1.12.0-2_amd64.deb 51550 MD5Sum:6c8f4a397968e478e9567785bba4283e +'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg8-empty/libjpeg8_8c-2ubuntu8_amd64.deb' libjpeg8_8c-2ubuntu8_amd64.deb 2194 MD5Sum:e0f16286dd787b951ffa953987fdf6a7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg-turbo/libjpeg-turbo8_1.4.2-0ubuntu3_amd64.deb' libjpeg-turbo8_1.4.2-0ubuntu3_amd64.deb 110656 MD5Sum:8e505d67491b22a9d38be353654b3bc3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnfnetlink/libnfnetlink0_1.0.1-3_amd64.deb' libnfnetlink0_1.0.1-3_amd64.deb 13262 MD5Sum:914d0640e09dd02057d0fd09f3da0eb5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnfsidmap/libnfsidmap2_0.25-5_amd64.deb' libnfsidmap2_0.25-5_amd64.deb 32182 MD5Sum:5e06543f26481fa549a1e017eec4ef36 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libo/libogg/libogg0_1.3.2-1_amd64.deb' libogg0_1.3.2-1_amd64.deb 17192 MD5Sum:55dd9b6982d66d6b168aa18fb3f90d2f +'http://us.archive.ubuntu.com/ubuntu/pool/main/libp/libpcap/libpcap0.8_1.7.4-2_amd64.deb' libpcap0.8_1.7.4-2_amd64.deb 116794 MD5Sum:6b4372b0840fada16f16ed4d97f32146 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libp/libpcap/libpcap0.8-dev_1.7.4-2_amd64.deb' libpcap0.8-dev_1.7.4-2_amd64.deb 212414 MD5Sum:44df3da8707c2b5cd1f3f0bb68a005a6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libp/libpcap/libpcap-dev_1.7.4-2_all.deb' libpcap-dev_1.7.4-2_all.deb 3394 MD5Sum:df89b21ddc14397fccb0a9e5e6a3542c +'http://us.archive.ubuntu.com/ubuntu/pool/main/libs/libsdl1.2/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb' libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb 167606 MD5Sum:52418fa1951b7edff3aecc67821f5786 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libs/libsndfile/libsndfile1_1.0.25-10_amd64.deb' libsndfile1_1.0.25-10_amd64.deb 137498 MD5Sum:1218c82cf611a5e4ff9919b91130c21e +'http://us.archive.ubuntu.com/ubuntu/pool/main/libt/libtirpc/libtirpc1_0.2.5-1_amd64.deb' libtirpc1_0.2.5-1_amd64.deb 75624 MD5Sum:bc4fb6407a0636517ce6670fd3ac2c40 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbis0a_1.3.5-3_amd64.deb' libvorbis0a_1.3.5-3_amd64.deb 86776 MD5Sum:248a92f34c15bfc3fff460186eac1358 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbisenc2_1.3.5-3_amd64.deb' libvorbisenc2_1.3.5-3_amd64.deb 70678 MD5Sum:62b0f630a03291eff71de6f844746721 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxi/libxi6_1.7.6-1_amd64.deb' libxi6_2%3a1.7.6-1_amd64.deb 28572 MD5Sum:2ad504b68a0a7c3f987307166de56a3a +'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxrender/libxrender1_0.9.9-0ubuntu1_amd64.deb' libxrender1_1%3a0.9.9-0ubuntu1_amd64.deb 18482 MD5Sum:124d535fd56229469116dfd6e47fe406 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxtst/libxtst6_1.2.2-1_amd64.deb' libxtst6_2%3a1.2.2-1_amd64.deb 14086 MD5Sum:2594435dcd76d6eec2ff3fb68a3d4e9d +'http://us.archive.ubuntu.com/ubuntu/pool/main/liby/libyaml/libyaml-0-2_0.1.6-3_amd64.deb' libyaml-0-2_0.1.6-3_amd64.deb 47596 MD5Sum:d5e5f5f176ebfe25ccb22965431bfe38 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/language-selector/language-selector-common_0.165.4_all.deb' language-selector-common_0.165.4_all.deb 213586 MD5Sum:b020f997ca40682c071d7b0f5c44062e +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/lcms2/liblcms2-2_2.6-3ubuntu2_amd64.deb' liblcms2-2_2.6-3ubuntu2_amd64.deb 136966 MD5Sum:425ab20e484e500aa2d48a281cb98d2c +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/less/less_481-2.1ubuntu0.1_amd64.deb' less_481-2.1ubuntu0.1_amd64.deb 109538 MD5Sum:ae43696453da4a56d9db1215e95e8302 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-firmware/linux-firmware_1.157.5_all.deb' linux-firmware_1.157.5_all.deb 37479650 MD5Sum:963700c4094b49605671b4c56ca2f8bc +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-headers-4.4.0-47_4.4.0-47.68_all.deb' linux-headers-4.4.0-47_4.4.0-47.68_all.deb 10002400 MD5Sum:33ff634199e695e7e3f439d47b5baa9b +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-headers-4.4.0-47-generic_4.4.0-47.68_amd64.deb' linux-headers-4.4.0-47-generic_4.4.0-47.68_amd64.deb 790156 MD5Sum:26c713f3d9666475ff49ada48984a8c6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-image-4.4.0-47-generic_4.4.0-47.68_amd64.deb' linux-image-4.4.0-47-generic_4.4.0-47.68_amd64.deb 18830894 MD5Sum:15ccfe224802de420913f7fb3f8075b4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-image-extra-4.4.0-47-generic_4.4.0-47.68_amd64.deb' linux-image-extra-4.4.0-47-generic_4.4.0-47.68_amd64.deb 38948166 MD5Sum:7da88764623fb9eef0e47a17abc378dc +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-libc-dev_4.4.0-47.68_amd64.deb' linux-libc-dev_4.4.0-47.68_amd64.deb 842418 MD5Sum:b227d19d5b228cc13883b0fcd22252af +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta/linux-generic_4.4.0.47.50_amd64.deb' linux-generic_4.4.0.47.50_amd64.deb 1790 MD5Sum:0a380d60e919fd548e30ec6f61da6c5d +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta/linux-headers-generic_4.4.0.47.50_amd64.deb' linux-headers-generic_4.4.0.47.50_amd64.deb 2286 MD5Sum:75496d02a8949e26e8e7df3dc3ad2cf7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta/linux-image-generic_4.4.0.47.50_amd64.deb' linux-image-generic_4.4.0.47.50_amd64.deb 2312 MD5Sum:4910c90490bb9d1ea223707ca1d52ce5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/make-dfsg/make_4.1-6_amd64.deb' make_4.1-6_amd64.deb 150924 MD5Sum:a2c33fce65c313f2d9be0e55166fc3f5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/manpages/manpages_4.04-2_all.deb' manpages_4.04-2_all.deb 1086712 MD5Sum:bb93c041e490ee0b6c2fef876dddf502 +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/manpages/manpages-dev_4.04-2_all.deb' manpages-dev_4.04-2_all.deb 2047608 MD5Sum:fea47c59fcc997aeab05238ecf9c5aba +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/markupsafe/python3-markupsafe_0.23-2build2_amd64.deb' python3-markupsafe_0.23-2build2_amd64.deb 16120 MD5Sum:de4d087f2d9db48351efd1fe861b21be +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/mpclib3/libmpc3_1.0.3-1_amd64.deb' libmpc3_1.0.3-1_amd64.deb 39676 MD5Sum:7892c51e73d8c5a5c16c1f2e8b93faa1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/mpfr4/libmpfr4_3.1.4-1_amd64.deb' libmpfr4_3.1.4-1_amd64.deb 190628 MD5Sum:5e8b331bd179e68edf5734a8b11306b2 +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/msr-tools/msr-tools_1.3-2_amd64.deb' msr-tools_1.3-2_amd64.deb 10636 MD5Sum:5ffb50c3889cfccc901b940923d89e29 +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nfs-utils/nfs-common_1.2.8-9ubuntu12_amd64.deb' nfs-common_1%3a1.2.8-9ubuntu12_amd64.deb 184538 MD5Sum:811cfcf44b77a9f3c0dca443c4a6cdbf +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nspr/libnspr4_4.12-0ubuntu0.16.04.1_amd64.deb' libnspr4_2%3a4.12-0ubuntu0.16.04.1_amd64.deb 112400 MD5Sum:6136aa494e3970cef74a03a5cc2415bb +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3_3.23-0ubuntu0.16.04.1_amd64.deb' libnss3_2%3a3.23-0ubuntu0.16.04.1_amd64.deb 1144232 MD5Sum:05b78e390c150fd4eb65c8de47358036 +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3-nssdb_3.23-0ubuntu0.16.04.1_all.deb' libnss3-nssdb_2%3a3.23-0ubuntu0.16.04.1_all.deb 10584 MD5Sum:6e7f301f6169b123e8f9ce82d68451ae +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/numactl/libnuma1_2.0.11-1ubuntu1_amd64.deb' libnuma1_2.0.11-1ubuntu1_amd64.deb 21016 MD5Sum:fb873c905ae23079608114661a32d1c7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openjdk-8/openjdk-8-jdk-headless_8u111-b14-2ubuntu0.16.04.2_amd64.deb' openjdk-8-jdk-headless_8u111-b14-2ubuntu0.16.04.2_amd64.deb 8166930 MD5Sum:95abce7371d1f3eda3584f6909e85f18 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openjdk-8/openjdk-8-jre-headless_8u111-b14-2ubuntu0.16.04.2_amd64.deb' openjdk-8-jre-headless_8u111-b14-2ubuntu0.16.04.2_amd64.deb 26886140 MD5Sum:4f3d16222254577160afce4cd333db19 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openldap/libldap-2.4-2_2.4.42+dfsg-2ubuntu3.1_amd64.deb' libldap-2.4-2_2.4.42+dfsg-2ubuntu3.1_amd64.deb 160630 MD5Sum:bfb7d8edf8289d8f01742469420efe37 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-client_7.2p2-4ubuntu2.1_amd64.deb' openssh-client_1%3a7.2p2-4ubuntu2.1_amd64.deb 587050 MD5Sum:55c7b2f2e9e18fbd70ce9f042bd99261 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-server_7.2p2-4ubuntu2.1_amd64.deb' openssh-server_1%3a7.2p2-4ubuntu2.1_amd64.deb 337896 MD5Sum:c2c16d323dbb288f745b7537c327d206 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-sftp-server_7.2p2-4ubuntu2.1_amd64.deb' openssh-sftp-server_1%3a7.2p2-4ubuntu2.1_amd64.deb 38762 MD5Sum:952e3bb32e10e130a090fa057dc408a6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.0.0_1.0.2g-1ubuntu4.5_amd64.deb' libssl1.0.0_1.0.2g-1ubuntu4.5_amd64.deb 1081760 MD5Sum:43fd613e133e35e98333ebceae7184ff +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_1.0.2g-1ubuntu4.5_amd64.deb' openssl_1.0.2g-1ubuntu4.5_amd64.deb 491434 MD5Sum:cff1a42acbf034afde850269791440af +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/opus/libopus0_1.1.2-1ubuntu1_amd64.deb' libopus0_1.1.2-1ubuntu1_amd64.deb 159200 MD5Sum:b8f45b2da56ac6d1a5a64769d2232e2c +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/p11-kit/libp11-kit0_0.23.2-5~ubuntu16.04.1_amd64.deb' libp11-kit0_0.23.2-5~ubuntu16.04.1_amd64.deb 105478 MD5Sum:b7eac686f16419708424463a5abcd859 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/patch/patch_2.7.5-1_amd64.deb' patch_2.7.5-1_amd64.deb 90382 MD5Sum:0c03555b50fc094f942a938e9efb33d8 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pcsc-lite/libpcsclite1_1.8.14-1ubuntu1_amd64.deb' libpcsclite1_1.8.14-1ubuntu1_amd64.deb 21384 MD5Sum:67383a357c969292fa13d5ca85fc1737 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/libperl5.22_5.22.1-9_amd64.deb' libperl5.22_5.22.1-9_amd64.deb 3370548 MD5Sum:37c5a3fd13de2e1fbe0568aceb4ff043 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl_5.22.1-9_amd64.deb' perl_5.22.1-9_amd64.deb 237264 MD5Sum:a4b787e5cf0a032822bc486ace90cdad +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl-modules-5.22_5.22.1-9_all.deb' perl-modules-5.22_5.22.1-9_all.deb 2640598 MD5Sum:71fb658af2eeaedbe87494cf511a0c92 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pixman/libpixman-1-0_0.33.6-1_amd64.deb' libpixman-1-0_0.33.6-1_amd64.deb 231222 MD5Sum:2d60906f5c3e3a3548490b1c621d1392 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/prettytable/python3-prettytable_0.7.2-3_all.deb' python3-prettytable_0.7.2-3_all.deb 19730 MD5Sum:958069d49fc751b73d945ac2e5adec4f +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/procps/libprocps4_3.3.10-4ubuntu2.2_amd64.deb' libprocps4_2%3a3.3.10-4ubuntu2.2_amd64.deb 32704 MD5Sum:2330d7b32009998578c06b8cff2d6c1b +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/procps/procps_3.3.10-4ubuntu2.2_amd64.deb' procps_2%3a3.3.10-4ubuntu2.2_amd64.deb 221854 MD5Sum:9a273d6972b24df7e3d86af0a2084ee2 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pulseaudio/libpulse0_8.0-0ubuntu3.1_amd64.deb' libpulse0_1%3a8.0-0ubuntu3.1_amd64.deb 248194 MD5Sum:04da1888132c241682bddcce35ed1e77 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyasn1/python3-pyasn1_0.1.9-1_all.deb' python3-pyasn1_0.1.9-1_all.deb 28132 MD5Sum:aea3d0df93c568bda4817c3c3910ef08 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pycurl/python3-pycurl_7.43.0-1ubuntu1_amd64.deb' python3-pycurl_7.43.0-1ubuntu1_amd64.deb 42334 MD5Sum:9384e6be4685d2cd06994a6ec23dbfac +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyjwt/python3-jwt_1.3.0-1_all.deb' python3-jwt_1.3.0-1_all.deb 15994 MD5Sum:aa1437e45418bb3371e1ab78fad20c8b +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyserial/python3-serial_3.0.1-1_all.deb' python3-serial_3.0.1-1_all.deb 54058 MD5Sum:4b9e76fe3f6cdaa0c8d8f5c6ee0e80b1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7_2.7.12-1ubuntu0~16.04.1_amd64.deb' libpython2.7_2.7.12-1ubuntu0~16.04.1_amd64.deb 1069728 MD5Sum:c355a8d8c72dee5f06c38aa637f7d5f6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-dev_2.7.12-1ubuntu0~16.04.1_amd64.deb' libpython2.7-dev_2.7.12-1ubuntu0~16.04.1_amd64.deb 27806182 MD5Sum:b1606b5ecd36ddbe756e1db9db371065 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-minimal_2.7.12-1ubuntu0~16.04.1_amd64.deb' libpython2.7-minimal_2.7.12-1ubuntu0~16.04.1_amd64.deb 339378 MD5Sum:16cd81bed67b58992ba326d225da74a9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-stdlib_2.7.12-1ubuntu0~16.04.1_amd64.deb' libpython2.7-stdlib_2.7.12-1ubuntu0~16.04.1_amd64.deb 1883824 MD5Sum:b51aee7135c4c40745afc1dd4fb87067 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7_2.7.12-1ubuntu0~16.04.1_amd64.deb' python2.7_2.7.12-1ubuntu0~16.04.1_amd64.deb 224330 MD5Sum:d9789fea16fda2a928f6ed39f3434f29 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7-dev_2.7.12-1ubuntu0~16.04.1_amd64.deb' python2.7-dev_2.7.12-1ubuntu0~16.04.1_amd64.deb 276176 MD5Sum:10628375ea7e36d5e8f7ba5273c7d9b1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7-minimal_2.7.12-1ubuntu0~16.04.1_amd64.deb' python2.7-minimal_2.7.12-1ubuntu0~16.04.1_amd64.deb 1295108 MD5Sum:60f2c79700931bcbd713556b6b5bda03 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/libpython3.5-minimal_3.5.2-2ubuntu0~16.04.1_amd64.deb' libpython3.5-minimal_3.5.2-2ubuntu0~16.04.1_amd64.deb 525856 MD5Sum:c787784b944542dee0b10465a45bac99 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/libpython3.5-stdlib_3.5.2-2ubuntu0~16.04.1_amd64.deb' libpython3.5-stdlib_3.5.2-2ubuntu0~16.04.1_amd64.deb 2129936 MD5Sum:500952aa58ef0e7f1f5f76b3a4037bdf +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/python3.5_3.5.2-2ubuntu0~16.04.1_amd64.deb' python3.5_3.5.2-2ubuntu0~16.04.1_amd64.deb 165176 MD5Sum:32b4fac2b139dfb340ddee92d78a7f59 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/python3.5-minimal_3.5.2-2ubuntu0~16.04.1_amd64.deb' python3.5-minimal_3.5.2-2ubuntu0~16.04.1_amd64.deb 1596870 MD5Sum:be7d322cad015751590ff585630c9244 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-cffi/python3-cffi-backend_1.5.2-1ubuntu1_amd64.deb' python3-cffi-backend_1.5.2-1ubuntu1_amd64.deb 59108 MD5Sum:c27b5b99bd74a557cbf97186a1266bf7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-cryptography/python3-cryptography_1.2.3-1_amd64.deb' python3-cryptography_1.2.3-1_amd64.deb 198070 MD5Sum:e1e24fd82d7ad6e0c0a5ecf2931a3dc2 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-all-dev_2.7.11-1_amd64.deb' libpython-all-dev_2.7.11-1_amd64.deb 992 MD5Sum:5b8013073862e493f5c4f35e4fc12d62 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-dev_2.7.11-1_amd64.deb' libpython-dev_2.7.11-1_amd64.deb 7728 MD5Sum:27b5b2364088a2e4d49e00e0b50f75e1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-stdlib_2.7.11-1_amd64.deb' libpython-stdlib_2.7.11-1_amd64.deb 7656 MD5Sum:0632b48d11a10ea0b58adad543887f8a +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python_2.7.11-1_amd64.deb' python_2.7.11-1_amd64.deb 136892 MD5Sum:af686bd03f39be3f3cd865d38b44f5bf +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-all_2.7.11-1_amd64.deb' python-all_2.7.11-1_amd64.deb 978 MD5Sum:bf338b9d5360ec685bfbf9a323afcf1e +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-all-dev_2.7.11-1_amd64.deb' python-all-dev_2.7.11-1_amd64.deb 1000 MD5Sum:d68ff89d7581cd985bc0ff3c7c1c31a0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-dev_2.7.11-1_amd64.deb' python-dev_2.7.11-1_amd64.deb 1160 MD5Sum:a1dc029ad0f502f7d41fdb5639650b85 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-minimal_2.7.11-1_amd64.deb' python-minimal_2.7.11-1_amd64.deb 28156 MD5Sum:5f74584a69921aac52908a029aca4e04 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-idna/python3-idna_2.0-3_all.deb' python3-idna_2.0-3_all.deb 35084 MD5Sum:5a78ae4de7cc7e91a16badc125cf5225 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-json-patch/python3-jsonpatch_1.19-3_all.deb' python3-jsonpatch_1.19-3_all.deb 12416 MD5Sum:cb2596025e967af7ff27427842766833 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-json-pointer/python3-json-pointer_1.9-3_all.deb' python3-json-pointer_1.9-3_all.deb 7262 MD5Sum:1bde57c985279df596aed63775fd1ed5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-oauthlib/python3-oauthlib_1.0.3-1_all.deb' python3-oauthlib_1.0.3-1_all.deb 62486 MD5Sum:7c1f5bd6db8c0ce8c08dd4220ee548a6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-pkg-resources_20.7.0-1_all.deb' python-pkg-resources_20.7.0-1_all.deb 108428 MD5Sum:33fb00c7fd20b868b36407e0210cda2c +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-setuptools_20.7.0-1_all.deb' python-setuptools_20.7.0-1_all.deb 169084 MD5Sum:5f51f781ed0c8c027029cf58336b1858 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyyaml/python3-yaml_3.11-3build1_amd64.deb' python3-yaml_3.11-3build1_amd64.deb 95592 MD5Sum:1f9e9ba917bfc2ab4857bae73434c7a7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-block-extra_2.5+dfsg-5ubuntu10.6_amd64.deb' qemu-block-extra_1%3a2.5+dfsg-5ubuntu10.6_amd64.deb 32770 MD5Sum:073e0430b15ef8bc093b5a4b99d36e6f +'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-common_2.5+dfsg-5ubuntu10.6_amd64.deb' qemu-system-common_1%3a2.5+dfsg-5ubuntu10.6_amd64.deb 281212 MD5Sum:96a52cc1b67600f120b2b468d59d23d6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-x86_2.5+dfsg-5ubuntu10.6_amd64.deb' qemu-system-x86_1%3a2.5+dfsg-5ubuntu10.6_amd64.deb 2758348 MD5Sum:0eeefc0245958be5dfe6dbec8c1e8516 +'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-utils_2.5+dfsg-5ubuntu10.6_amd64.deb' qemu-utils_1%3a2.5+dfsg-5ubuntu10.6_amd64.deb 577726 MD5Sum:533f6a19cd54df36e42a4a336bf29641 +'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rename/rename_0.20-4_all.deb' rename_0.20-4_all.deb 12010 MD5Sum:6cf1938ef51145a469ccef181a9304ce +'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rpcbind/rpcbind_0.2.3-0.2_amd64.deb' rpcbind_0.2.3-0.2_amd64.deb 40252 MD5Sum:52576ed752c0c2bb04db68576aecd827 +'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rsync/rsync_3.1.1-3ubuntu1_amd64.deb' rsync_3.1.1-3ubuntu1_amd64.deb 324680 MD5Sum:c856c6f0ced17498b62cd5222918e2e0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d-1build1_amd64.deb' librtmp1_2.4+20151223.gitfa8646d-1build1_amd64.deb 53892 MD5Sum:8b0bf8b00890590f67fba42b8050de2d +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/seabios/seabios_1.8.2-1ubuntu1_all.deb' seabios_1.8.2-1ubuntu1_all.deb 112532 MD5Sum:4c2c2bf6aa6d8bd26f90aa21a4ac4e0f +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/sharutils/sharutils_4.15.2-1_amd64.deb' sharutils_1%3a4.15.2-1_amd64.deb 148320 MD5Sum:82eebb19d70fcb9fe029b7e34407bea9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/software-properties/python3-software-properties_0.96.20.4_all.deb' python3-software-properties_0.96.20.4_all.deb 20002 MD5Sum:40c2d5596791c7ecf44a532f2e37f778 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/software-properties/software-properties-common_0.96.20.4_all.deb' software-properties-common_0.96.20.4_all.deb 9416 MD5Sum:c90b19b946703ae87f9969efda4d9a67 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/spice/libspice-server1_0.12.6-4ubuntu0.1_amd64.deb' libspice-server1_0.12.6-4ubuntu0.1_amd64.deb 337930 MD5Sum:c9c1151a559f28da293d41e9df4262da +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/libstrongswan_5.3.5-1ubuntu3_amd64.deb' libstrongswan_5.3.5-1ubuntu3_amd64.deb 1389936 MD5Sum:35b18e264b9596ab99b4a1be3d04bc13 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/libstrongswan-standard-plugins_5.3.5-1ubuntu3_amd64.deb' libstrongswan-standard-plugins_5.3.5-1ubuntu3_amd64.deb 265898 MD5Sum:5a06dd0c30304a6c3cc1263ca3f15c3d +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan_5.3.5-1ubuntu3_all.deb' strongswan_5.3.5-1ubuntu3_all.deb 27042 MD5Sum:b6336f9bc594ab356d13fdcb8e56ce9f +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-charon_5.3.5-1ubuntu3_amd64.deb' strongswan-charon_5.3.5-1ubuntu3_amd64.deb 55514 MD5Sum:22a8d0cdba50b922ae9611c297820208 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-libcharon_5.3.5-1ubuntu3_amd64.deb' strongswan-libcharon_5.3.5-1ubuntu3_amd64.deb 1240762 MD5Sum:9d230aea890e695545a7508af56eac24 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-starter_5.3.5-1ubuntu3_amd64.deb' strongswan-starter_5.3.5-1ubuntu3_amd64.deb 742676 MD5Sum:a793db72f6f7bc37dc29393399b9bfd5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/sudo/sudo_1.8.16-0ubuntu1.2_amd64.deb' sudo_1.8.16-0ubuntu1.2_amd64.deb 389432 MD5Sum:bebd286de1e01ef45e41786461e42cdc +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libsystemd0_229-4ubuntu12_amd64.deb' libsystemd0_229-4ubuntu12_amd64.deb 205222 MD5Sum:db9e34238d416ecce1bfbe9a4580b456 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libudev1_229-4ubuntu12_amd64.deb' libudev1_229-4ubuntu12_amd64.deb 55194 MD5Sum:4ea42145889745f95bbf7e0f025e9046 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/systemd_229-4ubuntu12_amd64.deb' systemd_229-4ubuntu12_amd64.deb 3782850 MD5Sum:ff1c8b26dc7ec4fa42c75dc24b157ebd +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/systemd-sysv_229-4ubuntu12_amd64.deb' systemd-sysv_229-4ubuntu12_amd64.deb 12668 MD5Sum:5c46b419ba52ceb7acbb95b1ec2c8057 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/udev_229-4ubuntu12_amd64.deb' udev_229-4ubuntu12_amd64.deb 992688 MD5Sum:bb5d269a93325b94d5e7363f00440cd4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/t/tar/tar_1.28-2.1ubuntu0.1_amd64.deb' tar_1.28-2.1ubuntu0.1_amd64.deb 208648 MD5Sum:984affa3d0dbbe9bbb9d67b005f14a8a +'http://us.archive.ubuntu.com/ubuntu/pool/main/t/tzdata/tzdata_2016h-0ubuntu0.16.04_all.deb' tzdata_2016h-0ubuntu0.16.04_all.deb 167942 MD5Sum:d87c080112c268ebdd809a4703f28b35 +'http://us.archive.ubuntu.com/ubuntu/pool/main/u/unattended-upgrades/unattended-upgrades_0.90ubuntu0.2_all.deb' unattended-upgrades_0.90ubuntu0.2_all.deb 31704 MD5Sum:1d06ac8bfff20729708f7ef0e884a3eb +'http://us.archive.ubuntu.com/ubuntu/pool/main/u/unzip/unzip_6.0-20ubuntu1_amd64.deb' unzip_6.0-20ubuntu1_amd64.deb 158434 MD5Sum:059c9f15163425d4c5f818e2ad599597 +'http://us.archive.ubuntu.com/ubuntu/pool/main/u/usbredir/libusbredirparser1_0.7.1-1_amd64.deb' libusbredirparser1_0.7.1-1_amd64.deb 13612 MD5Sum:617c6126646b6b4d1e159b31a4a0dd28 +'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xen/libxen-4.6_4.6.0-1ubuntu4.2_amd64.deb' libxen-4.6_4.6.0-1ubuntu4.2_amd64.deb 344510 MD5Sum:5ca2669763f0de854ae0e967a22c2330 +'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xen/libxenstore3.0_4.6.0-1ubuntu4.2_amd64.deb' libxenstore3.0_4.6.0-1ubuntu4.2_amd64.deb 19658 MD5Sum:aa5c61be8faa0cd725d4bd0cc78fb35a +'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xorg/x11-common_7.7+13ubuntu3_all.deb' x11-common_1%3a7.7+13ubuntu3_all.deb 22390 MD5Sum:b0943f823b6f471e8c41ca66c2b5a2dd +'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xz-utils/xz-utils_5.1.1alpha+20120614-2ubuntu2_amd64.deb' xz-utils_5.1.1alpha+20120614-2ubuntu2_amd64.deb 78794 MD5Sum:195995c093404e3ee766d04ea3cdffe6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/y/yajl/libyajl2_2.1.0-2_amd64.deb' libyajl2_2.1.0-2_amd64.deb 19638 MD5Sum:331f71d0965718605fe52fa178cef955 +'http://us.archive.ubuntu.com/ubuntu/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-2ubuntu4_amd64.deb' zlib1g-dev_1%3a1.2.8.dfsg-2ubuntu4_amd64.deb 167514 MD5Sum:da0bb3efa89c1b319490daa401c4f3e0 +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-pip/python-pip_8.1.1-2ubuntu0.4_all.deb' python-pip_8.1.1-2ubuntu0.4_all.deb 144288 MD5Sum:ca535f732af3f0c509514b7e5c859d3d +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-pip/python-pip-whl_8.1.1-2ubuntu0.4_all.deb' python-pip-whl_8.1.1-2ubuntu0.4_all.deb 1110472 MD5Sum:2671bdb380db5230ef41812d18062a8b +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/python3-virtualenv_15.0.1+ds-3_all.deb' python3-virtualenv_15.0.1+ds-3_all.deb 43314 MD5Sum:1b24978862f9c9f1c59b6569f2480859 +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/python-virtualenv_15.0.1+ds-3_all.deb' python-virtualenv_15.0.1+ds-3_all.deb 46666 MD5Sum:767afd769b5d61aa707daf76b86afd1e +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/virtualenv_15.0.1+ds-3_all.deb' virtualenv_15.0.1+ds-3_all.deb 4342 MD5Sum:181e1f80105ca58cadcae1d351d916ce +'http://us.archive.ubuntu.com/ubuntu/pool/universe/w/wheel/python-wheel_0.29.0-1_all.deb' python-wheel_0.29.0-1_all.deb 48050 MD5Sum:cec5453c98565e6c57d446c45176f38b + diff --git a/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-11-28_1.5/pip-requirements.txt b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-11-28_1.5/pip-requirements.txt index 17bd8f0d6a..f8bacf5298 100644 --- a/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-11-28_1.5/pip-requirements.txt +++ b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-11-28_1.5/pip-requirements.txt @@ -1,15 +1,15 @@ -docopt==0.6.2 -ecdsa==0.13 -enum34==1.1.2 -interruptingcow==0.6 -ipaddress==1.0.16 -paramiko==1.16.0 -pycrypto==2.6.1 -pykwalify==1.5.0 -python-dateutil==2.4.2 -PyYAML==3.11 -requests==2.9.1 -robotframework==2.9.2 -scapy==2.3.1 -scp==0.10.2 -six==1.10.0 +docopt==0.6.2 +ecdsa==0.13 +enum34==1.1.2 +interruptingcow==0.6 +ipaddress==1.0.16 +paramiko==1.16.0 +pycrypto==2.6.1 +pykwalify==1.5.0 +python-dateutil==2.4.2 +PyYAML==3.11 +requests==2.9.1 +robotframework==2.9.2 +scapy==2.3.1 +scp==0.10.2 +six==1.10.0 diff --git a/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-12-19_1.6/apt-packages.txt b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-12-19_1.6/apt-packages.txt index 880d631a33..d9663168d4 100644 --- a/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-12-19_1.6/apt-packages.txt +++ b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-12-19_1.6/apt-packages.txt @@ -1,275 +1,275 @@ -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/accountsservice/accountsservice_0.6.40-2ubuntu11.3_amd64.deb' accountsservice_0.6.40-2ubuntu11.3_amd64.deb 56054 MD5Sum:b95cd60fcd9b2d0243c9075beb8d541b -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/accountsservice/libaccountsservice0_0.6.40-2ubuntu11.3_amd64.deb' libaccountsservice0_0.6.40-2ubuntu11.3_amd64.deb 68730 MD5Sum:68be2b361d99978d30dd900fda8775bf -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/acl/acl_2.2.52-3_amd64.deb' acl_2.2.52-3_amd64.deb 37960 MD5Sum:39c72a4a24b243236757759d679380bb -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2_1.1.0-0ubuntu1_amd64.deb' libasound2_1.1.0-0ubuntu1_amd64.deb 350112 MD5Sum:c7a5b1b0cfdd1d7f1a8f26bcac4701a3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2-data_1.1.0-0ubuntu1_all.deb' libasound2-data_1.1.0-0ubuntu1_all.deb 29438 MD5Sum:4cd49c6c84f451d11459c880236bb337 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apparmor/libapparmor1_2.10.95-0ubuntu2.5_amd64.deb' libapparmor1_2.10.95-0ubuntu2.5_amd64.deb 31568 MD5Sum:6368f1dd486380cbbd769547840ccc7e -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/apt_1.2.15ubuntu0.2_amd64.deb' apt_1.2.15ubuntu0.2_amd64.deb 1041600 MD5Sum:66383e6b0974ca78d853aa98b070c2fe -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/apt-utils_1.2.15ubuntu0.2_amd64.deb' apt-utils_1.2.15ubuntu0.2_amd64.deb 195706 MD5Sum:0d08e5553860606241afe237321f6250 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/libapt-inst2.0_1.2.15ubuntu0.2_amd64.deb' libapt-inst2.0_1.2.15ubuntu0.2_amd64.deb 55674 MD5Sum:2e41ba1f3686b1bbb2874101869d7e16 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/libapt-pkg5.0_1.2.15ubuntu0.2_amd64.deb' libapt-pkg5.0_1.2.15ubuntu0.2_amd64.deb 702126 MD5Sum:69210976f9d7c86a0884e28a4bbb8cb3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-client3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb' libavahi-client3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb 25148 MD5Sum:e58d3b6a71e9da24b430f76f90f63f9d -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-common3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb' libavahi-common3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb 21642 MD5Sum:9f4106c0918bf2b779e7d4e2158ef648 -'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-common-data_0.6.32~rc+dfsg-1ubuntu2_amd64.deb' libavahi-common-data_0.6.32~rc+dfsg-1ubuntu2_amd64.deb 21706 MD5Sum:f7e6efc7b58036c6154be9b3f050845b -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/base-files/base-files_9.4ubuntu4.3_amd64.deb' base-files_9.4ubuntu4.3_amd64.deb 67704 MD5Sum:02d9491f26e50c8e54996e4a9960eaa3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libdns-export162_9.10.3.dfsg.P4-8ubuntu1.3_amd64.deb' libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.3_amd64.deb 665856 MD5Sum:961126ca37f53b734292ab300903a7b6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libisc-export160_9.10.3.dfsg.P4-8ubuntu1.3_amd64.deb' libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.3_amd64.deb 152124 MD5Sum:a36999040747b9c3ebf62b2e628e5344 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/binutils/binutils_2.26.1-1ubuntu1~16.04.3_amd64.deb' binutils_2.26.1-1ubuntu1~16.04.3_amd64.deb 2310310 MD5Sum:04b00c4b3ba1d86afbb679b63476d05a -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/blinker/python3-blinker_1.3.dfsg2-1build1_all.deb' python3-blinker_1.3.dfsg2-1build1_all.deb 12518 MD5Sum:ba0b5d380216ccb354cbc9a21e0929d5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bluez/libbluetooth3_5.37-0ubuntu5_amd64.deb' libbluetooth3_5.37-0ubuntu5_amd64.deb 61306 MD5Sum:c8a82247c33f550d76e9489de794533d -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-iostreams1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-iostreams1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 28954 MD5Sum:6f938f436adabb8e01cf4382f1d89876 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-random1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-random1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 11674 MD5Sum:22138508eb0106143b73c270141d1761 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-system1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-system1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 9146 MD5Sum:3dd69b1b4c2a64a4600cd781c38f3c6a -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-thread1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-thread1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 47010 MD5Sum:2c185c0d3e0ff3d424fbb077e78fe545 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bridge-utils/bridge-utils_1.5-9ubuntu1_amd64.deb' bridge-utils_1.5-9ubuntu1_amd64.deb 28610 MD5Sum:a81ea7f42da2e7a6c32b866681897ad4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/brltty/libbrlapi0.6_5.3.1-2ubuntu2.1_amd64.deb' libbrlapi0.6_5.3.1-2ubuntu2.1_amd64.deb 20714 MD5Sum:18e457ca6629c3a0863994a976f93973 -'http://us.archive.ubuntu.com/ubuntu/pool/main/b/build-essential/build-essential_12.1ubuntu2_amd64.deb' build-essential_12.1ubuntu2_amd64.deb 4758 MD5Sum:731c3a328f87a14bf4f887ceffc51241 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ca-certificates-java/ca-certificates-java_20160321_all.deb' ca-certificates-java_20160321_all.deb 12862 MD5Sum:fcb5fd121a45e7e49b85e87fc038d6d5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ceph/librados2_10.2.3-0ubuntu0.16.04.2_amd64.deb' librados2_10.2.3-0ubuntu0.16.04.2_amd64.deb 1638302 MD5Sum:f21f3f352c4df08bd954ad79bf00b5da -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ceph/librbd1_10.2.3-0ubuntu0.16.04.2_amd64.deb' librbd1_10.2.3-0ubuntu0.16.04.2_amd64.deb 2134290 MD5Sum:5b5f00284e6ce1944791ecb293a59241 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloud-init/cloud-init_0.7.8-49-g9e904bb-0ubuntu1~16.04.1_all.deb' cloud-init_0.7.8-49-g9e904bb-0ubuntu1~16.04.1_all.deb 287546 MD5Sum:8b4654780848a7ace5f2a1b6b1e3a24b -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloud-utils/cloud-guest-utils_0.27-0ubuntu24_all.deb' cloud-guest-utils_0.27-0ubuntu24_all.deb 15164 MD5Sum:8b08dbc4a576e942fe4acdd9f4f51aca -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cmake/cmake_3.5.1-1ubuntu3_amd64.deb' cmake_3.5.1-1ubuntu3_amd64.deb 2622910 MD5Sum:7acd303ef63b289d67af7e36d35f537b -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cmake/cmake-data_3.5.1-1ubuntu3_all.deb' cmake-data_3.5.1-1ubuntu3_all.deb 1120628 MD5Sum:0a77d4e596c4d0e7c6ca6aa58b4b337e -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/configobj/python3-configobj_5.0.6-2_all.deb' python3-configobj_5.0.6-2_all.deb 34200 MD5Sum:cbce754e3638c980fd63c384f1a163a8 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cpu-checker/cpu-checker_0.7-0ubuntu7_amd64.deb' cpu-checker_0.7-0ubuntu7_amd64.deb 6862 MD5Sum:1a809fb421f82a1d5d148013bedcba59 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cups/libcups2_2.1.3-4_amd64.deb' libcups2_2.1.3-4_amd64.deb 196652 MD5Sum:3995ab409b0cb7c4440dfc90b54729d6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/curl/libcurl3_7.47.0-1ubuntu2.2_amd64.deb' libcurl3_7.47.0-1ubuntu2.2_amd64.deb 186008 MD5Sum:c8939f897b2b9f9543990531c3111c1b -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/curl/libcurl3-gnutls_7.47.0-1ubuntu2.2_amd64.deb' libcurl3-gnutls_7.47.0-1ubuntu2.2_amd64.deb 184138 MD5Sum:e1ae11ed9e545314ff650ab2d10df818 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.26.dfsg1-14build1_amd64.deb' libsasl2-2_2.1.26.dfsg1-14build1_amd64.deb 48708 MD5Sum:af15d7b37cbdfc4c413273c5225a67a6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cyrus-sasl2/libsasl2-modules_2.1.26.dfsg1-14build1_amd64.deb' libsasl2-modules_2.1.26.dfsg1-14build1_amd64.deb 47526 MD5Sum:8fda866e5a4adfe40a1ffc15fac77542 -'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cyrus-sasl2/libsasl2-modules-db_2.1.26.dfsg1-14build1_amd64.deb' libsasl2-modules-db_2.1.26.dfsg1-14build1_amd64.deb 14458 MD5Sum:08577afddd24ee2e6fce4ff455653081 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dbus/dbus_1.10.6-1ubuntu3.1_amd64.deb' dbus_1.10.6-1ubuntu3.1_amd64.deb 141352 MD5Sum:2bc40ff5d33a6d65993b125fe3af653c -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dbus/libdbus-1-3_1.10.6-1ubuntu3.1_amd64.deb' libdbus-1-3_1.10.6-1ubuntu3.1_amd64.deb 160756 MD5Sum:1deb247321c3a2007e178e7806d27318 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/device-tree-compiler/libfdt1_1.4.0+dfsg-2_amd64.deb' libfdt1_1.4.0+dfsg-2_amd64.deb 14136 MD5Sum:ea277dec72e4b0dc9ae18140dab6f147 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/distro-info-data/distro-info-data_0.28ubuntu0.2_all.deb' distro-info-data_0.28ubuntu0.2_all.deb 4006 MD5Sum:4497d860935a3fec1cea983b26082821 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dkms/dkms_2.2.0.3-2ubuntu11.3_all.deb' dkms_2.2.0.3-2ubuntu11.3_all.deb 66148 MD5Sum:e4f4d32677876e2792a7b152cd706a54 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg-dev_1.18.4ubuntu1.1_all.deb' dpkg-dev_1.18.4ubuntu1.1_all.deb 584114 MD5Sum:8e732fd2f0eb2141b9fa5efa33891858 -'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/libdpkg-perl_1.18.4ubuntu1.1_all.deb' libdpkg-perl_1.18.4ubuntu1.1_all.deb 195494 MD5Sum:ef90a84e0cbdc08dbf664d3367ba0fc4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/e/expat/libexpat1-dev_2.1.0-7ubuntu0.16.04.2_amd64.deb' libexpat1-dev_2.1.0-7ubuntu0.16.04.2_amd64.deb 115328 MD5Sum:df5d013eec845ea323df40c64e3ac2e6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/fakeroot_1.20.2-1ubuntu1_amd64.deb' fakeroot_1.20.2-1ubuntu1_amd64.deb 61784 MD5Sum:b153b1ed316419be55f3f575c092e73b -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/libfakeroot_1.20.2-1ubuntu1_amd64.deb' libfakeroot_1.20.2-1ubuntu1_amd64.deb 25510 MD5Sum:e3c90aa7376ae3a3e966d1688b9dab70 -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/flac/libflac8_1.3.1-4_amd64.deb' libflac8_1.3.1-4_amd64.deb 210396 MD5Sum:c0c0306a333d443f35c866bcf5e05c3a -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fontconfig/fontconfig-config_2.11.94-0ubuntu1.1_all.deb' fontconfig-config_2.11.94-0ubuntu1.1_all.deb 49934 MD5Sum:d8ee5cb98a73e9fd84f0c21b7f00728f -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fontconfig/libfontconfig1_2.11.94-0ubuntu1.1_amd64.deb' libfontconfig1_2.11.94-0ubuntu1.1_amd64.deb 131248 MD5Sum:e1d3510a190b0910720a7ae597ce53ea -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fonts-dejavu/fonts-dejavu-core_2.35-1_all.deb' fonts-dejavu-core_2.35-1_all.deb 1038624 MD5Sum:d3c6235a85d2646078f1b82ab257ef33 -'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fuse/libfuse2_2.9.4-1ubuntu3.1_amd64.deb' libfuse2_2.9.4-1ubuntu3.1_amd64.deb 89908 MD5Sum:2bdd7633ce8e2d8b9978756416772991 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/cpp-5_5.4.0-6ubuntu1~16.04.4_amd64.deb' cpp-5_5.4.0-6ubuntu1~16.04.4_amd64.deb 7653108 MD5Sum:95c5a34a437e2fd3fac60c3b911c73f4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/g++-5_5.4.0-6ubuntu1~16.04.4_amd64.deb' g++-5_5.4.0-6ubuntu1~16.04.4_amd64.deb 8299854 MD5Sum:218ba077dc7a555055446919bc51545a -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/gcc-5_5.4.0-6ubuntu1~16.04.4_amd64.deb' gcc-5_5.4.0-6ubuntu1~16.04.4_amd64.deb 8577362 MD5Sum:1f98521f896a3c1c528f5953a9063ac1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/gcc-5-base_5.4.0-6ubuntu1~16.04.4_amd64.deb' gcc-5-base_5.4.0-6ubuntu1~16.04.4_amd64.deb 16770 MD5Sum:376937778a114defb614754043c40977 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libasan2_5.4.0-6ubuntu1~16.04.4_amd64.deb' libasan2_5.4.0-6ubuntu1~16.04.4_amd64.deb 264364 MD5Sum:bf412ced66f2fae39b50c5f74f0cbd5d -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libatomic1_5.4.0-6ubuntu1~16.04.4_amd64.deb' libatomic1_5.4.0-6ubuntu1~16.04.4_amd64.deb 8912 MD5Sum:05f0d545dce15b8e9d2388b3709ad753 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libcc1-0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libcc1-0_5.4.0-6ubuntu1~16.04.4_amd64.deb 38792 MD5Sum:1d2578c6168349fb265ea244cb7800b9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libcilkrts5_5.4.0-6ubuntu1~16.04.4_amd64.deb' libcilkrts5_5.4.0-6ubuntu1~16.04.4_amd64.deb 40088 MD5Sum:e2cdd94f50eb96b68b1844f1cd148687 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libgcc-5-dev_5.4.0-6ubuntu1~16.04.4_amd64.deb' libgcc-5-dev_5.4.0-6ubuntu1~16.04.4_amd64.deb 2236718 MD5Sum:92c3c2d39dcbb870745c4f75e7d2a658 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libgomp1_5.4.0-6ubuntu1~16.04.4_amd64.deb' libgomp1_5.4.0-6ubuntu1~16.04.4_amd64.deb 55046 MD5Sum:e4e5c6228e730d9403a20b6f9c59d314 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libitm1_5.4.0-6ubuntu1~16.04.4_amd64.deb' libitm1_5.4.0-6ubuntu1~16.04.4_amd64.deb 27420 MD5Sum:106531f1a3a213f8e61df014d8e64046 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/liblsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb' liblsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb 104930 MD5Sum:64baa9c8945b3adcac86b3e08cc64e2b -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libmpx0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libmpx0_5.4.0-6ubuntu1~16.04.4_amd64.deb 9766 MD5Sum:0a654c0c2e205d04c2e222d0a68ab3d2 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libquadmath0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libquadmath0_5.4.0-6ubuntu1~16.04.4_amd64.deb 131214 MD5Sum:e212664529333fb7e2db1afc8f6c50b2 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++-5-dev_5.4.0-6ubuntu1~16.04.4_amd64.deb' libstdc++-5-dev_5.4.0-6ubuntu1~16.04.4_amd64.deb 1425994 MD5Sum:328ff483c56502b1d1ebb2f30b269350 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.4_amd64.deb' libstdc++6_5.4.0-6ubuntu1~16.04.4_amd64.deb 393398 MD5Sum:17eff9bc4d304ca36f2f1633be482654 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libtsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libtsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb 243674 MD5Sum:73f6474b928dc0038c94f171890c6386 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libubsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libubsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb 95334 MD5Sum:01552deb86cb21a84f5aea05038a1290 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/cpp_5.3.1-1ubuntu1_amd64.deb' cpp_4%3a5.3.1-1ubuntu1_amd64.deb 27662 MD5Sum:4c291e4aaf6406f61e3188d526479d51 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/g++_5.3.1-1ubuntu1_amd64.deb' g++_4%3a5.3.1-1ubuntu1_amd64.deb 1504 MD5Sum:0c03d113ff00ebc960f294420e60855b -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/gcc_5.3.1-1ubuntu1_amd64.deb' gcc_4%3a5.3.1-1ubuntu1_amd64.deb 5244 MD5Sum:df1516b203a66a86a728eab7a4c349e8 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gdbm/libgdbm3_1.8.3-13.1_amd64.deb' libgdbm3_1.8.3-13.1_amd64.deb 16926 MD5Sum:b2001800d7c61d4b0b12b077a0af2b5a -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gdisk/gdisk_1.0.1-1build1_amd64.deb' gdisk_1.0.1-1build1_amd64.deb 194230 MD5Sum:24e876aa3c2e94e39c17a4551f5d8514 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/git/git_2.7.4-0ubuntu1_amd64.deb' git_1%3a2.7.4-0ubuntu1_amd64.deb 3006120 MD5Sum:0412535c34d3f900629e9409ad73aead -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/git/git-man_2.7.4-0ubuntu1_all.deb' git-man_1%3a2.7.4-0ubuntu1_all.deb 734758 MD5Sum:0c00ac0f6cc7cc5b1b17f2e30ad44342 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc6_2.23-0ubuntu5_amd64.deb' libc6_2.23-0ubuntu5_amd64.deb 2588598 MD5Sum:292e22f0016ee08ba9fd9fb1f97cdac6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc6-dev_2.23-0ubuntu5_amd64.deb' libc6-dev_2.23-0ubuntu5_amd64.deb 2078296 MD5Sum:5fffcafed356b69afe7aec1df6236326 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc-bin_2.23-0ubuntu5_amd64.deb' libc-bin_2.23-0ubuntu5_amd64.deb 637918 MD5Sum:76b422608cba8e40d4366133c12be582 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc-dev-bin_2.23-0ubuntu5_amd64.deb' libc-dev-bin_2.23-0ubuntu5_amd64.deb 68670 MD5Sum:74584e34dda156669150288f9e5b3416 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/locales_2.23-0ubuntu5_all.deb' locales_2.23-0ubuntu5_all.deb 3214550 MD5Sum:17eda41684dcdc316dbcc407eab5f7a4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/multiarch-support_2.23-0ubuntu5_amd64.deb' multiarch-support_2.23-0ubuntu5_amd64.deb 6832 MD5Sum:9483e4f0d59ba515b72af0712c25b8f7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnupg/gnupg_1.4.20-1ubuntu3.1_amd64.deb' gnupg_1.4.20-1ubuntu3.1_amd64.deb 625938 MD5Sum:955b23eb62539452a8aa37e34e6f77c1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnupg/gpgv_1.4.20-1ubuntu3.1_amd64.deb' gpgv_1.4.20-1ubuntu3.1_amd64.deb 165264 MD5Sum:1debba9f668b7dcdca878d1e0e25c98a -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/groff/groff-base_1.22.3-7_amd64.deb' groff-base_1.22.3-7_amd64.deb 1150932 MD5Sum:7afb23ed2960cd67ab3196f29b9ff7e2 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub2-common_2.02~beta2-36ubuntu3.2_amd64.deb' grub2-common_2.02~beta2-36ubuntu3.2_amd64.deb 510912 MD5Sum:634e13acd2c8cab54b01e84b5e254845 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-common_2.02~beta2-36ubuntu3.2_amd64.deb' grub-common_2.02~beta2-36ubuntu3.2_amd64.deb 1706552 MD5Sum:7899a24a07f8b62e08a455bdab510c47 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-pc_2.02~beta2-36ubuntu3.2_amd64.deb' grub-pc_2.02~beta2-36ubuntu3.2_amd64.deb 197080 MD5Sum:5d4cdb8542ad3e63302698a075e5e959 -'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-pc-bin_2.02~beta2-36ubuntu3.2_amd64.deb' grub-pc-bin_2.02~beta2-36ubuntu3.2_amd64.deb 883966 MD5Sum:9bb93b3374a6ad20419396c488cbf5f9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libasn1-8-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libasn1-8-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 174366 MD5Sum:42aa97710227f6c372d232799fde6790 -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libgssapi3-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libgssapi3-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 96084 MD5Sum:0c9467b00d258e3175addbb5a16fdc72 -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libhcrypto4-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libhcrypto4-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 84938 MD5Sum:d6337d57fa1dda2c877a9f1c163ba0dd -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libheimbase1-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libheimbase1-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 29228 MD5Sum:15a7c7d180f14253f46d5e56409a0ffb -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libheimntlm0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libheimntlm0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 15090 MD5Sum:6f7a32beb2a3a04181c05efe940df1ee -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libhx509-5-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libhx509-5-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 107192 MD5Sum:b2b294bd3d2226f10c69058900323876 -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libkrb5-26-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libkrb5-26-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 202156 MD5Sum:000a329b39ae158d0ec280957741b14d -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libroken18-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libroken18-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 41190 MD5Sum:58c4093551f88ccca3c6c8a11d5e2357 -'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libwind0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libwind0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 48180 MD5Sum:7e368713a6d03afb23a8f956a16b9ba7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/ifupdown/ifupdown_0.8.10ubuntu1.1_amd64.deb' ifupdown_0.8.10ubuntu1.1_amd64.deb 54916 MD5Sum:d013023982a1e01067d9ef9e02a327a3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools_0.122ubuntu8.5_all.deb' initramfs-tools_0.122ubuntu8.5_all.deb 8618 MD5Sum:6f5cdff02741b119d8033165749b812e -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools-bin_0.122ubuntu8.5_amd64.deb' initramfs-tools-bin_0.122ubuntu8.5_amd64.deb 9334 MD5Sum:c4f25ed3f10f6d234fc4f9b4e2556619 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools-core_0.122ubuntu8.5_all.deb' initramfs-tools-core_0.122ubuntu8.5_all.deb 42160 MD5Sum:c2e8b352d17b48c9e9badd040b1ed3c9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/init-system-helpers/init_1.29ubuntu3_amd64.deb' init_1.29ubuntu3_amd64.deb 4716 MD5Sum:5967a023e146860d888297cfb5773017 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/init-system-helpers/init-system-helpers_1.29ubuntu3_all.deb' init-system-helpers_1.29ubuntu3_all.deb 32416 MD5Sum:9b8e5436025f8006ae7f309fd3687b60 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/iptables/iptables_1.6.0-2ubuntu3_amd64.deb' iptables_1.6.0-2ubuntu3_amd64.deb 265782 MD5Sum:706f191cbb20bff7c7a9a0fc01a78c25 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/ipxe/ipxe-qemu_1.0.0+git-20150424.a25a16d-1ubuntu1_all.deb' ipxe-qemu_1.0.0+git-20150424.a25a16d-1ubuntu1_all.deb 717714 MD5Sum:01570467dacbe007f2d0fb76c30653a7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isc-dhcp/isc-dhcp-client_4.3.3-5ubuntu12.4_amd64.deb' isc-dhcp-client_4.3.3-5ubuntu12.4_amd64.deb 223488 MD5Sum:0213ed75d3f4c7f06226ee7b9a974d12 -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isc-dhcp/isc-dhcp-common_4.3.3-5ubuntu12.4_amd64.deb' isc-dhcp-common_4.3.3-5ubuntu12.4_amd64.deb 104488 MD5Sum:21948bd2241628b4d690e79c10515ecf -'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isl/libisl15_0.16.1-1_amd64.deb' libisl15_0.16.1-1_amd64.deb 524254 MD5Sum:eec42a28e5ed8a5eaaf6278b455176ed -'http://us.archive.ubuntu.com/ubuntu/pool/main/j/java-common/java-common_0.56ubuntu2_all.deb' java-common_0.56ubuntu2_all.deb 7742 MD5Sum:cef7383c2628cc09bccbf0777e4eac37 -'http://us.archive.ubuntu.com/ubuntu/pool/main/j/jinja2/python3-jinja2_2.8-1_all.deb' python3-jinja2_2.8-1_all.deb 102518 MD5Sum:2511385ccb261c47c7dc2479abb6848d -'http://us.archive.ubuntu.com/ubuntu/pool/main/k/kbd/kbd_1.15.5-1ubuntu5_amd64.deb' kbd_1.15.5-1ubuntu5_amd64.deb 183018 MD5Sum:4e77ee969276644f3bc9168bee7e3995 -'http://us.archive.ubuntu.com/ubuntu/pool/main/k/keyutils/keyutils_1.5.9-8ubuntu1_amd64.deb' keyutils_1.5.9-8ubuntu1_amd64.deb 47054 MD5Sum:c7a363bce61cc8fbfb2b252d7a98f0fa -'http://us.archive.ubuntu.com/ubuntu/pool/main/k/klibc/klibc-utils_2.0.4-8ubuntu1.16.04.2_amd64.deb' klibc-utils_2.0.4-8ubuntu1.16.04.2_amd64.deb 107498 MD5Sum:e07a76e70f2acfef7edf54b08be0a4a3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/k/klibc/libklibc_2.0.4-8ubuntu1.16.04.2_amd64.deb' libklibc_2.0.4-8ubuntu1.16.04.2_amd64.deb 41326 MD5Sum:b123c76c6d8f2f80a6247e5ce915dd48 -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libaio/libaio1_0.3.110-2_amd64.deb' libaio1_0.3.110-2_amd64.deb 6356 MD5Sum:2ed968780e68742f43eddebadf82ff67 -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-perl/libalgorithm-diff-perl_1.19.03-1_all.deb' libalgorithm-diff-perl_1.19.03-1_all.deb 47622 MD5Sum:3d6f7b46454ff0b8589904fc4f8dd602 -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-xs-perl/libalgorithm-diff-xs-perl_0.04-4build1_amd64.deb' libalgorithm-diff-xs-perl_0.04-4build1_amd64.deb 10998 MD5Sum:330e839dcd98097723870b28ba9a8810 -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-merge-perl/libalgorithm-merge-perl_0.08-3_all.deb' libalgorithm-merge-perl_0.08-3_all.deb 11992 MD5Sum:6b456963b6629af0514be1b8ccbaa7fc -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libarchive/libarchive13_3.1.2-11ubuntu0.16.04.2_amd64.deb' libarchive13_3.1.2-11ubuntu0.16.04.2_amd64.deb 261048 MD5Sum:6a111b16830af6af2a056b7b9aa1537d -'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libasyncns/libasyncns0_0.8-5build1_amd64.deb' libasyncns0_0.8-5build1_amd64.deb 12336 MD5Sum:dbb4957abb710a70453eac0e77fc797b -'http://us.archive.ubuntu.com/ubuntu/pool/main/libc/libcaca/libcaca0_0.99.beta19-2build2~gcc5.2_amd64.deb' libcaca0_0.99.beta19-2build2~gcc5.2_amd64.deb 202380 MD5Sum:b49a9b48694bf35e217fee1295dd14dd -'http://us.archive.ubuntu.com/ubuntu/pool/main/libc/libcacard/libcacard0_2.5.0-2_amd64.deb' libcacard0_1%3a2.5.0-2_amd64.deb 19666 MD5Sum:0d371aa9cdc23ac668bc6e2afa1c44f0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libeatmydata/eatmydata_105-3_all.deb' eatmydata_105-3_all.deb 5502 MD5Sum:bc5bc47ea615b69da0f5d3c090c74a91 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libeatmydata/libeatmydata1_105-3_amd64.deb' libeatmydata1_105-3_amd64.deb 7280 MD5Sum:1f39d8cff52be865527547c09fc772db -'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/liberror-perl/liberror-perl_0.17-1.2_all.deb' liberror-perl_0.17-1.2_all.deb 19594 MD5Sum:bd1a8035bbfae2cd7d718f54fd93e0d5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libevent/libevent-2.0-5_2.0.21-stable-2_amd64.deb' libevent-2.0-5_2.0.21-stable-2_amd64.deb 112550 MD5Sum:071d5951d910147ea84d0d024bee13ce -'http://us.archive.ubuntu.com/ubuntu/pool/main/libf/libfile-fcntllock-perl/libfile-fcntllock-perl_0.22-3_amd64.deb' libfile-fcntllock-perl_0.22-3_amd64.deb 32002 MD5Sum:26476d54bf4677cc993c8cd9a7dbaeca -'http://us.archive.ubuntu.com/ubuntu/pool/main/libg/libgcrypt20/libgcrypt20_1.6.5-2ubuntu0.2_amd64.deb' libgcrypt20_1.6.5-2ubuntu0.2_amd64.deb 336194 MD5Sum:ebe89b8db7294a6dc2ff9995a7d30060 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libi/libidn/libidn11_1.32-3ubuntu1.1_amd64.deb' libidn11_1.32-3ubuntu1.1_amd64.deb 45552 MD5Sum:74c4e3f65c05e61596efe2ef46941009 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libi/libiscsi/libiscsi2_1.12.0-2_amd64.deb' libiscsi2_1.12.0-2_amd64.deb 51550 MD5Sum:6c8f4a397968e478e9567785bba4283e -'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg8-empty/libjpeg8_8c-2ubuntu8_amd64.deb' libjpeg8_8c-2ubuntu8_amd64.deb 2194 MD5Sum:e0f16286dd787b951ffa953987fdf6a7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg-turbo/libjpeg-turbo8_1.4.2-0ubuntu3_amd64.deb' libjpeg-turbo8_1.4.2-0ubuntu3_amd64.deb 110656 MD5Sum:8e505d67491b22a9d38be353654b3bc3 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.2-1_amd64.deb' libjsoncpp1_1.7.2-1_amd64.deb 73018 MD5Sum:f6eb9a2a804b8a9e7ee4b0a0daeb732b -'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnfnetlink/libnfnetlink0_1.0.1-3_amd64.deb' libnfnetlink0_1.0.1-3_amd64.deb 13262 MD5Sum:914d0640e09dd02057d0fd09f3da0eb5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnfsidmap/libnfsidmap2_0.25-5_amd64.deb' libnfsidmap2_0.25-5_amd64.deb 32182 MD5Sum:5e06543f26481fa549a1e017eec4ef36 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libo/libogg/libogg0_1.3.2-1_amd64.deb' libogg0_1.3.2-1_amd64.deb 17192 MD5Sum:55dd9b6982d66d6b168aa18fb3f90d2f -'http://us.archive.ubuntu.com/ubuntu/pool/main/libp/libpcap/libpcap0.8_1.7.4-2_amd64.deb' libpcap0.8_1.7.4-2_amd64.deb 116794 MD5Sum:6b4372b0840fada16f16ed4d97f32146 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libp/libpcap/libpcap0.8-dev_1.7.4-2_amd64.deb' libpcap0.8-dev_1.7.4-2_amd64.deb 212414 MD5Sum:44df3da8707c2b5cd1f3f0bb68a005a6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libp/libpcap/libpcap-dev_1.7.4-2_all.deb' libpcap-dev_1.7.4-2_all.deb 3394 MD5Sum:df89b21ddc14397fccb0a9e5e6a3542c -'http://us.archive.ubuntu.com/ubuntu/pool/main/libs/libsdl1.2/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb' libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb 167606 MD5Sum:52418fa1951b7edff3aecc67821f5786 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libs/libsndfile/libsndfile1_1.0.25-10_amd64.deb' libsndfile1_1.0.25-10_amd64.deb 137498 MD5Sum:1218c82cf611a5e4ff9919b91130c21e -'http://us.archive.ubuntu.com/ubuntu/pool/main/libt/libtirpc/libtirpc1_0.2.5-1_amd64.deb' libtirpc1_0.2.5-1_amd64.deb 75624 MD5Sum:bc4fb6407a0636517ce6670fd3ac2c40 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbis0a_1.3.5-3_amd64.deb' libvorbis0a_1.3.5-3_amd64.deb 86776 MD5Sum:248a92f34c15bfc3fff460186eac1358 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbisenc2_1.3.5-3_amd64.deb' libvorbisenc2_1.3.5-3_amd64.deb 70678 MD5Sum:62b0f630a03291eff71de6f844746721 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxi/libxi6_1.7.6-1_amd64.deb' libxi6_2%3a1.7.6-1_amd64.deb 28572 MD5Sum:2ad504b68a0a7c3f987307166de56a3a -'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxrender/libxrender1_0.9.9-0ubuntu1_amd64.deb' libxrender1_1%3a0.9.9-0ubuntu1_amd64.deb 18482 MD5Sum:124d535fd56229469116dfd6e47fe406 -'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxtst/libxtst6_1.2.2-1_amd64.deb' libxtst6_2%3a1.2.2-1_amd64.deb 14086 MD5Sum:2594435dcd76d6eec2ff3fb68a3d4e9d -'http://us.archive.ubuntu.com/ubuntu/pool/main/liby/libyaml/libyaml-0-2_0.1.6-3_amd64.deb' libyaml-0-2_0.1.6-3_amd64.deb 47596 MD5Sum:d5e5f5f176ebfe25ccb22965431bfe38 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/language-selector/language-selector-common_0.165.4_all.deb' language-selector-common_0.165.4_all.deb 213586 MD5Sum:b020f997ca40682c071d7b0f5c44062e -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/lcms2/liblcms2-2_2.6-3ubuntu2_amd64.deb' liblcms2-2_2.6-3ubuntu2_amd64.deb 136966 MD5Sum:425ab20e484e500aa2d48a281cb98d2c -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/less/less_481-2.1ubuntu0.1_amd64.deb' less_481-2.1ubuntu0.1_amd64.deb 109538 MD5Sum:ae43696453da4a56d9db1215e95e8302 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-firmware/linux-firmware_1.157.6_all.deb' linux-firmware_1.157.6_all.deb 37576144 MD5Sum:9cb1f546fbbdd0fec8c7e271004ddbe5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-headers-4.4.0-53_4.4.0-53.74_all.deb' linux-headers-4.4.0-53_4.4.0-53.74_all.deb 9953102 MD5Sum:8d94054f4bb28c3be51d0c2b52c56408 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-headers-4.4.0-53-generic_4.4.0-53.74_amd64.deb' linux-headers-4.4.0-53-generic_4.4.0-53.74_amd64.deb 781760 MD5Sum:b7ce620a5a8b0d79de4669279f04e303 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-image-4.4.0-53-generic_4.4.0-53.74_amd64.deb' linux-image-4.4.0-53-generic_4.4.0-53.74_amd64.deb 19190844 MD5Sum:7aad61a59a178f4c0812c5459abe4f47 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-image-extra-4.4.0-53-generic_4.4.0-53.74_amd64.deb' linux-image-extra-4.4.0-53-generic_4.4.0-53.74_amd64.deb 38633266 MD5Sum:5930cc8aa3cb484fd4c1ebec74bd5704 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-libc-dev_4.4.0-53.74_amd64.deb' linux-libc-dev_4.4.0-53.74_amd64.deb 835118 MD5Sum:913df1845e382245e4e3c0b2d57ba835 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta/linux-generic_4.4.0.53.56_amd64.deb' linux-generic_4.4.0.53.56_amd64.deb 1786 MD5Sum:3546bd89f663caacc4e4fd32c4b4b676 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta/linux-headers-generic_4.4.0.53.56_amd64.deb' linux-headers-generic_4.4.0.53.56_amd64.deb 2274 MD5Sum:eb3f0ecfce280f8d04c400367489aa08 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta/linux-image-generic_4.4.0.53.56_amd64.deb' linux-image-generic_4.4.0.53.56_amd64.deb 2302 MD5Sum:5310fef65439b289519f69ef3161ab97 -'http://us.archive.ubuntu.com/ubuntu/pool/main/l/lzo2/liblzo2-2_2.08-1.2_amd64.deb' liblzo2-2_2.08-1.2_amd64.deb 48716 MD5Sum:a42f8dbd37e7aacf1889bd47a8dcf9aa -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/make-dfsg/make_4.1-6_amd64.deb' make_4.1-6_amd64.deb 150924 MD5Sum:a2c33fce65c313f2d9be0e55166fc3f5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/manpages/manpages_4.04-2_all.deb' manpages_4.04-2_all.deb 1086712 MD5Sum:bb93c041e490ee0b6c2fef876dddf502 -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/manpages/manpages-dev_4.04-2_all.deb' manpages-dev_4.04-2_all.deb 2047608 MD5Sum:fea47c59fcc997aeab05238ecf9c5aba -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/markupsafe/python3-markupsafe_0.23-2build2_amd64.deb' python3-markupsafe_0.23-2build2_amd64.deb 16120 MD5Sum:de4d087f2d9db48351efd1fe861b21be -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/mpclib3/libmpc3_1.0.3-1_amd64.deb' libmpc3_1.0.3-1_amd64.deb 39676 MD5Sum:7892c51e73d8c5a5c16c1f2e8b93faa1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/mpfr4/libmpfr4_3.1.4-1_amd64.deb' libmpfr4_3.1.4-1_amd64.deb 190628 MD5Sum:5e8b331bd179e68edf5734a8b11306b2 -'http://us.archive.ubuntu.com/ubuntu/pool/main/m/msr-tools/msr-tools_1.3-2_amd64.deb' msr-tools_1.3-2_amd64.deb 10636 MD5Sum:5ffb50c3889cfccc901b940923d89e29 -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nfs-utils/nfs-common_1.2.8-9ubuntu12_amd64.deb' nfs-common_1%3a1.2.8-9ubuntu12_amd64.deb 184538 MD5Sum:811cfcf44b77a9f3c0dca443c4a6cdbf -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nspr/libnspr4_4.12-0ubuntu0.16.04.1_amd64.deb' libnspr4_2%3a4.12-0ubuntu0.16.04.1_amd64.deb 112400 MD5Sum:6136aa494e3970cef74a03a5cc2415bb -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3_3.23-0ubuntu0.16.04.1_amd64.deb' libnss3_2%3a3.23-0ubuntu0.16.04.1_amd64.deb 1144232 MD5Sum:05b78e390c150fd4eb65c8de47358036 -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3-nssdb_3.23-0ubuntu0.16.04.1_all.deb' libnss3-nssdb_2%3a3.23-0ubuntu0.16.04.1_all.deb 10584 MD5Sum:6e7f301f6169b123e8f9ce82d68451ae -'http://us.archive.ubuntu.com/ubuntu/pool/main/n/numactl/libnuma1_2.0.11-1ubuntu1_amd64.deb' libnuma1_2.0.11-1ubuntu1_amd64.deb 21016 MD5Sum:fb873c905ae23079608114661a32d1c7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openjdk-8/openjdk-8-jdk-headless_8u111-b14-2ubuntu0.16.04.2_amd64.deb' openjdk-8-jdk-headless_8u111-b14-2ubuntu0.16.04.2_amd64.deb 8166930 MD5Sum:95abce7371d1f3eda3584f6909e85f18 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openjdk-8/openjdk-8-jre-headless_8u111-b14-2ubuntu0.16.04.2_amd64.deb' openjdk-8-jre-headless_8u111-b14-2ubuntu0.16.04.2_amd64.deb 26886140 MD5Sum:4f3d16222254577160afce4cd333db19 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openldap/libldap-2.4-2_2.4.42+dfsg-2ubuntu3.1_amd64.deb' libldap-2.4-2_2.4.42+dfsg-2ubuntu3.1_amd64.deb 160630 MD5Sum:bfb7d8edf8289d8f01742469420efe37 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-client_7.2p2-4ubuntu2.1_amd64.deb' openssh-client_1%3a7.2p2-4ubuntu2.1_amd64.deb 587050 MD5Sum:55c7b2f2e9e18fbd70ce9f042bd99261 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-server_7.2p2-4ubuntu2.1_amd64.deb' openssh-server_1%3a7.2p2-4ubuntu2.1_amd64.deb 337896 MD5Sum:c2c16d323dbb288f745b7537c327d206 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-sftp-server_7.2p2-4ubuntu2.1_amd64.deb' openssh-sftp-server_1%3a7.2p2-4ubuntu2.1_amd64.deb 38762 MD5Sum:952e3bb32e10e130a090fa057dc408a6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.0.0_1.0.2g-1ubuntu4.5_amd64.deb' libssl1.0.0_1.0.2g-1ubuntu4.5_amd64.deb 1081760 MD5Sum:43fd613e133e35e98333ebceae7184ff -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_1.0.2g-1ubuntu4.5_amd64.deb' openssl_1.0.2g-1ubuntu4.5_amd64.deb 491434 MD5Sum:cff1a42acbf034afde850269791440af -'http://us.archive.ubuntu.com/ubuntu/pool/main/o/opus/libopus0_1.1.2-1ubuntu1_amd64.deb' libopus0_1.1.2-1ubuntu1_amd64.deb 159200 MD5Sum:b8f45b2da56ac6d1a5a64769d2232e2c -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/p11-kit/libp11-kit0_0.23.2-5~ubuntu16.04.1_amd64.deb' libp11-kit0_0.23.2-5~ubuntu16.04.1_amd64.deb 105478 MD5Sum:b7eac686f16419708424463a5abcd859 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/patch/patch_2.7.5-1_amd64.deb' patch_2.7.5-1_amd64.deb 90382 MD5Sum:0c03555b50fc094f942a938e9efb33d8 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pcsc-lite/libpcsclite1_1.8.14-1ubuntu1_amd64.deb' libpcsclite1_1.8.14-1ubuntu1_amd64.deb 21384 MD5Sum:67383a357c969292fa13d5ca85fc1737 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/libperl5.22_5.22.1-9_amd64.deb' libperl5.22_5.22.1-9_amd64.deb 3370548 MD5Sum:37c5a3fd13de2e1fbe0568aceb4ff043 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl_5.22.1-9_amd64.deb' perl_5.22.1-9_amd64.deb 237264 MD5Sum:a4b787e5cf0a032822bc486ace90cdad -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl-modules-5.22_5.22.1-9_all.deb' perl-modules-5.22_5.22.1-9_all.deb 2640598 MD5Sum:71fb658af2eeaedbe87494cf511a0c92 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pixman/libpixman-1-0_0.33.6-1_amd64.deb' libpixman-1-0_0.33.6-1_amd64.deb 231222 MD5Sum:2d60906f5c3e3a3548490b1c621d1392 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/prettytable/python3-prettytable_0.7.2-3_all.deb' python3-prettytable_0.7.2-3_all.deb 19730 MD5Sum:958069d49fc751b73d945ac2e5adec4f -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/procps/libprocps4_3.3.10-4ubuntu2.3_amd64.deb' libprocps4_2%3a3.3.10-4ubuntu2.3_amd64.deb 32822 MD5Sum:6617b2996960aea83ff439d97948d4cf -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/procps/procps_3.3.10-4ubuntu2.3_amd64.deb' procps_2%3a3.3.10-4ubuntu2.3_amd64.deb 221914 MD5Sum:e16926cbf97117696f1f44789daf3da8 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pulseaudio/libpulse0_8.0-0ubuntu3.1_amd64.deb' libpulse0_1%3a8.0-0ubuntu3.1_amd64.deb 248194 MD5Sum:04da1888132c241682bddcce35ed1e77 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyasn1/python3-pyasn1_0.1.9-1_all.deb' python3-pyasn1_0.1.9-1_all.deb 28132 MD5Sum:aea3d0df93c568bda4817c3c3910ef08 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pycurl/python3-pycurl_7.43.0-1ubuntu1_amd64.deb' python3-pycurl_7.43.0-1ubuntu1_amd64.deb 42334 MD5Sum:9384e6be4685d2cd06994a6ec23dbfac -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyjwt/python3-jwt_1.3.0-1_all.deb' python3-jwt_1.3.0-1_all.deb 15994 MD5Sum:aa1437e45418bb3371e1ab78fad20c8b -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyserial/python3-serial_3.0.1-1_all.deb' python3-serial_3.0.1-1_all.deb 54058 MD5Sum:4b9e76fe3f6cdaa0c8d8f5c6ee0e80b1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7_2.7.12-1ubuntu0~16.04.1_amd64.deb' libpython2.7_2.7.12-1ubuntu0~16.04.1_amd64.deb 1069728 MD5Sum:c355a8d8c72dee5f06c38aa637f7d5f6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-dev_2.7.12-1ubuntu0~16.04.1_amd64.deb' libpython2.7-dev_2.7.12-1ubuntu0~16.04.1_amd64.deb 27806182 MD5Sum:b1606b5ecd36ddbe756e1db9db371065 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-minimal_2.7.12-1ubuntu0~16.04.1_amd64.deb' libpython2.7-minimal_2.7.12-1ubuntu0~16.04.1_amd64.deb 339378 MD5Sum:16cd81bed67b58992ba326d225da74a9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-stdlib_2.7.12-1ubuntu0~16.04.1_amd64.deb' libpython2.7-stdlib_2.7.12-1ubuntu0~16.04.1_amd64.deb 1883824 MD5Sum:b51aee7135c4c40745afc1dd4fb87067 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7_2.7.12-1ubuntu0~16.04.1_amd64.deb' python2.7_2.7.12-1ubuntu0~16.04.1_amd64.deb 224330 MD5Sum:d9789fea16fda2a928f6ed39f3434f29 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7-dev_2.7.12-1ubuntu0~16.04.1_amd64.deb' python2.7-dev_2.7.12-1ubuntu0~16.04.1_amd64.deb 276176 MD5Sum:10628375ea7e36d5e8f7ba5273c7d9b1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7-minimal_2.7.12-1ubuntu0~16.04.1_amd64.deb' python2.7-minimal_2.7.12-1ubuntu0~16.04.1_amd64.deb 1295108 MD5Sum:60f2c79700931bcbd713556b6b5bda03 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/libpython3.5-minimal_3.5.2-2ubuntu0~16.04.1_amd64.deb' libpython3.5-minimal_3.5.2-2ubuntu0~16.04.1_amd64.deb 525856 MD5Sum:c787784b944542dee0b10465a45bac99 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/libpython3.5-stdlib_3.5.2-2ubuntu0~16.04.1_amd64.deb' libpython3.5-stdlib_3.5.2-2ubuntu0~16.04.1_amd64.deb 2129936 MD5Sum:500952aa58ef0e7f1f5f76b3a4037bdf -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/python3.5_3.5.2-2ubuntu0~16.04.1_amd64.deb' python3.5_3.5.2-2ubuntu0~16.04.1_amd64.deb 165176 MD5Sum:32b4fac2b139dfb340ddee92d78a7f59 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/python3.5-minimal_3.5.2-2ubuntu0~16.04.1_amd64.deb' python3.5-minimal_3.5.2-2ubuntu0~16.04.1_amd64.deb 1596870 MD5Sum:be7d322cad015751590ff585630c9244 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-cffi/python3-cffi-backend_1.5.2-1ubuntu1_amd64.deb' python3-cffi-backend_1.5.2-1ubuntu1_amd64.deb 59108 MD5Sum:c27b5b99bd74a557cbf97186a1266bf7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-cryptography/python3-cryptography_1.2.3-1ubuntu0.1_amd64.deb' python3-cryptography_1.2.3-1ubuntu0.1_amd64.deb 198704 MD5Sum:5a6c6aa52d81576eaffba6bf56fdcd2f -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-all-dev_2.7.11-1_amd64.deb' libpython-all-dev_2.7.11-1_amd64.deb 992 MD5Sum:5b8013073862e493f5c4f35e4fc12d62 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-dev_2.7.11-1_amd64.deb' libpython-dev_2.7.11-1_amd64.deb 7728 MD5Sum:27b5b2364088a2e4d49e00e0b50f75e1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-stdlib_2.7.11-1_amd64.deb' libpython-stdlib_2.7.11-1_amd64.deb 7656 MD5Sum:0632b48d11a10ea0b58adad543887f8a -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python_2.7.11-1_amd64.deb' python_2.7.11-1_amd64.deb 136892 MD5Sum:af686bd03f39be3f3cd865d38b44f5bf -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-all_2.7.11-1_amd64.deb' python-all_2.7.11-1_amd64.deb 978 MD5Sum:bf338b9d5360ec685bfbf9a323afcf1e -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-all-dev_2.7.11-1_amd64.deb' python-all-dev_2.7.11-1_amd64.deb 1000 MD5Sum:d68ff89d7581cd985bc0ff3c7c1c31a0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-dev_2.7.11-1_amd64.deb' python-dev_2.7.11-1_amd64.deb 1160 MD5Sum:a1dc029ad0f502f7d41fdb5639650b85 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-minimal_2.7.11-1_amd64.deb' python-minimal_2.7.11-1_amd64.deb 28156 MD5Sum:5f74584a69921aac52908a029aca4e04 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-idna/python3-idna_2.0-3_all.deb' python3-idna_2.0-3_all.deb 35084 MD5Sum:5a78ae4de7cc7e91a16badc125cf5225 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-json-patch/python3-jsonpatch_1.19-3_all.deb' python3-jsonpatch_1.19-3_all.deb 12416 MD5Sum:cb2596025e967af7ff27427842766833 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-json-pointer/python3-json-pointer_1.9-3_all.deb' python3-json-pointer_1.9-3_all.deb 7262 MD5Sum:1bde57c985279df596aed63775fd1ed5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-oauthlib/python3-oauthlib_1.0.3-1_all.deb' python3-oauthlib_1.0.3-1_all.deb 62486 MD5Sum:7c1f5bd6db8c0ce8c08dd4220ee548a6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-pkg-resources_20.7.0-1_all.deb' python-pkg-resources_20.7.0-1_all.deb 108428 MD5Sum:33fb00c7fd20b868b36407e0210cda2c -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-setuptools_20.7.0-1_all.deb' python-setuptools_20.7.0-1_all.deb 169084 MD5Sum:5f51f781ed0c8c027029cf58336b1858 -'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyyaml/python3-yaml_3.11-3build1_amd64.deb' python3-yaml_3.11-3build1_amd64.deb 95592 MD5Sum:1f9e9ba917bfc2ab4857bae73434c7a7 -'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-block-extra_2.5+dfsg-5ubuntu10.6_amd64.deb' qemu-block-extra_1%3a2.5+dfsg-5ubuntu10.6_amd64.deb 32770 MD5Sum:073e0430b15ef8bc093b5a4b99d36e6f -'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-common_2.5+dfsg-5ubuntu10.6_amd64.deb' qemu-system-common_1%3a2.5+dfsg-5ubuntu10.6_amd64.deb 281212 MD5Sum:96a52cc1b67600f120b2b468d59d23d6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-x86_2.5+dfsg-5ubuntu10.6_amd64.deb' qemu-system-x86_1%3a2.5+dfsg-5ubuntu10.6_amd64.deb 2758348 MD5Sum:0eeefc0245958be5dfe6dbec8c1e8516 -'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-utils_2.5+dfsg-5ubuntu10.6_amd64.deb' qemu-utils_1%3a2.5+dfsg-5ubuntu10.6_amd64.deb 577726 MD5Sum:533f6a19cd54df36e42a4a336bf29641 -'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rename/rename_0.20-4_all.deb' rename_0.20-4_all.deb 12010 MD5Sum:6cf1938ef51145a469ccef181a9304ce -'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rpcbind/rpcbind_0.2.3-0.2_amd64.deb' rpcbind_0.2.3-0.2_amd64.deb 40252 MD5Sum:52576ed752c0c2bb04db68576aecd827 -'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rsync/rsync_3.1.1-3ubuntu1_amd64.deb' rsync_3.1.1-3ubuntu1_amd64.deb 324680 MD5Sum:c856c6f0ced17498b62cd5222918e2e0 -'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d-1build1_amd64.deb' librtmp1_2.4+20151223.gitfa8646d-1build1_amd64.deb 53892 MD5Sum:8b0bf8b00890590f67fba42b8050de2d -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/seabios/seabios_1.8.2-1ubuntu1_all.deb' seabios_1.8.2-1ubuntu1_all.deb 112532 MD5Sum:4c2c2bf6aa6d8bd26f90aa21a4ac4e0f -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/sharutils/sharutils_4.15.2-1_amd64.deb' sharutils_1%3a4.15.2-1_amd64.deb 148320 MD5Sum:82eebb19d70fcb9fe029b7e34407bea9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/software-properties/python3-software-properties_0.96.20.5_all.deb' python3-software-properties_0.96.20.5_all.deb 19930 MD5Sum:206945cfc3112427758bbb0cc09fb691 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/software-properties/software-properties-common_0.96.20.5_all.deb' software-properties-common_0.96.20.5_all.deb 9432 MD5Sum:41eb5bb7bc3136f63b5ab9d1f0576370 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/spice/libspice-server1_0.12.6-4ubuntu0.1_amd64.deb' libspice-server1_0.12.6-4ubuntu0.1_amd64.deb 337930 MD5Sum:c9c1151a559f28da293d41e9df4262da -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/libstrongswan_5.3.5-1ubuntu3_amd64.deb' libstrongswan_5.3.5-1ubuntu3_amd64.deb 1389936 MD5Sum:35b18e264b9596ab99b4a1be3d04bc13 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/libstrongswan-standard-plugins_5.3.5-1ubuntu3_amd64.deb' libstrongswan-standard-plugins_5.3.5-1ubuntu3_amd64.deb 265898 MD5Sum:5a06dd0c30304a6c3cc1263ca3f15c3d -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan_5.3.5-1ubuntu3_all.deb' strongswan_5.3.5-1ubuntu3_all.deb 27042 MD5Sum:b6336f9bc594ab356d13fdcb8e56ce9f -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-charon_5.3.5-1ubuntu3_amd64.deb' strongswan-charon_5.3.5-1ubuntu3_amd64.deb 55514 MD5Sum:22a8d0cdba50b922ae9611c297820208 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-libcharon_5.3.5-1ubuntu3_amd64.deb' strongswan-libcharon_5.3.5-1ubuntu3_amd64.deb 1240762 MD5Sum:9d230aea890e695545a7508af56eac24 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-starter_5.3.5-1ubuntu3_amd64.deb' strongswan-starter_5.3.5-1ubuntu3_amd64.deb 742676 MD5Sum:a793db72f6f7bc37dc29393399b9bfd5 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/sudo/sudo_1.8.16-0ubuntu1.2_amd64.deb' sudo_1.8.16-0ubuntu1.2_amd64.deb 389432 MD5Sum:bebd286de1e01ef45e41786461e42cdc -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libsystemd0_229-4ubuntu13_amd64.deb' libsystemd0_229-4ubuntu13_amd64.deb 205086 MD5Sum:11d3738fc425d37a21a216e99c452fe1 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libudev1_229-4ubuntu13_amd64.deb' libudev1_229-4ubuntu13_amd64.deb 55122 MD5Sum:7bef145a33dc2c8e53e1a9428777ed9f -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/systemd_229-4ubuntu13_amd64.deb' systemd_229-4ubuntu13_amd64.deb 3614858 MD5Sum:926ce4027ae0b46805fe32431e35aeaa -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/systemd-sysv_229-4ubuntu13_amd64.deb' systemd-sysv_229-4ubuntu13_amd64.deb 12604 MD5Sum:bb2ee2ccb3c545dec9d428f05e02b1b4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/udev_229-4ubuntu13_amd64.deb' udev_229-4ubuntu13_amd64.deb 991212 MD5Sum:90494e5ab5269721ba83277cbcfd61a4 -'http://us.archive.ubuntu.com/ubuntu/pool/main/t/tar/tar_1.28-2.1ubuntu0.1_amd64.deb' tar_1.28-2.1ubuntu0.1_amd64.deb 208648 MD5Sum:984affa3d0dbbe9bbb9d67b005f14a8a -'http://us.archive.ubuntu.com/ubuntu/pool/main/t/tzdata/tzdata_2016j-0ubuntu0.16.04_all.deb' tzdata_2016j-0ubuntu0.16.04_all.deb 168038 MD5Sum:100d5596702ee4c8915efa455ced63c9 -'http://us.archive.ubuntu.com/ubuntu/pool/main/u/unattended-upgrades/unattended-upgrades_0.90ubuntu0.2_all.deb' unattended-upgrades_0.90ubuntu0.2_all.deb 31704 MD5Sum:1d06ac8bfff20729708f7ef0e884a3eb -'http://us.archive.ubuntu.com/ubuntu/pool/main/u/unzip/unzip_6.0-20ubuntu1_amd64.deb' unzip_6.0-20ubuntu1_amd64.deb 158434 MD5Sum:059c9f15163425d4c5f818e2ad599597 -'http://us.archive.ubuntu.com/ubuntu/pool/main/u/usbredir/libusbredirparser1_0.7.1-1_amd64.deb' libusbredirparser1_0.7.1-1_amd64.deb 13612 MD5Sum:617c6126646b6b4d1e159b31a4a0dd28 -'http://us.archive.ubuntu.com/ubuntu/pool/main/v/vim/vim-common_7.4.1689-3ubuntu1.2_amd64.deb' vim-common_2%3a7.4.1689-3ubuntu1.2_amd64.deb 103242 MD5Sum:5669132132fc2ad18b884a79979b1507 -'http://us.archive.ubuntu.com/ubuntu/pool/main/v/vim/vim-tiny_7.4.1689-3ubuntu1.2_amd64.deb' vim-tiny_2%3a7.4.1689-3ubuntu1.2_amd64.deb 445488 MD5Sum:2853b25313fc1b51b8351783c4c0d073 -'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xen/libxen-4.6_4.6.0-1ubuntu4.2_amd64.deb' libxen-4.6_4.6.0-1ubuntu4.2_amd64.deb 344510 MD5Sum:5ca2669763f0de854ae0e967a22c2330 -'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xen/libxenstore3.0_4.6.0-1ubuntu4.2_amd64.deb' libxenstore3.0_4.6.0-1ubuntu4.2_amd64.deb 19658 MD5Sum:aa5c61be8faa0cd725d4bd0cc78fb35a -'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xorg/x11-common_7.7+13ubuntu3_all.deb' x11-common_1%3a7.7+13ubuntu3_all.deb 22390 MD5Sum:b0943f823b6f471e8c41ca66c2b5a2dd -'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xz-utils/xz-utils_5.1.1alpha+20120614-2ubuntu2_amd64.deb' xz-utils_5.1.1alpha+20120614-2ubuntu2_amd64.deb 78794 MD5Sum:195995c093404e3ee766d04ea3cdffe6 -'http://us.archive.ubuntu.com/ubuntu/pool/main/y/yajl/libyajl2_2.1.0-2_amd64.deb' libyajl2_2.1.0-2_amd64.deb 19638 MD5Sum:331f71d0965718605fe52fa178cef955 -'http://us.archive.ubuntu.com/ubuntu/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-2ubuntu4_amd64.deb' zlib1g-dev_1%3a1.2.8.dfsg-2ubuntu4_amd64.deb 167514 MD5Sum:da0bb3efa89c1b319490daa401c4f3e0 -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-pip/python-pip_8.1.1-2ubuntu0.4_all.deb' python-pip_8.1.1-2ubuntu0.4_all.deb 144288 MD5Sum:ca535f732af3f0c509514b7e5c859d3d -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-pip/python-pip-whl_8.1.1-2ubuntu0.4_all.deb' python-pip-whl_8.1.1-2ubuntu0.4_all.deb 1110472 MD5Sum:2671bdb380db5230ef41812d18062a8b -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/python3-virtualenv_15.0.1+ds-3ubuntu1_all.deb' python3-virtualenv_15.0.1+ds-3ubuntu1_all.deb 43216 MD5Sum:ad57f0d3553fbe5ca615b9316f065a15 -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/python-virtualenv_15.0.1+ds-3ubuntu1_all.deb' python-virtualenv_15.0.1+ds-3ubuntu1_all.deb 46560 MD5Sum:e572fe37557fe8121498f935af1bad6e -'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/virtualenv_15.0.1+ds-3ubuntu1_all.deb' virtualenv_15.0.1+ds-3ubuntu1_all.deb 4342 MD5Sum:9b46220c5218db4fee78a016ebd5b237 -'http://us.archive.ubuntu.com/ubuntu/pool/universe/w/wheel/python-wheel_0.29.0-1_all.deb' python-wheel_0.29.0-1_all.deb 48050 MD5Sum:cec5453c98565e6c57d446c45176f38b +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/accountsservice/accountsservice_0.6.40-2ubuntu11.3_amd64.deb' accountsservice_0.6.40-2ubuntu11.3_amd64.deb 56054 MD5Sum:b95cd60fcd9b2d0243c9075beb8d541b +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/accountsservice/libaccountsservice0_0.6.40-2ubuntu11.3_amd64.deb' libaccountsservice0_0.6.40-2ubuntu11.3_amd64.deb 68730 MD5Sum:68be2b361d99978d30dd900fda8775bf +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/acl/acl_2.2.52-3_amd64.deb' acl_2.2.52-3_amd64.deb 37960 MD5Sum:39c72a4a24b243236757759d679380bb +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2_1.1.0-0ubuntu1_amd64.deb' libasound2_1.1.0-0ubuntu1_amd64.deb 350112 MD5Sum:c7a5b1b0cfdd1d7f1a8f26bcac4701a3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2-data_1.1.0-0ubuntu1_all.deb' libasound2-data_1.1.0-0ubuntu1_all.deb 29438 MD5Sum:4cd49c6c84f451d11459c880236bb337 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apparmor/libapparmor1_2.10.95-0ubuntu2.5_amd64.deb' libapparmor1_2.10.95-0ubuntu2.5_amd64.deb 31568 MD5Sum:6368f1dd486380cbbd769547840ccc7e +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/apt_1.2.15ubuntu0.2_amd64.deb' apt_1.2.15ubuntu0.2_amd64.deb 1041600 MD5Sum:66383e6b0974ca78d853aa98b070c2fe +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/apt-utils_1.2.15ubuntu0.2_amd64.deb' apt-utils_1.2.15ubuntu0.2_amd64.deb 195706 MD5Sum:0d08e5553860606241afe237321f6250 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/libapt-inst2.0_1.2.15ubuntu0.2_amd64.deb' libapt-inst2.0_1.2.15ubuntu0.2_amd64.deb 55674 MD5Sum:2e41ba1f3686b1bbb2874101869d7e16 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/apt/libapt-pkg5.0_1.2.15ubuntu0.2_amd64.deb' libapt-pkg5.0_1.2.15ubuntu0.2_amd64.deb 702126 MD5Sum:69210976f9d7c86a0884e28a4bbb8cb3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-client3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb' libavahi-client3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb 25148 MD5Sum:e58d3b6a71e9da24b430f76f90f63f9d +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-common3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb' libavahi-common3_0.6.32~rc+dfsg-1ubuntu2_amd64.deb 21642 MD5Sum:9f4106c0918bf2b779e7d4e2158ef648 +'http://us.archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-common-data_0.6.32~rc+dfsg-1ubuntu2_amd64.deb' libavahi-common-data_0.6.32~rc+dfsg-1ubuntu2_amd64.deb 21706 MD5Sum:f7e6efc7b58036c6154be9b3f050845b +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/base-files/base-files_9.4ubuntu4.3_amd64.deb' base-files_9.4ubuntu4.3_amd64.deb 67704 MD5Sum:02d9491f26e50c8e54996e4a9960eaa3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libdns-export162_9.10.3.dfsg.P4-8ubuntu1.3_amd64.deb' libdns-export162_1%3a9.10.3.dfsg.P4-8ubuntu1.3_amd64.deb 665856 MD5Sum:961126ca37f53b734292ab300903a7b6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bind9/libisc-export160_9.10.3.dfsg.P4-8ubuntu1.3_amd64.deb' libisc-export160_1%3a9.10.3.dfsg.P4-8ubuntu1.3_amd64.deb 152124 MD5Sum:a36999040747b9c3ebf62b2e628e5344 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/binutils/binutils_2.26.1-1ubuntu1~16.04.3_amd64.deb' binutils_2.26.1-1ubuntu1~16.04.3_amd64.deb 2310310 MD5Sum:04b00c4b3ba1d86afbb679b63476d05a +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/blinker/python3-blinker_1.3.dfsg2-1build1_all.deb' python3-blinker_1.3.dfsg2-1build1_all.deb 12518 MD5Sum:ba0b5d380216ccb354cbc9a21e0929d5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bluez/libbluetooth3_5.37-0ubuntu5_amd64.deb' libbluetooth3_5.37-0ubuntu5_amd64.deb 61306 MD5Sum:c8a82247c33f550d76e9489de794533d +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-iostreams1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-iostreams1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 28954 MD5Sum:6f938f436adabb8e01cf4382f1d89876 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-random1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-random1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 11674 MD5Sum:22138508eb0106143b73c270141d1761 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-system1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-system1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 9146 MD5Sum:3dd69b1b4c2a64a4600cd781c38f3c6a +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/boost1.58/libboost-thread1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb' libboost-thread1.58.0_1.58.0+dfsg-5ubuntu3.1_amd64.deb 47010 MD5Sum:2c185c0d3e0ff3d424fbb077e78fe545 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/bridge-utils/bridge-utils_1.5-9ubuntu1_amd64.deb' bridge-utils_1.5-9ubuntu1_amd64.deb 28610 MD5Sum:a81ea7f42da2e7a6c32b866681897ad4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/brltty/libbrlapi0.6_5.3.1-2ubuntu2.1_amd64.deb' libbrlapi0.6_5.3.1-2ubuntu2.1_amd64.deb 20714 MD5Sum:18e457ca6629c3a0863994a976f93973 +'http://us.archive.ubuntu.com/ubuntu/pool/main/b/build-essential/build-essential_12.1ubuntu2_amd64.deb' build-essential_12.1ubuntu2_amd64.deb 4758 MD5Sum:731c3a328f87a14bf4f887ceffc51241 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ca-certificates-java/ca-certificates-java_20160321_all.deb' ca-certificates-java_20160321_all.deb 12862 MD5Sum:fcb5fd121a45e7e49b85e87fc038d6d5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ceph/librados2_10.2.3-0ubuntu0.16.04.2_amd64.deb' librados2_10.2.3-0ubuntu0.16.04.2_amd64.deb 1638302 MD5Sum:f21f3f352c4df08bd954ad79bf00b5da +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/ceph/librbd1_10.2.3-0ubuntu0.16.04.2_amd64.deb' librbd1_10.2.3-0ubuntu0.16.04.2_amd64.deb 2134290 MD5Sum:5b5f00284e6ce1944791ecb293a59241 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloud-init/cloud-init_0.7.8-49-g9e904bb-0ubuntu1~16.04.1_all.deb' cloud-init_0.7.8-49-g9e904bb-0ubuntu1~16.04.1_all.deb 287546 MD5Sum:8b4654780848a7ace5f2a1b6b1e3a24b +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cloud-utils/cloud-guest-utils_0.27-0ubuntu24_all.deb' cloud-guest-utils_0.27-0ubuntu24_all.deb 15164 MD5Sum:8b08dbc4a576e942fe4acdd9f4f51aca +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cmake/cmake_3.5.1-1ubuntu3_amd64.deb' cmake_3.5.1-1ubuntu3_amd64.deb 2622910 MD5Sum:7acd303ef63b289d67af7e36d35f537b +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cmake/cmake-data_3.5.1-1ubuntu3_all.deb' cmake-data_3.5.1-1ubuntu3_all.deb 1120628 MD5Sum:0a77d4e596c4d0e7c6ca6aa58b4b337e +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/configobj/python3-configobj_5.0.6-2_all.deb' python3-configobj_5.0.6-2_all.deb 34200 MD5Sum:cbce754e3638c980fd63c384f1a163a8 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cpu-checker/cpu-checker_0.7-0ubuntu7_amd64.deb' cpu-checker_0.7-0ubuntu7_amd64.deb 6862 MD5Sum:1a809fb421f82a1d5d148013bedcba59 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cups/libcups2_2.1.3-4_amd64.deb' libcups2_2.1.3-4_amd64.deb 196652 MD5Sum:3995ab409b0cb7c4440dfc90b54729d6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/curl/libcurl3_7.47.0-1ubuntu2.2_amd64.deb' libcurl3_7.47.0-1ubuntu2.2_amd64.deb 186008 MD5Sum:c8939f897b2b9f9543990531c3111c1b +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/curl/libcurl3-gnutls_7.47.0-1ubuntu2.2_amd64.deb' libcurl3-gnutls_7.47.0-1ubuntu2.2_amd64.deb 184138 MD5Sum:e1ae11ed9e545314ff650ab2d10df818 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cyrus-sasl2/libsasl2-2_2.1.26.dfsg1-14build1_amd64.deb' libsasl2-2_2.1.26.dfsg1-14build1_amd64.deb 48708 MD5Sum:af15d7b37cbdfc4c413273c5225a67a6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cyrus-sasl2/libsasl2-modules_2.1.26.dfsg1-14build1_amd64.deb' libsasl2-modules_2.1.26.dfsg1-14build1_amd64.deb 47526 MD5Sum:8fda866e5a4adfe40a1ffc15fac77542 +'http://us.archive.ubuntu.com/ubuntu/pool/main/c/cyrus-sasl2/libsasl2-modules-db_2.1.26.dfsg1-14build1_amd64.deb' libsasl2-modules-db_2.1.26.dfsg1-14build1_amd64.deb 14458 MD5Sum:08577afddd24ee2e6fce4ff455653081 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dbus/dbus_1.10.6-1ubuntu3.1_amd64.deb' dbus_1.10.6-1ubuntu3.1_amd64.deb 141352 MD5Sum:2bc40ff5d33a6d65993b125fe3af653c +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dbus/libdbus-1-3_1.10.6-1ubuntu3.1_amd64.deb' libdbus-1-3_1.10.6-1ubuntu3.1_amd64.deb 160756 MD5Sum:1deb247321c3a2007e178e7806d27318 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/device-tree-compiler/libfdt1_1.4.0+dfsg-2_amd64.deb' libfdt1_1.4.0+dfsg-2_amd64.deb 14136 MD5Sum:ea277dec72e4b0dc9ae18140dab6f147 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/distro-info-data/distro-info-data_0.28ubuntu0.2_all.deb' distro-info-data_0.28ubuntu0.2_all.deb 4006 MD5Sum:4497d860935a3fec1cea983b26082821 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dkms/dkms_2.2.0.3-2ubuntu11.3_all.deb' dkms_2.2.0.3-2ubuntu11.3_all.deb 66148 MD5Sum:e4f4d32677876e2792a7b152cd706a54 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/dpkg-dev_1.18.4ubuntu1.1_all.deb' dpkg-dev_1.18.4ubuntu1.1_all.deb 584114 MD5Sum:8e732fd2f0eb2141b9fa5efa33891858 +'http://us.archive.ubuntu.com/ubuntu/pool/main/d/dpkg/libdpkg-perl_1.18.4ubuntu1.1_all.deb' libdpkg-perl_1.18.4ubuntu1.1_all.deb 195494 MD5Sum:ef90a84e0cbdc08dbf664d3367ba0fc4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/e/expat/libexpat1-dev_2.1.0-7ubuntu0.16.04.2_amd64.deb' libexpat1-dev_2.1.0-7ubuntu0.16.04.2_amd64.deb 115328 MD5Sum:df5d013eec845ea323df40c64e3ac2e6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/fakeroot_1.20.2-1ubuntu1_amd64.deb' fakeroot_1.20.2-1ubuntu1_amd64.deb 61784 MD5Sum:b153b1ed316419be55f3f575c092e73b +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fakeroot/libfakeroot_1.20.2-1ubuntu1_amd64.deb' libfakeroot_1.20.2-1ubuntu1_amd64.deb 25510 MD5Sum:e3c90aa7376ae3a3e966d1688b9dab70 +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/flac/libflac8_1.3.1-4_amd64.deb' libflac8_1.3.1-4_amd64.deb 210396 MD5Sum:c0c0306a333d443f35c866bcf5e05c3a +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fontconfig/fontconfig-config_2.11.94-0ubuntu1.1_all.deb' fontconfig-config_2.11.94-0ubuntu1.1_all.deb 49934 MD5Sum:d8ee5cb98a73e9fd84f0c21b7f00728f +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fontconfig/libfontconfig1_2.11.94-0ubuntu1.1_amd64.deb' libfontconfig1_2.11.94-0ubuntu1.1_amd64.deb 131248 MD5Sum:e1d3510a190b0910720a7ae597ce53ea +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fonts-dejavu/fonts-dejavu-core_2.35-1_all.deb' fonts-dejavu-core_2.35-1_all.deb 1038624 MD5Sum:d3c6235a85d2646078f1b82ab257ef33 +'http://us.archive.ubuntu.com/ubuntu/pool/main/f/fuse/libfuse2_2.9.4-1ubuntu3.1_amd64.deb' libfuse2_2.9.4-1ubuntu3.1_amd64.deb 89908 MD5Sum:2bdd7633ce8e2d8b9978756416772991 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/cpp-5_5.4.0-6ubuntu1~16.04.4_amd64.deb' cpp-5_5.4.0-6ubuntu1~16.04.4_amd64.deb 7653108 MD5Sum:95c5a34a437e2fd3fac60c3b911c73f4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/g++-5_5.4.0-6ubuntu1~16.04.4_amd64.deb' g++-5_5.4.0-6ubuntu1~16.04.4_amd64.deb 8299854 MD5Sum:218ba077dc7a555055446919bc51545a +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/gcc-5_5.4.0-6ubuntu1~16.04.4_amd64.deb' gcc-5_5.4.0-6ubuntu1~16.04.4_amd64.deb 8577362 MD5Sum:1f98521f896a3c1c528f5953a9063ac1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/gcc-5-base_5.4.0-6ubuntu1~16.04.4_amd64.deb' gcc-5-base_5.4.0-6ubuntu1~16.04.4_amd64.deb 16770 MD5Sum:376937778a114defb614754043c40977 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libasan2_5.4.0-6ubuntu1~16.04.4_amd64.deb' libasan2_5.4.0-6ubuntu1~16.04.4_amd64.deb 264364 MD5Sum:bf412ced66f2fae39b50c5f74f0cbd5d +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libatomic1_5.4.0-6ubuntu1~16.04.4_amd64.deb' libatomic1_5.4.0-6ubuntu1~16.04.4_amd64.deb 8912 MD5Sum:05f0d545dce15b8e9d2388b3709ad753 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libcc1-0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libcc1-0_5.4.0-6ubuntu1~16.04.4_amd64.deb 38792 MD5Sum:1d2578c6168349fb265ea244cb7800b9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libcilkrts5_5.4.0-6ubuntu1~16.04.4_amd64.deb' libcilkrts5_5.4.0-6ubuntu1~16.04.4_amd64.deb 40088 MD5Sum:e2cdd94f50eb96b68b1844f1cd148687 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libgcc-5-dev_5.4.0-6ubuntu1~16.04.4_amd64.deb' libgcc-5-dev_5.4.0-6ubuntu1~16.04.4_amd64.deb 2236718 MD5Sum:92c3c2d39dcbb870745c4f75e7d2a658 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libgomp1_5.4.0-6ubuntu1~16.04.4_amd64.deb' libgomp1_5.4.0-6ubuntu1~16.04.4_amd64.deb 55046 MD5Sum:e4e5c6228e730d9403a20b6f9c59d314 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libitm1_5.4.0-6ubuntu1~16.04.4_amd64.deb' libitm1_5.4.0-6ubuntu1~16.04.4_amd64.deb 27420 MD5Sum:106531f1a3a213f8e61df014d8e64046 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/liblsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb' liblsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb 104930 MD5Sum:64baa9c8945b3adcac86b3e08cc64e2b +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libmpx0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libmpx0_5.4.0-6ubuntu1~16.04.4_amd64.deb 9766 MD5Sum:0a654c0c2e205d04c2e222d0a68ab3d2 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libquadmath0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libquadmath0_5.4.0-6ubuntu1~16.04.4_amd64.deb 131214 MD5Sum:e212664529333fb7e2db1afc8f6c50b2 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++-5-dev_5.4.0-6ubuntu1~16.04.4_amd64.deb' libstdc++-5-dev_5.4.0-6ubuntu1~16.04.4_amd64.deb 1425994 MD5Sum:328ff483c56502b1d1ebb2f30b269350 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libstdc++6_5.4.0-6ubuntu1~16.04.4_amd64.deb' libstdc++6_5.4.0-6ubuntu1~16.04.4_amd64.deb 393398 MD5Sum:17eff9bc4d304ca36f2f1633be482654 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libtsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libtsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb 243674 MD5Sum:73f6474b928dc0038c94f171890c6386 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-5/libubsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb' libubsan0_5.4.0-6ubuntu1~16.04.4_amd64.deb 95334 MD5Sum:01552deb86cb21a84f5aea05038a1290 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/cpp_5.3.1-1ubuntu1_amd64.deb' cpp_4%3a5.3.1-1ubuntu1_amd64.deb 27662 MD5Sum:4c291e4aaf6406f61e3188d526479d51 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/g++_5.3.1-1ubuntu1_amd64.deb' g++_4%3a5.3.1-1ubuntu1_amd64.deb 1504 MD5Sum:0c03d113ff00ebc960f294420e60855b +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gcc-defaults/gcc_5.3.1-1ubuntu1_amd64.deb' gcc_4%3a5.3.1-1ubuntu1_amd64.deb 5244 MD5Sum:df1516b203a66a86a728eab7a4c349e8 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gdbm/libgdbm3_1.8.3-13.1_amd64.deb' libgdbm3_1.8.3-13.1_amd64.deb 16926 MD5Sum:b2001800d7c61d4b0b12b077a0af2b5a +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gdisk/gdisk_1.0.1-1build1_amd64.deb' gdisk_1.0.1-1build1_amd64.deb 194230 MD5Sum:24e876aa3c2e94e39c17a4551f5d8514 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/git/git_2.7.4-0ubuntu1_amd64.deb' git_1%3a2.7.4-0ubuntu1_amd64.deb 3006120 MD5Sum:0412535c34d3f900629e9409ad73aead +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/git/git-man_2.7.4-0ubuntu1_all.deb' git-man_1%3a2.7.4-0ubuntu1_all.deb 734758 MD5Sum:0c00ac0f6cc7cc5b1b17f2e30ad44342 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc6_2.23-0ubuntu5_amd64.deb' libc6_2.23-0ubuntu5_amd64.deb 2588598 MD5Sum:292e22f0016ee08ba9fd9fb1f97cdac6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc6-dev_2.23-0ubuntu5_amd64.deb' libc6-dev_2.23-0ubuntu5_amd64.deb 2078296 MD5Sum:5fffcafed356b69afe7aec1df6236326 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc-bin_2.23-0ubuntu5_amd64.deb' libc-bin_2.23-0ubuntu5_amd64.deb 637918 MD5Sum:76b422608cba8e40d4366133c12be582 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc-dev-bin_2.23-0ubuntu5_amd64.deb' libc-dev-bin_2.23-0ubuntu5_amd64.deb 68670 MD5Sum:74584e34dda156669150288f9e5b3416 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/locales_2.23-0ubuntu5_all.deb' locales_2.23-0ubuntu5_all.deb 3214550 MD5Sum:17eda41684dcdc316dbcc407eab5f7a4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/glibc/multiarch-support_2.23-0ubuntu5_amd64.deb' multiarch-support_2.23-0ubuntu5_amd64.deb 6832 MD5Sum:9483e4f0d59ba515b72af0712c25b8f7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnupg/gnupg_1.4.20-1ubuntu3.1_amd64.deb' gnupg_1.4.20-1ubuntu3.1_amd64.deb 625938 MD5Sum:955b23eb62539452a8aa37e34e6f77c1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/gnupg/gpgv_1.4.20-1ubuntu3.1_amd64.deb' gpgv_1.4.20-1ubuntu3.1_amd64.deb 165264 MD5Sum:1debba9f668b7dcdca878d1e0e25c98a +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/groff/groff-base_1.22.3-7_amd64.deb' groff-base_1.22.3-7_amd64.deb 1150932 MD5Sum:7afb23ed2960cd67ab3196f29b9ff7e2 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub2-common_2.02~beta2-36ubuntu3.2_amd64.deb' grub2-common_2.02~beta2-36ubuntu3.2_amd64.deb 510912 MD5Sum:634e13acd2c8cab54b01e84b5e254845 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-common_2.02~beta2-36ubuntu3.2_amd64.deb' grub-common_2.02~beta2-36ubuntu3.2_amd64.deb 1706552 MD5Sum:7899a24a07f8b62e08a455bdab510c47 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-pc_2.02~beta2-36ubuntu3.2_amd64.deb' grub-pc_2.02~beta2-36ubuntu3.2_amd64.deb 197080 MD5Sum:5d4cdb8542ad3e63302698a075e5e959 +'http://us.archive.ubuntu.com/ubuntu/pool/main/g/grub2/grub-pc-bin_2.02~beta2-36ubuntu3.2_amd64.deb' grub-pc-bin_2.02~beta2-36ubuntu3.2_amd64.deb 883966 MD5Sum:9bb93b3374a6ad20419396c488cbf5f9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libasn1-8-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libasn1-8-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 174366 MD5Sum:42aa97710227f6c372d232799fde6790 +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libgssapi3-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libgssapi3-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 96084 MD5Sum:0c9467b00d258e3175addbb5a16fdc72 +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libhcrypto4-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libhcrypto4-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 84938 MD5Sum:d6337d57fa1dda2c877a9f1c163ba0dd +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libheimbase1-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libheimbase1-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 29228 MD5Sum:15a7c7d180f14253f46d5e56409a0ffb +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libheimntlm0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libheimntlm0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 15090 MD5Sum:6f7a32beb2a3a04181c05efe940df1ee +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libhx509-5-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libhx509-5-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 107192 MD5Sum:b2b294bd3d2226f10c69058900323876 +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libkrb5-26-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libkrb5-26-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 202156 MD5Sum:000a329b39ae158d0ec280957741b14d +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libroken18-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libroken18-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 41190 MD5Sum:58c4093551f88ccca3c6c8a11d5e2357 +'http://us.archive.ubuntu.com/ubuntu/pool/main/h/heimdal/libwind0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb' libwind0-heimdal_1.7~git20150920+dfsg-4ubuntu1_amd64.deb 48180 MD5Sum:7e368713a6d03afb23a8f956a16b9ba7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/ifupdown/ifupdown_0.8.10ubuntu1.1_amd64.deb' ifupdown_0.8.10ubuntu1.1_amd64.deb 54916 MD5Sum:d013023982a1e01067d9ef9e02a327a3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools_0.122ubuntu8.5_all.deb' initramfs-tools_0.122ubuntu8.5_all.deb 8618 MD5Sum:6f5cdff02741b119d8033165749b812e +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools-bin_0.122ubuntu8.5_amd64.deb' initramfs-tools-bin_0.122ubuntu8.5_amd64.deb 9334 MD5Sum:c4f25ed3f10f6d234fc4f9b4e2556619 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/initramfs-tools/initramfs-tools-core_0.122ubuntu8.5_all.deb' initramfs-tools-core_0.122ubuntu8.5_all.deb 42160 MD5Sum:c2e8b352d17b48c9e9badd040b1ed3c9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/init-system-helpers/init_1.29ubuntu3_amd64.deb' init_1.29ubuntu3_amd64.deb 4716 MD5Sum:5967a023e146860d888297cfb5773017 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/init-system-helpers/init-system-helpers_1.29ubuntu3_all.deb' init-system-helpers_1.29ubuntu3_all.deb 32416 MD5Sum:9b8e5436025f8006ae7f309fd3687b60 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/iptables/iptables_1.6.0-2ubuntu3_amd64.deb' iptables_1.6.0-2ubuntu3_amd64.deb 265782 MD5Sum:706f191cbb20bff7c7a9a0fc01a78c25 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/ipxe/ipxe-qemu_1.0.0+git-20150424.a25a16d-1ubuntu1_all.deb' ipxe-qemu_1.0.0+git-20150424.a25a16d-1ubuntu1_all.deb 717714 MD5Sum:01570467dacbe007f2d0fb76c30653a7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isc-dhcp/isc-dhcp-client_4.3.3-5ubuntu12.4_amd64.deb' isc-dhcp-client_4.3.3-5ubuntu12.4_amd64.deb 223488 MD5Sum:0213ed75d3f4c7f06226ee7b9a974d12 +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isc-dhcp/isc-dhcp-common_4.3.3-5ubuntu12.4_amd64.deb' isc-dhcp-common_4.3.3-5ubuntu12.4_amd64.deb 104488 MD5Sum:21948bd2241628b4d690e79c10515ecf +'http://us.archive.ubuntu.com/ubuntu/pool/main/i/isl/libisl15_0.16.1-1_amd64.deb' libisl15_0.16.1-1_amd64.deb 524254 MD5Sum:eec42a28e5ed8a5eaaf6278b455176ed +'http://us.archive.ubuntu.com/ubuntu/pool/main/j/java-common/java-common_0.56ubuntu2_all.deb' java-common_0.56ubuntu2_all.deb 7742 MD5Sum:cef7383c2628cc09bccbf0777e4eac37 +'http://us.archive.ubuntu.com/ubuntu/pool/main/j/jinja2/python3-jinja2_2.8-1_all.deb' python3-jinja2_2.8-1_all.deb 102518 MD5Sum:2511385ccb261c47c7dc2479abb6848d +'http://us.archive.ubuntu.com/ubuntu/pool/main/k/kbd/kbd_1.15.5-1ubuntu5_amd64.deb' kbd_1.15.5-1ubuntu5_amd64.deb 183018 MD5Sum:4e77ee969276644f3bc9168bee7e3995 +'http://us.archive.ubuntu.com/ubuntu/pool/main/k/keyutils/keyutils_1.5.9-8ubuntu1_amd64.deb' keyutils_1.5.9-8ubuntu1_amd64.deb 47054 MD5Sum:c7a363bce61cc8fbfb2b252d7a98f0fa +'http://us.archive.ubuntu.com/ubuntu/pool/main/k/klibc/klibc-utils_2.0.4-8ubuntu1.16.04.2_amd64.deb' klibc-utils_2.0.4-8ubuntu1.16.04.2_amd64.deb 107498 MD5Sum:e07a76e70f2acfef7edf54b08be0a4a3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/k/klibc/libklibc_2.0.4-8ubuntu1.16.04.2_amd64.deb' libklibc_2.0.4-8ubuntu1.16.04.2_amd64.deb 41326 MD5Sum:b123c76c6d8f2f80a6247e5ce915dd48 +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libaio/libaio1_0.3.110-2_amd64.deb' libaio1_0.3.110-2_amd64.deb 6356 MD5Sum:2ed968780e68742f43eddebadf82ff67 +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-perl/libalgorithm-diff-perl_1.19.03-1_all.deb' libalgorithm-diff-perl_1.19.03-1_all.deb 47622 MD5Sum:3d6f7b46454ff0b8589904fc4f8dd602 +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-diff-xs-perl/libalgorithm-diff-xs-perl_0.04-4build1_amd64.deb' libalgorithm-diff-xs-perl_0.04-4build1_amd64.deb 10998 MD5Sum:330e839dcd98097723870b28ba9a8810 +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libalgorithm-merge-perl/libalgorithm-merge-perl_0.08-3_all.deb' libalgorithm-merge-perl_0.08-3_all.deb 11992 MD5Sum:6b456963b6629af0514be1b8ccbaa7fc +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libarchive/libarchive13_3.1.2-11ubuntu0.16.04.2_amd64.deb' libarchive13_3.1.2-11ubuntu0.16.04.2_amd64.deb 261048 MD5Sum:6a111b16830af6af2a056b7b9aa1537d +'http://us.archive.ubuntu.com/ubuntu/pool/main/liba/libasyncns/libasyncns0_0.8-5build1_amd64.deb' libasyncns0_0.8-5build1_amd64.deb 12336 MD5Sum:dbb4957abb710a70453eac0e77fc797b +'http://us.archive.ubuntu.com/ubuntu/pool/main/libc/libcaca/libcaca0_0.99.beta19-2build2~gcc5.2_amd64.deb' libcaca0_0.99.beta19-2build2~gcc5.2_amd64.deb 202380 MD5Sum:b49a9b48694bf35e217fee1295dd14dd +'http://us.archive.ubuntu.com/ubuntu/pool/main/libc/libcacard/libcacard0_2.5.0-2_amd64.deb' libcacard0_1%3a2.5.0-2_amd64.deb 19666 MD5Sum:0d371aa9cdc23ac668bc6e2afa1c44f0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libeatmydata/eatmydata_105-3_all.deb' eatmydata_105-3_all.deb 5502 MD5Sum:bc5bc47ea615b69da0f5d3c090c74a91 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libeatmydata/libeatmydata1_105-3_amd64.deb' libeatmydata1_105-3_amd64.deb 7280 MD5Sum:1f39d8cff52be865527547c09fc772db +'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/liberror-perl/liberror-perl_0.17-1.2_all.deb' liberror-perl_0.17-1.2_all.deb 19594 MD5Sum:bd1a8035bbfae2cd7d718f54fd93e0d5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libe/libevent/libevent-2.0-5_2.0.21-stable-2_amd64.deb' libevent-2.0-5_2.0.21-stable-2_amd64.deb 112550 MD5Sum:071d5951d910147ea84d0d024bee13ce +'http://us.archive.ubuntu.com/ubuntu/pool/main/libf/libfile-fcntllock-perl/libfile-fcntllock-perl_0.22-3_amd64.deb' libfile-fcntllock-perl_0.22-3_amd64.deb 32002 MD5Sum:26476d54bf4677cc993c8cd9a7dbaeca +'http://us.archive.ubuntu.com/ubuntu/pool/main/libg/libgcrypt20/libgcrypt20_1.6.5-2ubuntu0.2_amd64.deb' libgcrypt20_1.6.5-2ubuntu0.2_amd64.deb 336194 MD5Sum:ebe89b8db7294a6dc2ff9995a7d30060 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libi/libidn/libidn11_1.32-3ubuntu1.1_amd64.deb' libidn11_1.32-3ubuntu1.1_amd64.deb 45552 MD5Sum:74c4e3f65c05e61596efe2ef46941009 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libi/libiscsi/libiscsi2_1.12.0-2_amd64.deb' libiscsi2_1.12.0-2_amd64.deb 51550 MD5Sum:6c8f4a397968e478e9567785bba4283e +'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg8-empty/libjpeg8_8c-2ubuntu8_amd64.deb' libjpeg8_8c-2ubuntu8_amd64.deb 2194 MD5Sum:e0f16286dd787b951ffa953987fdf6a7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjpeg-turbo/libjpeg-turbo8_1.4.2-0ubuntu3_amd64.deb' libjpeg-turbo8_1.4.2-0ubuntu3_amd64.deb 110656 MD5Sum:8e505d67491b22a9d38be353654b3bc3 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libj/libjsoncpp/libjsoncpp1_1.7.2-1_amd64.deb' libjsoncpp1_1.7.2-1_amd64.deb 73018 MD5Sum:f6eb9a2a804b8a9e7ee4b0a0daeb732b +'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnfnetlink/libnfnetlink0_1.0.1-3_amd64.deb' libnfnetlink0_1.0.1-3_amd64.deb 13262 MD5Sum:914d0640e09dd02057d0fd09f3da0eb5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libn/libnfsidmap/libnfsidmap2_0.25-5_amd64.deb' libnfsidmap2_0.25-5_amd64.deb 32182 MD5Sum:5e06543f26481fa549a1e017eec4ef36 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libo/libogg/libogg0_1.3.2-1_amd64.deb' libogg0_1.3.2-1_amd64.deb 17192 MD5Sum:55dd9b6982d66d6b168aa18fb3f90d2f +'http://us.archive.ubuntu.com/ubuntu/pool/main/libp/libpcap/libpcap0.8_1.7.4-2_amd64.deb' libpcap0.8_1.7.4-2_amd64.deb 116794 MD5Sum:6b4372b0840fada16f16ed4d97f32146 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libp/libpcap/libpcap0.8-dev_1.7.4-2_amd64.deb' libpcap0.8-dev_1.7.4-2_amd64.deb 212414 MD5Sum:44df3da8707c2b5cd1f3f0bb68a005a6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libp/libpcap/libpcap-dev_1.7.4-2_all.deb' libpcap-dev_1.7.4-2_all.deb 3394 MD5Sum:df89b21ddc14397fccb0a9e5e6a3542c +'http://us.archive.ubuntu.com/ubuntu/pool/main/libs/libsdl1.2/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb' libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb 167606 MD5Sum:52418fa1951b7edff3aecc67821f5786 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libs/libsndfile/libsndfile1_1.0.25-10_amd64.deb' libsndfile1_1.0.25-10_amd64.deb 137498 MD5Sum:1218c82cf611a5e4ff9919b91130c21e +'http://us.archive.ubuntu.com/ubuntu/pool/main/libt/libtirpc/libtirpc1_0.2.5-1_amd64.deb' libtirpc1_0.2.5-1_amd64.deb 75624 MD5Sum:bc4fb6407a0636517ce6670fd3ac2c40 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbis0a_1.3.5-3_amd64.deb' libvorbis0a_1.3.5-3_amd64.deb 86776 MD5Sum:248a92f34c15bfc3fff460186eac1358 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libv/libvorbis/libvorbisenc2_1.3.5-3_amd64.deb' libvorbisenc2_1.3.5-3_amd64.deb 70678 MD5Sum:62b0f630a03291eff71de6f844746721 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxi/libxi6_1.7.6-1_amd64.deb' libxi6_2%3a1.7.6-1_amd64.deb 28572 MD5Sum:2ad504b68a0a7c3f987307166de56a3a +'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxrender/libxrender1_0.9.9-0ubuntu1_amd64.deb' libxrender1_1%3a0.9.9-0ubuntu1_amd64.deb 18482 MD5Sum:124d535fd56229469116dfd6e47fe406 +'http://us.archive.ubuntu.com/ubuntu/pool/main/libx/libxtst/libxtst6_1.2.2-1_amd64.deb' libxtst6_2%3a1.2.2-1_amd64.deb 14086 MD5Sum:2594435dcd76d6eec2ff3fb68a3d4e9d +'http://us.archive.ubuntu.com/ubuntu/pool/main/liby/libyaml/libyaml-0-2_0.1.6-3_amd64.deb' libyaml-0-2_0.1.6-3_amd64.deb 47596 MD5Sum:d5e5f5f176ebfe25ccb22965431bfe38 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/language-selector/language-selector-common_0.165.4_all.deb' language-selector-common_0.165.4_all.deb 213586 MD5Sum:b020f997ca40682c071d7b0f5c44062e +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/lcms2/liblcms2-2_2.6-3ubuntu2_amd64.deb' liblcms2-2_2.6-3ubuntu2_amd64.deb 136966 MD5Sum:425ab20e484e500aa2d48a281cb98d2c +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/less/less_481-2.1ubuntu0.1_amd64.deb' less_481-2.1ubuntu0.1_amd64.deb 109538 MD5Sum:ae43696453da4a56d9db1215e95e8302 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-firmware/linux-firmware_1.157.6_all.deb' linux-firmware_1.157.6_all.deb 37576144 MD5Sum:9cb1f546fbbdd0fec8c7e271004ddbe5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-headers-4.4.0-53_4.4.0-53.74_all.deb' linux-headers-4.4.0-53_4.4.0-53.74_all.deb 9953102 MD5Sum:8d94054f4bb28c3be51d0c2b52c56408 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-headers-4.4.0-53-generic_4.4.0-53.74_amd64.deb' linux-headers-4.4.0-53-generic_4.4.0-53.74_amd64.deb 781760 MD5Sum:b7ce620a5a8b0d79de4669279f04e303 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-image-4.4.0-53-generic_4.4.0-53.74_amd64.deb' linux-image-4.4.0-53-generic_4.4.0-53.74_amd64.deb 19190844 MD5Sum:7aad61a59a178f4c0812c5459abe4f47 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-image-extra-4.4.0-53-generic_4.4.0-53.74_amd64.deb' linux-image-extra-4.4.0-53-generic_4.4.0-53.74_amd64.deb 38633266 MD5Sum:5930cc8aa3cb484fd4c1ebec74bd5704 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux/linux-libc-dev_4.4.0-53.74_amd64.deb' linux-libc-dev_4.4.0-53.74_amd64.deb 835118 MD5Sum:913df1845e382245e4e3c0b2d57ba835 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta/linux-generic_4.4.0.53.56_amd64.deb' linux-generic_4.4.0.53.56_amd64.deb 1786 MD5Sum:3546bd89f663caacc4e4fd32c4b4b676 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta/linux-headers-generic_4.4.0.53.56_amd64.deb' linux-headers-generic_4.4.0.53.56_amd64.deb 2274 MD5Sum:eb3f0ecfce280f8d04c400367489aa08 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/linux-meta/linux-image-generic_4.4.0.53.56_amd64.deb' linux-image-generic_4.4.0.53.56_amd64.deb 2302 MD5Sum:5310fef65439b289519f69ef3161ab97 +'http://us.archive.ubuntu.com/ubuntu/pool/main/l/lzo2/liblzo2-2_2.08-1.2_amd64.deb' liblzo2-2_2.08-1.2_amd64.deb 48716 MD5Sum:a42f8dbd37e7aacf1889bd47a8dcf9aa +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/make-dfsg/make_4.1-6_amd64.deb' make_4.1-6_amd64.deb 150924 MD5Sum:a2c33fce65c313f2d9be0e55166fc3f5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/manpages/manpages_4.04-2_all.deb' manpages_4.04-2_all.deb 1086712 MD5Sum:bb93c041e490ee0b6c2fef876dddf502 +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/manpages/manpages-dev_4.04-2_all.deb' manpages-dev_4.04-2_all.deb 2047608 MD5Sum:fea47c59fcc997aeab05238ecf9c5aba +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/markupsafe/python3-markupsafe_0.23-2build2_amd64.deb' python3-markupsafe_0.23-2build2_amd64.deb 16120 MD5Sum:de4d087f2d9db48351efd1fe861b21be +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/mpclib3/libmpc3_1.0.3-1_amd64.deb' libmpc3_1.0.3-1_amd64.deb 39676 MD5Sum:7892c51e73d8c5a5c16c1f2e8b93faa1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/mpfr4/libmpfr4_3.1.4-1_amd64.deb' libmpfr4_3.1.4-1_amd64.deb 190628 MD5Sum:5e8b331bd179e68edf5734a8b11306b2 +'http://us.archive.ubuntu.com/ubuntu/pool/main/m/msr-tools/msr-tools_1.3-2_amd64.deb' msr-tools_1.3-2_amd64.deb 10636 MD5Sum:5ffb50c3889cfccc901b940923d89e29 +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nfs-utils/nfs-common_1.2.8-9ubuntu12_amd64.deb' nfs-common_1%3a1.2.8-9ubuntu12_amd64.deb 184538 MD5Sum:811cfcf44b77a9f3c0dca443c4a6cdbf +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nspr/libnspr4_4.12-0ubuntu0.16.04.1_amd64.deb' libnspr4_2%3a4.12-0ubuntu0.16.04.1_amd64.deb 112400 MD5Sum:6136aa494e3970cef74a03a5cc2415bb +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3_3.23-0ubuntu0.16.04.1_amd64.deb' libnss3_2%3a3.23-0ubuntu0.16.04.1_amd64.deb 1144232 MD5Sum:05b78e390c150fd4eb65c8de47358036 +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3-nssdb_3.23-0ubuntu0.16.04.1_all.deb' libnss3-nssdb_2%3a3.23-0ubuntu0.16.04.1_all.deb 10584 MD5Sum:6e7f301f6169b123e8f9ce82d68451ae +'http://us.archive.ubuntu.com/ubuntu/pool/main/n/numactl/libnuma1_2.0.11-1ubuntu1_amd64.deb' libnuma1_2.0.11-1ubuntu1_amd64.deb 21016 MD5Sum:fb873c905ae23079608114661a32d1c7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openjdk-8/openjdk-8-jdk-headless_8u111-b14-2ubuntu0.16.04.2_amd64.deb' openjdk-8-jdk-headless_8u111-b14-2ubuntu0.16.04.2_amd64.deb 8166930 MD5Sum:95abce7371d1f3eda3584f6909e85f18 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openjdk-8/openjdk-8-jre-headless_8u111-b14-2ubuntu0.16.04.2_amd64.deb' openjdk-8-jre-headless_8u111-b14-2ubuntu0.16.04.2_amd64.deb 26886140 MD5Sum:4f3d16222254577160afce4cd333db19 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openldap/libldap-2.4-2_2.4.42+dfsg-2ubuntu3.1_amd64.deb' libldap-2.4-2_2.4.42+dfsg-2ubuntu3.1_amd64.deb 160630 MD5Sum:bfb7d8edf8289d8f01742469420efe37 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-client_7.2p2-4ubuntu2.1_amd64.deb' openssh-client_1%3a7.2p2-4ubuntu2.1_amd64.deb 587050 MD5Sum:55c7b2f2e9e18fbd70ce9f042bd99261 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-server_7.2p2-4ubuntu2.1_amd64.deb' openssh-server_1%3a7.2p2-4ubuntu2.1_amd64.deb 337896 MD5Sum:c2c16d323dbb288f745b7537c327d206 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh-sftp-server_7.2p2-4ubuntu2.1_amd64.deb' openssh-sftp-server_1%3a7.2p2-4ubuntu2.1_amd64.deb 38762 MD5Sum:952e3bb32e10e130a090fa057dc408a6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.0.0_1.0.2g-1ubuntu4.5_amd64.deb' libssl1.0.0_1.0.2g-1ubuntu4.5_amd64.deb 1081760 MD5Sum:43fd613e133e35e98333ebceae7184ff +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_1.0.2g-1ubuntu4.5_amd64.deb' openssl_1.0.2g-1ubuntu4.5_amd64.deb 491434 MD5Sum:cff1a42acbf034afde850269791440af +'http://us.archive.ubuntu.com/ubuntu/pool/main/o/opus/libopus0_1.1.2-1ubuntu1_amd64.deb' libopus0_1.1.2-1ubuntu1_amd64.deb 159200 MD5Sum:b8f45b2da56ac6d1a5a64769d2232e2c +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/p11-kit/libp11-kit0_0.23.2-5~ubuntu16.04.1_amd64.deb' libp11-kit0_0.23.2-5~ubuntu16.04.1_amd64.deb 105478 MD5Sum:b7eac686f16419708424463a5abcd859 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/patch/patch_2.7.5-1_amd64.deb' patch_2.7.5-1_amd64.deb 90382 MD5Sum:0c03555b50fc094f942a938e9efb33d8 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pcsc-lite/libpcsclite1_1.8.14-1ubuntu1_amd64.deb' libpcsclite1_1.8.14-1ubuntu1_amd64.deb 21384 MD5Sum:67383a357c969292fa13d5ca85fc1737 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/libperl5.22_5.22.1-9_amd64.deb' libperl5.22_5.22.1-9_amd64.deb 3370548 MD5Sum:37c5a3fd13de2e1fbe0568aceb4ff043 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl_5.22.1-9_amd64.deb' perl_5.22.1-9_amd64.deb 237264 MD5Sum:a4b787e5cf0a032822bc486ace90cdad +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/perl/perl-modules-5.22_5.22.1-9_all.deb' perl-modules-5.22_5.22.1-9_all.deb 2640598 MD5Sum:71fb658af2eeaedbe87494cf511a0c92 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pixman/libpixman-1-0_0.33.6-1_amd64.deb' libpixman-1-0_0.33.6-1_amd64.deb 231222 MD5Sum:2d60906f5c3e3a3548490b1c621d1392 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/prettytable/python3-prettytable_0.7.2-3_all.deb' python3-prettytable_0.7.2-3_all.deb 19730 MD5Sum:958069d49fc751b73d945ac2e5adec4f +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/procps/libprocps4_3.3.10-4ubuntu2.3_amd64.deb' libprocps4_2%3a3.3.10-4ubuntu2.3_amd64.deb 32822 MD5Sum:6617b2996960aea83ff439d97948d4cf +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/procps/procps_3.3.10-4ubuntu2.3_amd64.deb' procps_2%3a3.3.10-4ubuntu2.3_amd64.deb 221914 MD5Sum:e16926cbf97117696f1f44789daf3da8 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pulseaudio/libpulse0_8.0-0ubuntu3.1_amd64.deb' libpulse0_1%3a8.0-0ubuntu3.1_amd64.deb 248194 MD5Sum:04da1888132c241682bddcce35ed1e77 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyasn1/python3-pyasn1_0.1.9-1_all.deb' python3-pyasn1_0.1.9-1_all.deb 28132 MD5Sum:aea3d0df93c568bda4817c3c3910ef08 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pycurl/python3-pycurl_7.43.0-1ubuntu1_amd64.deb' python3-pycurl_7.43.0-1ubuntu1_amd64.deb 42334 MD5Sum:9384e6be4685d2cd06994a6ec23dbfac +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyjwt/python3-jwt_1.3.0-1_all.deb' python3-jwt_1.3.0-1_all.deb 15994 MD5Sum:aa1437e45418bb3371e1ab78fad20c8b +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyserial/python3-serial_3.0.1-1_all.deb' python3-serial_3.0.1-1_all.deb 54058 MD5Sum:4b9e76fe3f6cdaa0c8d8f5c6ee0e80b1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7_2.7.12-1ubuntu0~16.04.1_amd64.deb' libpython2.7_2.7.12-1ubuntu0~16.04.1_amd64.deb 1069728 MD5Sum:c355a8d8c72dee5f06c38aa637f7d5f6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-dev_2.7.12-1ubuntu0~16.04.1_amd64.deb' libpython2.7-dev_2.7.12-1ubuntu0~16.04.1_amd64.deb 27806182 MD5Sum:b1606b5ecd36ddbe756e1db9db371065 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-minimal_2.7.12-1ubuntu0~16.04.1_amd64.deb' libpython2.7-minimal_2.7.12-1ubuntu0~16.04.1_amd64.deb 339378 MD5Sum:16cd81bed67b58992ba326d225da74a9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/libpython2.7-stdlib_2.7.12-1ubuntu0~16.04.1_amd64.deb' libpython2.7-stdlib_2.7.12-1ubuntu0~16.04.1_amd64.deb 1883824 MD5Sum:b51aee7135c4c40745afc1dd4fb87067 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7_2.7.12-1ubuntu0~16.04.1_amd64.deb' python2.7_2.7.12-1ubuntu0~16.04.1_amd64.deb 224330 MD5Sum:d9789fea16fda2a928f6ed39f3434f29 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7-dev_2.7.12-1ubuntu0~16.04.1_amd64.deb' python2.7-dev_2.7.12-1ubuntu0~16.04.1_amd64.deb 276176 MD5Sum:10628375ea7e36d5e8f7ba5273c7d9b1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python2.7/python2.7-minimal_2.7.12-1ubuntu0~16.04.1_amd64.deb' python2.7-minimal_2.7.12-1ubuntu0~16.04.1_amd64.deb 1295108 MD5Sum:60f2c79700931bcbd713556b6b5bda03 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/libpython3.5-minimal_3.5.2-2ubuntu0~16.04.1_amd64.deb' libpython3.5-minimal_3.5.2-2ubuntu0~16.04.1_amd64.deb 525856 MD5Sum:c787784b944542dee0b10465a45bac99 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/libpython3.5-stdlib_3.5.2-2ubuntu0~16.04.1_amd64.deb' libpython3.5-stdlib_3.5.2-2ubuntu0~16.04.1_amd64.deb 2129936 MD5Sum:500952aa58ef0e7f1f5f76b3a4037bdf +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/python3.5_3.5.2-2ubuntu0~16.04.1_amd64.deb' python3.5_3.5.2-2ubuntu0~16.04.1_amd64.deb 165176 MD5Sum:32b4fac2b139dfb340ddee92d78a7f59 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python3.5/python3.5-minimal_3.5.2-2ubuntu0~16.04.1_amd64.deb' python3.5-minimal_3.5.2-2ubuntu0~16.04.1_amd64.deb 1596870 MD5Sum:be7d322cad015751590ff585630c9244 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-cffi/python3-cffi-backend_1.5.2-1ubuntu1_amd64.deb' python3-cffi-backend_1.5.2-1ubuntu1_amd64.deb 59108 MD5Sum:c27b5b99bd74a557cbf97186a1266bf7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-cryptography/python3-cryptography_1.2.3-1ubuntu0.1_amd64.deb' python3-cryptography_1.2.3-1ubuntu0.1_amd64.deb 198704 MD5Sum:5a6c6aa52d81576eaffba6bf56fdcd2f +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-all-dev_2.7.11-1_amd64.deb' libpython-all-dev_2.7.11-1_amd64.deb 992 MD5Sum:5b8013073862e493f5c4f35e4fc12d62 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-dev_2.7.11-1_amd64.deb' libpython-dev_2.7.11-1_amd64.deb 7728 MD5Sum:27b5b2364088a2e4d49e00e0b50f75e1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/libpython-stdlib_2.7.11-1_amd64.deb' libpython-stdlib_2.7.11-1_amd64.deb 7656 MD5Sum:0632b48d11a10ea0b58adad543887f8a +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python_2.7.11-1_amd64.deb' python_2.7.11-1_amd64.deb 136892 MD5Sum:af686bd03f39be3f3cd865d38b44f5bf +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-all_2.7.11-1_amd64.deb' python-all_2.7.11-1_amd64.deb 978 MD5Sum:bf338b9d5360ec685bfbf9a323afcf1e +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-all-dev_2.7.11-1_amd64.deb' python-all-dev_2.7.11-1_amd64.deb 1000 MD5Sum:d68ff89d7581cd985bc0ff3c7c1c31a0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-dev_2.7.11-1_amd64.deb' python-dev_2.7.11-1_amd64.deb 1160 MD5Sum:a1dc029ad0f502f7d41fdb5639650b85 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-defaults/python-minimal_2.7.11-1_amd64.deb' python-minimal_2.7.11-1_amd64.deb 28156 MD5Sum:5f74584a69921aac52908a029aca4e04 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-idna/python3-idna_2.0-3_all.deb' python3-idna_2.0-3_all.deb 35084 MD5Sum:5a78ae4de7cc7e91a16badc125cf5225 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-json-patch/python3-jsonpatch_1.19-3_all.deb' python3-jsonpatch_1.19-3_all.deb 12416 MD5Sum:cb2596025e967af7ff27427842766833 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-json-pointer/python3-json-pointer_1.9-3_all.deb' python3-json-pointer_1.9-3_all.deb 7262 MD5Sum:1bde57c985279df596aed63775fd1ed5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-oauthlib/python3-oauthlib_1.0.3-1_all.deb' python3-oauthlib_1.0.3-1_all.deb 62486 MD5Sum:7c1f5bd6db8c0ce8c08dd4220ee548a6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-pkg-resources_20.7.0-1_all.deb' python-pkg-resources_20.7.0-1_all.deb 108428 MD5Sum:33fb00c7fd20b868b36407e0210cda2c +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/python-setuptools/python-setuptools_20.7.0-1_all.deb' python-setuptools_20.7.0-1_all.deb 169084 MD5Sum:5f51f781ed0c8c027029cf58336b1858 +'http://us.archive.ubuntu.com/ubuntu/pool/main/p/pyyaml/python3-yaml_3.11-3build1_amd64.deb' python3-yaml_3.11-3build1_amd64.deb 95592 MD5Sum:1f9e9ba917bfc2ab4857bae73434c7a7 +'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-block-extra_2.5+dfsg-5ubuntu10.6_amd64.deb' qemu-block-extra_1%3a2.5+dfsg-5ubuntu10.6_amd64.deb 32770 MD5Sum:073e0430b15ef8bc093b5a4b99d36e6f +'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-common_2.5+dfsg-5ubuntu10.6_amd64.deb' qemu-system-common_1%3a2.5+dfsg-5ubuntu10.6_amd64.deb 281212 MD5Sum:96a52cc1b67600f120b2b468d59d23d6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-system-x86_2.5+dfsg-5ubuntu10.6_amd64.deb' qemu-system-x86_1%3a2.5+dfsg-5ubuntu10.6_amd64.deb 2758348 MD5Sum:0eeefc0245958be5dfe6dbec8c1e8516 +'http://us.archive.ubuntu.com/ubuntu/pool/main/q/qemu/qemu-utils_2.5+dfsg-5ubuntu10.6_amd64.deb' qemu-utils_1%3a2.5+dfsg-5ubuntu10.6_amd64.deb 577726 MD5Sum:533f6a19cd54df36e42a4a336bf29641 +'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rename/rename_0.20-4_all.deb' rename_0.20-4_all.deb 12010 MD5Sum:6cf1938ef51145a469ccef181a9304ce +'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rpcbind/rpcbind_0.2.3-0.2_amd64.deb' rpcbind_0.2.3-0.2_amd64.deb 40252 MD5Sum:52576ed752c0c2bb04db68576aecd827 +'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rsync/rsync_3.1.1-3ubuntu1_amd64.deb' rsync_3.1.1-3ubuntu1_amd64.deb 324680 MD5Sum:c856c6f0ced17498b62cd5222918e2e0 +'http://us.archive.ubuntu.com/ubuntu/pool/main/r/rtmpdump/librtmp1_2.4+20151223.gitfa8646d-1build1_amd64.deb' librtmp1_2.4+20151223.gitfa8646d-1build1_amd64.deb 53892 MD5Sum:8b0bf8b00890590f67fba42b8050de2d +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/seabios/seabios_1.8.2-1ubuntu1_all.deb' seabios_1.8.2-1ubuntu1_all.deb 112532 MD5Sum:4c2c2bf6aa6d8bd26f90aa21a4ac4e0f +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/sharutils/sharutils_4.15.2-1_amd64.deb' sharutils_1%3a4.15.2-1_amd64.deb 148320 MD5Sum:82eebb19d70fcb9fe029b7e34407bea9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/software-properties/python3-software-properties_0.96.20.5_all.deb' python3-software-properties_0.96.20.5_all.deb 19930 MD5Sum:206945cfc3112427758bbb0cc09fb691 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/software-properties/software-properties-common_0.96.20.5_all.deb' software-properties-common_0.96.20.5_all.deb 9432 MD5Sum:41eb5bb7bc3136f63b5ab9d1f0576370 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/spice/libspice-server1_0.12.6-4ubuntu0.1_amd64.deb' libspice-server1_0.12.6-4ubuntu0.1_amd64.deb 337930 MD5Sum:c9c1151a559f28da293d41e9df4262da +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/libstrongswan_5.3.5-1ubuntu3_amd64.deb' libstrongswan_5.3.5-1ubuntu3_amd64.deb 1389936 MD5Sum:35b18e264b9596ab99b4a1be3d04bc13 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/libstrongswan-standard-plugins_5.3.5-1ubuntu3_amd64.deb' libstrongswan-standard-plugins_5.3.5-1ubuntu3_amd64.deb 265898 MD5Sum:5a06dd0c30304a6c3cc1263ca3f15c3d +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan_5.3.5-1ubuntu3_all.deb' strongswan_5.3.5-1ubuntu3_all.deb 27042 MD5Sum:b6336f9bc594ab356d13fdcb8e56ce9f +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-charon_5.3.5-1ubuntu3_amd64.deb' strongswan-charon_5.3.5-1ubuntu3_amd64.deb 55514 MD5Sum:22a8d0cdba50b922ae9611c297820208 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-libcharon_5.3.5-1ubuntu3_amd64.deb' strongswan-libcharon_5.3.5-1ubuntu3_amd64.deb 1240762 MD5Sum:9d230aea890e695545a7508af56eac24 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/strongswan/strongswan-starter_5.3.5-1ubuntu3_amd64.deb' strongswan-starter_5.3.5-1ubuntu3_amd64.deb 742676 MD5Sum:a793db72f6f7bc37dc29393399b9bfd5 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/sudo/sudo_1.8.16-0ubuntu1.2_amd64.deb' sudo_1.8.16-0ubuntu1.2_amd64.deb 389432 MD5Sum:bebd286de1e01ef45e41786461e42cdc +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libsystemd0_229-4ubuntu13_amd64.deb' libsystemd0_229-4ubuntu13_amd64.deb 205086 MD5Sum:11d3738fc425d37a21a216e99c452fe1 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/libudev1_229-4ubuntu13_amd64.deb' libudev1_229-4ubuntu13_amd64.deb 55122 MD5Sum:7bef145a33dc2c8e53e1a9428777ed9f +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/systemd_229-4ubuntu13_amd64.deb' systemd_229-4ubuntu13_amd64.deb 3614858 MD5Sum:926ce4027ae0b46805fe32431e35aeaa +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/systemd-sysv_229-4ubuntu13_amd64.deb' systemd-sysv_229-4ubuntu13_amd64.deb 12604 MD5Sum:bb2ee2ccb3c545dec9d428f05e02b1b4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/s/systemd/udev_229-4ubuntu13_amd64.deb' udev_229-4ubuntu13_amd64.deb 991212 MD5Sum:90494e5ab5269721ba83277cbcfd61a4 +'http://us.archive.ubuntu.com/ubuntu/pool/main/t/tar/tar_1.28-2.1ubuntu0.1_amd64.deb' tar_1.28-2.1ubuntu0.1_amd64.deb 208648 MD5Sum:984affa3d0dbbe9bbb9d67b005f14a8a +'http://us.archive.ubuntu.com/ubuntu/pool/main/t/tzdata/tzdata_2016j-0ubuntu0.16.04_all.deb' tzdata_2016j-0ubuntu0.16.04_all.deb 168038 MD5Sum:100d5596702ee4c8915efa455ced63c9 +'http://us.archive.ubuntu.com/ubuntu/pool/main/u/unattended-upgrades/unattended-upgrades_0.90ubuntu0.2_all.deb' unattended-upgrades_0.90ubuntu0.2_all.deb 31704 MD5Sum:1d06ac8bfff20729708f7ef0e884a3eb +'http://us.archive.ubuntu.com/ubuntu/pool/main/u/unzip/unzip_6.0-20ubuntu1_amd64.deb' unzip_6.0-20ubuntu1_amd64.deb 158434 MD5Sum:059c9f15163425d4c5f818e2ad599597 +'http://us.archive.ubuntu.com/ubuntu/pool/main/u/usbredir/libusbredirparser1_0.7.1-1_amd64.deb' libusbredirparser1_0.7.1-1_amd64.deb 13612 MD5Sum:617c6126646b6b4d1e159b31a4a0dd28 +'http://us.archive.ubuntu.com/ubuntu/pool/main/v/vim/vim-common_7.4.1689-3ubuntu1.2_amd64.deb' vim-common_2%3a7.4.1689-3ubuntu1.2_amd64.deb 103242 MD5Sum:5669132132fc2ad18b884a79979b1507 +'http://us.archive.ubuntu.com/ubuntu/pool/main/v/vim/vim-tiny_7.4.1689-3ubuntu1.2_amd64.deb' vim-tiny_2%3a7.4.1689-3ubuntu1.2_amd64.deb 445488 MD5Sum:2853b25313fc1b51b8351783c4c0d073 +'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xen/libxen-4.6_4.6.0-1ubuntu4.2_amd64.deb' libxen-4.6_4.6.0-1ubuntu4.2_amd64.deb 344510 MD5Sum:5ca2669763f0de854ae0e967a22c2330 +'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xen/libxenstore3.0_4.6.0-1ubuntu4.2_amd64.deb' libxenstore3.0_4.6.0-1ubuntu4.2_amd64.deb 19658 MD5Sum:aa5c61be8faa0cd725d4bd0cc78fb35a +'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xorg/x11-common_7.7+13ubuntu3_all.deb' x11-common_1%3a7.7+13ubuntu3_all.deb 22390 MD5Sum:b0943f823b6f471e8c41ca66c2b5a2dd +'http://us.archive.ubuntu.com/ubuntu/pool/main/x/xz-utils/xz-utils_5.1.1alpha+20120614-2ubuntu2_amd64.deb' xz-utils_5.1.1alpha+20120614-2ubuntu2_amd64.deb 78794 MD5Sum:195995c093404e3ee766d04ea3cdffe6 +'http://us.archive.ubuntu.com/ubuntu/pool/main/y/yajl/libyajl2_2.1.0-2_amd64.deb' libyajl2_2.1.0-2_amd64.deb 19638 MD5Sum:331f71d0965718605fe52fa178cef955 +'http://us.archive.ubuntu.com/ubuntu/pool/main/z/zlib/zlib1g-dev_1.2.8.dfsg-2ubuntu4_amd64.deb' zlib1g-dev_1%3a1.2.8.dfsg-2ubuntu4_amd64.deb 167514 MD5Sum:da0bb3efa89c1b319490daa401c4f3e0 +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-pip/python-pip_8.1.1-2ubuntu0.4_all.deb' python-pip_8.1.1-2ubuntu0.4_all.deb 144288 MD5Sum:ca535f732af3f0c509514b7e5c859d3d +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-pip/python-pip-whl_8.1.1-2ubuntu0.4_all.deb' python-pip-whl_8.1.1-2ubuntu0.4_all.deb 1110472 MD5Sum:2671bdb380db5230ef41812d18062a8b +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/python3-virtualenv_15.0.1+ds-3ubuntu1_all.deb' python3-virtualenv_15.0.1+ds-3ubuntu1_all.deb 43216 MD5Sum:ad57f0d3553fbe5ca615b9316f065a15 +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/python-virtualenv_15.0.1+ds-3ubuntu1_all.deb' python-virtualenv_15.0.1+ds-3ubuntu1_all.deb 46560 MD5Sum:e572fe37557fe8121498f935af1bad6e +'http://us.archive.ubuntu.com/ubuntu/pool/universe/p/python-virtualenv/virtualenv_15.0.1+ds-3ubuntu1_all.deb' virtualenv_15.0.1+ds-3ubuntu1_all.deb 4342 MD5Sum:9b46220c5218db4fee78a016ebd5b237 +'http://us.archive.ubuntu.com/ubuntu/pool/universe/w/wheel/python-wheel_0.29.0-1_all.deb' python-wheel_0.29.0-1_all.deb 48050 MD5Sum:cec5453c98565e6c57d446c45176f38b diff --git a/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-12-19_1.6/pip-requirements.txt b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-12-19_1.6/pip-requirements.txt index 17bd8f0d6a..f8bacf5298 100644 --- a/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-12-19_1.6/pip-requirements.txt +++ b/resources/tools/disk-image-builder/ubuntu/lists/ubuntu-16.04.1_2016-12-19_1.6/pip-requirements.txt @@ -1,15 +1,15 @@ -docopt==0.6.2 -ecdsa==0.13 -enum34==1.1.2 -interruptingcow==0.6 -ipaddress==1.0.16 -paramiko==1.16.0 -pycrypto==2.6.1 -pykwalify==1.5.0 -python-dateutil==2.4.2 -PyYAML==3.11 -requests==2.9.1 -robotframework==2.9.2 -scapy==2.3.1 -scp==0.10.2 -six==1.10.0 +docopt==0.6.2 +ecdsa==0.13 +enum34==1.1.2 +interruptingcow==0.6 +ipaddress==1.0.16 +paramiko==1.16.0 +pycrypto==2.6.1 +pykwalify==1.5.0 +python-dateutil==2.4.2 +PyYAML==3.11 +requests==2.9.1 +robotframework==2.9.2 +scapy==2.3.1 +scp==0.10.2 +six==1.10.0 diff --git a/resources/tools/download_hc_build_pkgs.sh b/resources/tools/download_hc_build_pkgs.sh deleted file mode 100755 index 6683499956..0000000000 --- a/resources/tools/download_hc_build_pkgs.sh +++ /dev/null @@ -1,96 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -ex - -STREAM=$1 -OS=$2 - -# Download the latest VPP and VPP plugin .deb packages -URL="https://nexus.fd.io/service/local/artifact/maven/content" -VER="RELEASE" -VPP_GROUP="io.fd.vpp" -NSH_GROUP="io.fd.nsh_sfc" -NSH_ARTIFACTS="vpp-nsh-plugin" - -if [ "${OS}" == "ubuntu1404" ]; then - OS="ubuntu.trusty.main" - PACKAGE="deb deb.md5" - CLASS="deb" - VPP_ARTIFACTS="vpp vpp-dbg vpp-dev vpp-dpdk-dkms vpp-lib vpp-plugins vpp-api-java" -elif [ "${OS}" == "ubuntu1604" ]; then - OS="ubuntu.xenial.main" - PACKAGE="deb deb.md5" - CLASS="deb" - VPP_ARTIFACTS="vpp vpp-dbg vpp-dev vpp-dpdk-dkms vpp-lib vpp-plugins vpp-api-java" -elif [ "${OS}" == "centos7" ]; then - OS="centos7" - PACKAGE="rpm rpm.md5" - CLASS="" - VPP_ARTIFACTS="vpp vpp-debuginfo vpp-devel vpp-lib vpp-plugins vpp-api-java" -fi - -REPO="fd.io.${STREAM}.${OS}" - -for ART in ${VPP_ARTIFACTS}; do - for PAC in ${PACKAGE}; do - curl "${URL}?r=${REPO}&g=${VPP_GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit - done -done - -for ART in ${NSH_ARTIFACTS}; do - for PAC in ${PACKAGE}; do - curl "${URL}?r=${REPO}&g=${NSH_GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit - done -done - -# verify downloaded packages -if [ "${OS}" == "centos7" ]; then - FILES=*.rpm -else - FILES=*.deb -fi - -for FILE in ${FILES}; do - echo " "${FILE} >> ${FILE}.md5 -done -for MD5FILE in *.md5; do - md5sum -c ${MD5FILE} || exit - rm ${MD5FILE} -done - -# install vpp-api-java, this extracts jvpp .jar files into usr/share/java -if [ "${OS}" == "centos7" ]; then - sudo rpm --nodeps --install vpp-api-java* -else - sudo dpkg --ignore-depends=vpp --install vpp-api-java* -fi - -# install jvpp jars into maven repo, so that maven picks them up when building hc2vpp -version=`../jvpp-version` - -current_dir=`pwd` -cd /usr/share/java - -for item in jvpp*.jar; do - # Example filename: jvpp-registry-17.01-20161206.125556-1.jar - # ArtifactId = jvpp-registry - # Version = 17.01 - basefile=$(basename -s .jar "$item") - artifactId=$(echo "$basefile" | cut -d '-' -f 1-2) - mvn install:install-file -Dfile=${item} -DgroupId=io.fd.vpp -DartifactId=${artifactId} -Dversion=${version} -Dpackaging=jar -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r -done - -cd ${current_dir} \ No newline at end of file diff --git a/resources/tools/download_hc_pkgs.sh b/resources/tools/download_hc_pkgs.sh deleted file mode 100755 index 23e0be4b16..0000000000 --- a/resources/tools/download_hc_pkgs.sh +++ /dev/null @@ -1,99 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -ex - -STREAM=$1 -OS=$2 - -URL="https://nexus.fd.io/service/local/artifact/maven/content" -VER="RELEASE" -GROUP="io.fd.vpp" -HC_GROUP="io.fd.hc2vpp" -NSH_GROUP="io.fd.nsh_sfc" -HC_ARTIFACTS="honeycomb" -NSH_ARTIFACTS="vpp-nsh-plugin" - -if [ "${OS}" == "ubuntu1404" ]; then - OS="ubuntu.trusty.main" - PACKAGE="deb deb.md5" - CLASS="deb" - VPP_ARTIFACTS="vpp vpp-dbg vpp-dev vpp-lib vpp-plugins vpp-api-java" - DPDK_ARTIFACTS="vpp-dpdk-dkms" -elif [ "${OS}" == "ubuntu1604" ]; then - OS="ubuntu.xenial.main" - PACKAGE="deb deb.md5" - CLASS="deb" - VPP_ARTIFACTS="vpp vpp-dbg vpp-dev vpp-lib vpp-plugins vpp-api-java" - DPDK_ARTIFACTS="vpp-dpdk-dkms" -elif [ "${OS}" == "centos7" ]; then - OS="centos7" - PACKAGE="rpm rpm.md5" - CLASS="" - VPP_ARTIFACTS="vpp vpp-debuginfo vpp-devel vpp-lib vpp-plugins vpp-api-java" - DPDK_ARTIFACTS="" -fi - -REPO="fd.io.${STREAM}.${OS}" - -# download latest honeycomb, vpp-dpdk and nsh packages -for ART in ${HC_ARTIFACTS}; do - for PAC in ${PACKAGE}; do - curl "${URL}?r=${REPO}&g=${HC_GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit - done -done - -for ART in ${DPDK_ARTIFACTS}; do - for PAC in ${PACKAGE}; do - curl "${URL}?r=${REPO}&g=${GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit - done -done - -for ART in ${NSH_ARTIFACTS}; do - for PAC in ${PACKAGE}; do - curl "${URL}?r=${REPO}&g=${NSH_GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit - done -done - -# determine VPP dependency -if [ "${OS}" == "centos7" ]; then - VER=`rpm -qpR honeycomb*.rpm | grep 'vpp ' | cut -d ' ' -f 3` - VER=${VER}.x86_64 -else - VER=`dpkg -I honeycomb*.deb | grep -oP 'vpp \(= \K[^\)]+'` - VER=${VER}_amd64 -fi - -# download VPP packages -for ART in ${VPP_ARTIFACTS}; do - for PAC in ${PACKAGE}; do - curl "${URL}?r=${REPO}&g=${GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit - done -done - -# verify downloaded package -if [ "${OS}" == "centos7" ]; then - FILES=*.rpm -else - FILES=*.deb -fi - -for FILE in ${FILES}; do - echo " "${FILE} >> ${FILE}.md5 -done -for MD5FILE in *.md5; do - md5sum -c ${MD5FILE} || exit - rm ${MD5FILE} -done \ No newline at end of file diff --git a/resources/tools/download_install_vpp_pkgs.sh b/resources/tools/download_install_vpp_pkgs.sh deleted file mode 100755 index 8928a2fee2..0000000000 --- a/resources/tools/download_install_vpp_pkgs.sh +++ /dev/null @@ -1,81 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -ex - -URL="https://nexus.fd.io/service/local/artifact/maven/content" -VER="RELEASE" -GROUP="io.fd.vpp" - -if [ -f "/etc/redhat-release" ]; then - trap 'rm -f *.rpm.md5; exit' EXIT - trap 'rm -f *.rpm.md5;rm -f *.rpm; exit' ERR - - VPP_REPO_URL_PATH="./VPP_REPO_URL_CENTOS" - if [ -e "$VPP_REPO_URL_PATH" ]; then - VPP_REPO_URL=$(cat $VPP_REPO_URL_PATH) - REPO=$(echo ${VPP_REPO_URL#https://nexus.fd.io/content/repositories/}) - REPO=$(echo ${REPO%/io/fd/vpp/}) - else - REPO='fd.io.master.centos7' - FILES=*.rpm - MD5FILES=*.rpm.md5 - fi - - ARTIFACTS="vpp vpp-debuginfo vpp-devel vpp-lib vpp-plugins" - PACKAGE="rpm rpm.md5" - CLASS="" - VPP_INSTALL_COMMAND="rpm -ivh *.rpm" -else - trap 'rm -f *.deb.md5; exit' EXIT - trap 'rm -f *.deb.md5;rm -f *.deb; exit' ERR - - VPP_REPO_URL_PATH="./VPP_REPO_URL_UBUNTU" - if [ -e "$VPP_REPO_URL_PATH" ]; then - VPP_REPO_URL=$(cat $VPP_REPO_URL_PATH) - REPO=$(echo ${VPP_REPO_URL#https://nexus.fd.io/content/repositories/}) - REPO=$(echo ${REPO%/io/fd/vpp/}) - else - REPO='fd.io.master.ubuntu.xenial.main' - FILES=*.deb - MD5FILES=*.deb.md5 - fi - - ARTIFACTS="vpp vpp-dbg vpp-dev vpp-dpdk-dkms vpp-lib vpp-plugins" - PACKAGE="deb deb.md5" - CLASS="deb" - VPP_INSTALL_COMMAND="dpkg -i *.deb" -fi - -for ART in ${ARTIFACTS}; do - for PAC in $PACKAGE; do - curl "${URL}?r=${REPO}&g=${GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit - done -done - -for FILE in ${FILES}; do - echo " "${FILE} >> ${FILE}.md5 -done - -for MD5FILE in ${MD5FILES}; do - md5sum -c ${MD5FILE} || exit -done - -if [ "$1" != "--skip-install" ]; then - echo Installing VPP - sudo ${VPP_INSTALL_COMMAND} -else - echo VPP Installation skipped -fi diff --git a/resources/tools/download_install_vpp_rpms.sh b/resources/tools/download_install_vpp_rpms.sh deleted file mode 100644 index 29e09216db..0000000000 --- a/resources/tools/download_install_vpp_rpms.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -ex - -VER="RELEASE" - -VPP_REPO_URL_PATH="./VPP_REPO_URL" -if [ -e "$VPP_REPO_URL_PATH" ]; then - VPP_REPO_URL=$(cat $VPP_REPO_URL_PATH) - REPO=$(echo ${VPP_REPO_URL#https://nexus.fd.io/content/repositories/}) - REPO=$(echo ${REPO%/fd.io.centos7}) -else - REPO='https://nexus.fd.io/content/repositories/fd.io.centos7' -fi - -ARTIFACTS="vpp vpp-lib vpp-debuginfo vpp-devel vpp-python-api vpp-plugins" - - -yum-config-manager --add-repo $REPO - -if [ "$1" != "--skip-install" ]; then - echo Installing VPP - sudo yum install -y $ARTIFACTS -else - echo VPP Installation skipped -fi diff --git a/resources/tools/download_nsh_sfc_pkgs.sh b/resources/tools/download_nsh_sfc_pkgs.sh deleted file mode 100755 index 2261f084e5..0000000000 --- a/resources/tools/download_nsh_sfc_pkgs.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -ex - -trap 'rm -f *.deb.md5; exit' EXIT -trap 'rm -f *.deb.md5;rm -f *.deb; exit' ERR - -STREAM=$1 -OS=$2 - -URL="https://nexus.fd.io/service/local/artifact/maven/content" -VER="RELEASE" -GROUP="io.fd.vpp" -NSH_GROUP="io.fd.nsh_sfc" -VPP_ARTIFACTS="vpp vpp-dbg vpp-dev vpp-dpdk-dkms vpp-lib vpp-plugins vpp-api-java vpp-api-python vpp-api-lua" -NSH_ARTIFACTS="vpp-nsh-plugin" - -if [ "${OS}" == "ubuntu1404" ]; then - OS="ubuntu.trusty.main" - PACKAGE="deb deb.md5" - CLASS="deb" -elif [ "${OS}" == "ubuntu1604" ]; then - OS="ubuntu.xenial.main" - PACKAGE="deb deb.md5" - CLASS="deb" -elif [ "${OS}" == "centos7" ]; then - OS="centos7" - PACKAGE="rpm rpm.md5" - CLASS="rpm" -fi - -REPO="fd.io.${STREAM}.${OS}" - -for ART in ${VPP_ARTIFACTS}; do - for PAC in $PACKAGE; do - curl "${URL}?r=${REPO}&g=${GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit - done -done - -for ART in ${NSH_ARTIFACTS}; do - for PAC in $PACKAGE; do - curl "${URL}?r=${REPO}&g=${NSH_GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit - done -done - -for FILE in *.deb; do - echo " "${FILE} >> ${FILE}.md5 -done - -for MD5FILE in *.md5; do - md5sum -c ${MD5FILE} || exit -done diff --git a/resources/tools/rename_robot_keywords.py b/resources/tools/rename_robot_keywords.py deleted file mode 100755 index 9f27b4aaec..0000000000 --- a/resources/tools/rename_robot_keywords.py +++ /dev/null @@ -1,243 +0,0 @@ -#!/usr/bin/python - -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""This script renames the given robot keywords in the given directory -recursively. - -Example: - - ./rename_robot_keywords.py -i kws.csv -s ";" -d ~/ws/vpp/git/csit/ -vvv - - Input file "kws.csv" is CSV file exported from e.g. MS Excel. Its structure - must be: - - - - One keyword per line. - -""" - -import argparse -import sys -import re -from os import walk, rename -from os.path import join - - -def time_interval(func): - """Decorator function to measure the time spent by the decorated function. - - :param func: Decorated function. - :type func: Callable object. - :returns: Wrapper function. - :rtype: Callable object. - """ - - import time - - def wrapper(*args, **kwargs): - start = time.clock() - result = func(*args, **kwargs) - stop = time.clock() - print("\nRenaming done in {:.5g} seconds\n". - format(stop - start)) - return result - return wrapper - - -def get_files(path, extension): - """Generates the list of files to process. - - :param path: Path to files. - :param extension: Extension of files to process. If it is the empty string, - all files will be processed. - :type path: str - :type extension: str - :returns: List of files to process. - :rtype: list - """ - - file_list = list() - for root, dirs, files in walk(path): - for filename in files: - if extension: - if filename.endswith(extension): - file_list.append(join(root, filename)) - else: - file_list.append(join(root, filename)) - - return file_list - - -def read_keywords(args): - """This function reads the keywords from the input file and creates: - - - a dictionary where the key is the old name and the value is the new name, - these keywords will be further processed. - - a list of keywords which will not be processed, typically keywords with - argument(s) in its names. - - a list of duplicates - duplicated keyword names or names which are parts - of another keyword name, they will not be processed. - - :param args: Parsed arguments. - :type args: ArgumentParser - :returns: keyword names - dictionary where the key is the old name and the - value is the new name; ignored keyword names - list of keywords which will - not be processed; duplicates - duplicated keyword names or names which are - parts of another keyword name, they will not be processed. - :rtype: tuple(dict, list, list) - """ - - kw_names = dict() - ignored_kw_names = list() - duplicates = list() - - for line in args.input: - old_name, new_name = line.split(args.separator) - if '$' in old_name: - ignored_kw_names.append((old_name, new_name[:-1])) - elif old_name in kw_names.keys(): - duplicates.append((old_name, new_name[:-1])) - else: - kw_names[old_name] = new_name[:-1] - - # Remove duplicates: - for old_name, _ in duplicates: - new_name = kw_names.pop(old_name, None) - if new_name: - duplicates.append((old_name, new_name)) - - # Find KW names which are parts of other KW names: - for old_name in kw_names.keys(): - count = 0 - for key in kw_names.keys(): - if old_name in key: - count += 1 - if old_name in kw_names[key]: - if old_name != key: - count += 1 - if count > 1: - duplicates.append((old_name, kw_names[old_name])) - kw_names.pop(old_name) - - return kw_names, ignored_kw_names, duplicates - - -def rename_keywords(file_list, kw_names, args): - """Rename the keywords in specified files. - - :param file_list: List of files to be processed. - :param kw_names: Dictionary where the key is the old name and the value is - the new name - :type file_list: list - :type kw_names: dict - """ - - kw_not_found = list() - - for old_name, new_name in kw_names.items(): - kw_found = False - if args.verbosity > 0: - print("\nFrom: {}\n To: {}\n".format(old_name, new_name)) - for file_name in file_list: - tmp_file_name = file_name + ".new" - with open(file_name) as file_read: - file_write = open(tmp_file_name, 'w') - occurrences = 0 - for line in file_read: - new_line = re.sub(old_name, new_name, line) - file_write.write(new_line) - if new_line != line: - occurrences += 1 - if occurrences: - kw_found = True - if args.verbosity > 1: - print(" {:3d}: {}".format(occurrences, file_name)) - file_write.close() - rename(tmp_file_name, file_name) - if not kw_found: - kw_not_found.append(old_name) - - if args.verbosity > 0: - print("\nKeywords not found:") - for item in kw_not_found: - print(" {}".format(item)) - - -def parse_args(): - """Parse arguments from command line. - - :returns: Parsed arguments. - :rtype: ArgumentParser - """ - - parser = argparse.ArgumentParser(description=__doc__, - formatter_class=argparse. - RawDescriptionHelpFormatter) - parser.add_argument("-i", "--input", - required=True, - type=argparse.FileType('r'), - help="Text file with the old keyword name and the new " - "keyword name separated by separator per line.") - parser.add_argument("-s", "--separator", - default=";", - type=str, - help="Separator which separates the old and the new " - "keyword name.") - parser.add_argument("-d", "--dir", - required=True, - type=str, - help="Directory with robot files where the keywords " - "should be recursively searched.") - parser.add_argument("-v", "--verbosity", action="count", - help="Set the output verbosity.") - return parser.parse_args() - - -@time_interval -def main(): - """Main function.""" - - args = parse_args() - - kw_names, ignored_kw_names, duplicates = read_keywords(args) - - file_list = get_files(args.dir, "robot") - - if args.verbosity > 2: - print("\nList of files to be processed:") - for item in file_list: - print(" {}".format(item)) - print("\n{} files to be processed.\n".format(len(file_list))) - - print("\nList of keywords to be renamed:") - for item in kw_names: - print(" {}".format(item)) - print("\n{} keywords to be renamed.\n".format(len(kw_names))) - - rename_keywords(file_list, kw_names, args) - - if args.verbosity >= 0: - print("\nIgnored keywords: ({})".format(len(ignored_kw_names))) - for old, new in ignored_kw_names: - print(" From: {}\n To: {}\n".format(old, new)) - - print("\nIgnored duplicates ({}):".format(len(duplicates))) - for old, new in duplicates: - print(" From: {}\n To: {}\n".format(old, new)) - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/resources/tools/report_gen/conf.py b/resources/tools/report_gen/conf.py index c28c404a34..4baf5bb184 100644 --- a/resources/tools/report_gen/conf.py +++ b/resources/tools/report_gen/conf.py @@ -67,8 +67,8 @@ rst_epilog = """ .. |virl-image-centos| replace:: centos-7.3-1611_2017-02-23_1.4 .. _tag documentation rst file: https://git.fd.io/csit/tree/docs/tag_documentation.rst?h=rls1704 -.. _TRex intallation: https://git.fd.io/csit/tree/resources/tools/t-rex/t-rex-installer.sh?h=rls1704 -.. _TRex driver: https://git.fd.io/csit/tree/resources/tools/t-rex/t-rex-stateless-profile.py?h=rls1704 +.. _TRex intallation: https://git.fd.io/csit/tree/resources/tools/trex/trex_installer.sh?h=rls1704 +.. _TRex driver: https://git.fd.io/csit/tree/resources/tools/trex/trex_stateless_profile.py?h=rls1704 .. _CSIT Honeycomb Functional Tests Documentation: https://docs.fd.io/csit/rls1704/doc/tests.func.html .. _CSIT Testpmd Performance Tests Documentation: https://docs.fd.io/csit/rls1704/doc/tests.perf.html .. _CSIT VPP Functional Tests Documentation: https://docs.fd.io/csit/rls1704/doc/tests.func.html diff --git a/resources/tools/robot_output_parser.py b/resources/tools/robot_output_parser.py deleted file mode 100755 index b9ad8f8aa9..0000000000 --- a/resources/tools/robot_output_parser.py +++ /dev/null @@ -1,208 +0,0 @@ -#!/usr/bin/python - -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Script parses the data taken by robot framework (output.xml) and dumps -interested values into XML output file.""" - -import argparse -import re -import sys -import xml.etree.ElementTree as ET - -from robot.api import ExecutionResult, ResultVisitor - - -class ExecutionChecker(ResultVisitor): - """Iterates through test cases.""" - - tc_regexp = re.compile(ur'^tc\d+-((\d+)B|IMIX)-(\d)t(\d)c-(.*)') - rate_regexp = re.compile(ur'^[\D\d]*FINAL_RATE:\s(\d+\.\d+)[\D\d]*') - lat_regexp = re.compile(ur'^[\D\d]*'\ - ur'LAT_\d+%NDR:\s\[\'(-?\d+\/-?\d+\/-?\d+)\','\ - ur'\s\'(-?\d+\/-?\d+\/-?\d+)\'\]\s\n'\ - ur'LAT_\d+%NDR:\s\[\'(-?\d+\/-?\d+\/-?\d+)\','\ - ur'\s\'(-?\d+\/-?\d+\/-?\d+)\'\]\s\n'\ - ur'LAT_\d+%NDR:\s\[\'(-?\d+\/-?\d+\/-?\d+)\','\ - ur'\s\'(-?\d+\/-?\d+\/-?\d+)\'\]') - - def __init__(self, args): - self.root = ET.Element('build', - attrib={'vdevice': args.vdevice}) - - def visit_suite(self, suite): - """Implements traversing through the suite and its direct children. - - :param suite: Suite to process. - :type suite: Suite - :return: Nothing. - """ - if self.start_suite(suite) is not False: - suite.suites.visit(self) - suite.tests.visit(self) - self.end_suite(suite) - - def start_suite(self, suite): - """Called when suite starts. - - :param suite: Suite to process. - :type suite: Suite - :return: Nothing. - """ - pass - - def end_suite(self, suite): - """Called when suite ends. - - :param suite: Suite to process. - :type suite: Suite - :return: Nothing. - """ - pass - - def visit_test(self, test): - """Implements traversing through the test. - - :param test: Test to process. - :type test: Test - :return: Nothing. - """ - if self.start_test(test) is not False: - self.end_test(test) - - def start_test(self, test): - """Called when test starts. - - :param test: Test to process. - :type test: Test - :return: Nothing. - """ - if any("NDRPDRDISC" in tag for tag in test.tags): - if test.status == 'PASS': - tags = [] - for tag in test.tags: - tags.append(tag) - - test_elem = ET.SubElement( - self.root, "S" + test.parent.name.replace(" ", "")) - test_elem.attrib['name'] = test.parent.name - test_elem.attrib['framesize'] = str(re.search( - self.tc_regexp, test.name).group(1)) - test_elem.attrib['threads'] = str(re.search( - self.tc_regexp, test.name).group(3)) - test_elem.attrib['cores'] = str(re.search( - self.tc_regexp, test.name).group(4)) - if any("NDRDISC" in tag for tag in test.tags): - try: - test_elem.attrib['lat_100'] = str(re.search( - self.lat_regexp, test.message).group(1)) + '/' +\ - str(re.search(self.lat_regexp, test.message). - group(2)) - except AttributeError: - test_elem.attrib['lat_100'] = "-1/-1/-1/-1/-1/-1" - try: - test_elem.attrib['lat_50'] = str(re.search( - self.lat_regexp, test.message).group(3)) + '/' +\ - str(re.search(self.lat_regexp, test.message). - group(4)) - except AttributeError: - test_elem.attrib['lat_50'] = "-1/-1/-1/-1/-1/-1" - try: - test_elem.attrib['lat_10'] = str(re.search( - self.lat_regexp, test.message).group(5)) + '/' +\ - str(re.search(self.lat_regexp, test.message). - group(6)) - except AttributeError: - test_elem.attrib['lat_10'] = "-1/-1/-1/-1/-1/-1" - test_elem.attrib['tags'] = ', '.join(tags) - try: - test_elem.text = str(re.search( - self.rate_regexp, test.message).group(1)) - except AttributeError: - test_elem.text = "-1" - - def end_test(self, test): - """Called when test ends. - - :param test: Test to process. - :type test: Test - :return: Nothing. - """ - pass - - -def parse_tests(args): - """Process data from robot output.xml file and return XML data. - - :param args: Parsed arguments. - :type args: ArgumentParser - - :return: XML formatted output. - :rtype: ElementTree - """ - - result = ExecutionResult(args.input) - checker = ExecutionChecker(args) - result.visit(checker) - - return checker.root - - -def print_error(msg): - """Print error message on stderr. - - :param msg: Error message to print. - :type msg: str - :return: nothing - """ - - sys.stderr.write(msg + '\n') - - -def parse_args(): - """Parse arguments from cmd line. - - :return: Parsed arguments. - :rtype ArgumentParser - """ - - parser = argparse.ArgumentParser() - parser.add_argument("-i", "--input", - required=True, - type=argparse.FileType('r'), - help="Robot XML log file") - parser.add_argument("-o", "--output", - required=True, - type=argparse.FileType('w'), - help="XML output file") - parser.add_argument("-v", "--vdevice", - required=False, - default="", - type=str, - help="VPP version") - - return parser.parse_args() - - -def main(): - """Main function.""" - - args = parse_args() - - root = parse_tests(args) - ET.ElementTree.write(ET.ElementTree(root), args.output) - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/resources/tools/scripts/download_hc_build_pkgs.sh b/resources/tools/scripts/download_hc_build_pkgs.sh new file mode 100755 index 0000000000..6683499956 --- /dev/null +++ b/resources/tools/scripts/download_hc_build_pkgs.sh @@ -0,0 +1,96 @@ +#!/bin/bash + +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex + +STREAM=$1 +OS=$2 + +# Download the latest VPP and VPP plugin .deb packages +URL="https://nexus.fd.io/service/local/artifact/maven/content" +VER="RELEASE" +VPP_GROUP="io.fd.vpp" +NSH_GROUP="io.fd.nsh_sfc" +NSH_ARTIFACTS="vpp-nsh-plugin" + +if [ "${OS}" == "ubuntu1404" ]; then + OS="ubuntu.trusty.main" + PACKAGE="deb deb.md5" + CLASS="deb" + VPP_ARTIFACTS="vpp vpp-dbg vpp-dev vpp-dpdk-dkms vpp-lib vpp-plugins vpp-api-java" +elif [ "${OS}" == "ubuntu1604" ]; then + OS="ubuntu.xenial.main" + PACKAGE="deb deb.md5" + CLASS="deb" + VPP_ARTIFACTS="vpp vpp-dbg vpp-dev vpp-dpdk-dkms vpp-lib vpp-plugins vpp-api-java" +elif [ "${OS}" == "centos7" ]; then + OS="centos7" + PACKAGE="rpm rpm.md5" + CLASS="" + VPP_ARTIFACTS="vpp vpp-debuginfo vpp-devel vpp-lib vpp-plugins vpp-api-java" +fi + +REPO="fd.io.${STREAM}.${OS}" + +for ART in ${VPP_ARTIFACTS}; do + for PAC in ${PACKAGE}; do + curl "${URL}?r=${REPO}&g=${VPP_GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit + done +done + +for ART in ${NSH_ARTIFACTS}; do + for PAC in ${PACKAGE}; do + curl "${URL}?r=${REPO}&g=${NSH_GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit + done +done + +# verify downloaded packages +if [ "${OS}" == "centos7" ]; then + FILES=*.rpm +else + FILES=*.deb +fi + +for FILE in ${FILES}; do + echo " "${FILE} >> ${FILE}.md5 +done +for MD5FILE in *.md5; do + md5sum -c ${MD5FILE} || exit + rm ${MD5FILE} +done + +# install vpp-api-java, this extracts jvpp .jar files into usr/share/java +if [ "${OS}" == "centos7" ]; then + sudo rpm --nodeps --install vpp-api-java* +else + sudo dpkg --ignore-depends=vpp --install vpp-api-java* +fi + +# install jvpp jars into maven repo, so that maven picks them up when building hc2vpp +version=`../jvpp-version` + +current_dir=`pwd` +cd /usr/share/java + +for item in jvpp*.jar; do + # Example filename: jvpp-registry-17.01-20161206.125556-1.jar + # ArtifactId = jvpp-registry + # Version = 17.01 + basefile=$(basename -s .jar "$item") + artifactId=$(echo "$basefile" | cut -d '-' -f 1-2) + mvn install:install-file -Dfile=${item} -DgroupId=io.fd.vpp -DartifactId=${artifactId} -Dversion=${version} -Dpackaging=jar -Dmaven.repo.local=/tmp/r -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r +done + +cd ${current_dir} \ No newline at end of file diff --git a/resources/tools/scripts/download_hc_pkgs.sh b/resources/tools/scripts/download_hc_pkgs.sh new file mode 100755 index 0000000000..23e0be4b16 --- /dev/null +++ b/resources/tools/scripts/download_hc_pkgs.sh @@ -0,0 +1,99 @@ +#!/bin/bash + +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex + +STREAM=$1 +OS=$2 + +URL="https://nexus.fd.io/service/local/artifact/maven/content" +VER="RELEASE" +GROUP="io.fd.vpp" +HC_GROUP="io.fd.hc2vpp" +NSH_GROUP="io.fd.nsh_sfc" +HC_ARTIFACTS="honeycomb" +NSH_ARTIFACTS="vpp-nsh-plugin" + +if [ "${OS}" == "ubuntu1404" ]; then + OS="ubuntu.trusty.main" + PACKAGE="deb deb.md5" + CLASS="deb" + VPP_ARTIFACTS="vpp vpp-dbg vpp-dev vpp-lib vpp-plugins vpp-api-java" + DPDK_ARTIFACTS="vpp-dpdk-dkms" +elif [ "${OS}" == "ubuntu1604" ]; then + OS="ubuntu.xenial.main" + PACKAGE="deb deb.md5" + CLASS="deb" + VPP_ARTIFACTS="vpp vpp-dbg vpp-dev vpp-lib vpp-plugins vpp-api-java" + DPDK_ARTIFACTS="vpp-dpdk-dkms" +elif [ "${OS}" == "centos7" ]; then + OS="centos7" + PACKAGE="rpm rpm.md5" + CLASS="" + VPP_ARTIFACTS="vpp vpp-debuginfo vpp-devel vpp-lib vpp-plugins vpp-api-java" + DPDK_ARTIFACTS="" +fi + +REPO="fd.io.${STREAM}.${OS}" + +# download latest honeycomb, vpp-dpdk and nsh packages +for ART in ${HC_ARTIFACTS}; do + for PAC in ${PACKAGE}; do + curl "${URL}?r=${REPO}&g=${HC_GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit + done +done + +for ART in ${DPDK_ARTIFACTS}; do + for PAC in ${PACKAGE}; do + curl "${URL}?r=${REPO}&g=${GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit + done +done + +for ART in ${NSH_ARTIFACTS}; do + for PAC in ${PACKAGE}; do + curl "${URL}?r=${REPO}&g=${NSH_GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit + done +done + +# determine VPP dependency +if [ "${OS}" == "centos7" ]; then + VER=`rpm -qpR honeycomb*.rpm | grep 'vpp ' | cut -d ' ' -f 3` + VER=${VER}.x86_64 +else + VER=`dpkg -I honeycomb*.deb | grep -oP 'vpp \(= \K[^\)]+'` + VER=${VER}_amd64 +fi + +# download VPP packages +for ART in ${VPP_ARTIFACTS}; do + for PAC in ${PACKAGE}; do + curl "${URL}?r=${REPO}&g=${GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit + done +done + +# verify downloaded package +if [ "${OS}" == "centos7" ]; then + FILES=*.rpm +else + FILES=*.deb +fi + +for FILE in ${FILES}; do + echo " "${FILE} >> ${FILE}.md5 +done +for MD5FILE in *.md5; do + md5sum -c ${MD5FILE} || exit + rm ${MD5FILE} +done \ No newline at end of file diff --git a/resources/tools/scripts/download_install_vpp_pkgs.sh b/resources/tools/scripts/download_install_vpp_pkgs.sh new file mode 100755 index 0000000000..8928a2fee2 --- /dev/null +++ b/resources/tools/scripts/download_install_vpp_pkgs.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex + +URL="https://nexus.fd.io/service/local/artifact/maven/content" +VER="RELEASE" +GROUP="io.fd.vpp" + +if [ -f "/etc/redhat-release" ]; then + trap 'rm -f *.rpm.md5; exit' EXIT + trap 'rm -f *.rpm.md5;rm -f *.rpm; exit' ERR + + VPP_REPO_URL_PATH="./VPP_REPO_URL_CENTOS" + if [ -e "$VPP_REPO_URL_PATH" ]; then + VPP_REPO_URL=$(cat $VPP_REPO_URL_PATH) + REPO=$(echo ${VPP_REPO_URL#https://nexus.fd.io/content/repositories/}) + REPO=$(echo ${REPO%/io/fd/vpp/}) + else + REPO='fd.io.master.centos7' + FILES=*.rpm + MD5FILES=*.rpm.md5 + fi + + ARTIFACTS="vpp vpp-debuginfo vpp-devel vpp-lib vpp-plugins" + PACKAGE="rpm rpm.md5" + CLASS="" + VPP_INSTALL_COMMAND="rpm -ivh *.rpm" +else + trap 'rm -f *.deb.md5; exit' EXIT + trap 'rm -f *.deb.md5;rm -f *.deb; exit' ERR + + VPP_REPO_URL_PATH="./VPP_REPO_URL_UBUNTU" + if [ -e "$VPP_REPO_URL_PATH" ]; then + VPP_REPO_URL=$(cat $VPP_REPO_URL_PATH) + REPO=$(echo ${VPP_REPO_URL#https://nexus.fd.io/content/repositories/}) + REPO=$(echo ${REPO%/io/fd/vpp/}) + else + REPO='fd.io.master.ubuntu.xenial.main' + FILES=*.deb + MD5FILES=*.deb.md5 + fi + + ARTIFACTS="vpp vpp-dbg vpp-dev vpp-dpdk-dkms vpp-lib vpp-plugins" + PACKAGE="deb deb.md5" + CLASS="deb" + VPP_INSTALL_COMMAND="dpkg -i *.deb" +fi + +for ART in ${ARTIFACTS}; do + for PAC in $PACKAGE; do + curl "${URL}?r=${REPO}&g=${GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit + done +done + +for FILE in ${FILES}; do + echo " "${FILE} >> ${FILE}.md5 +done + +for MD5FILE in ${MD5FILES}; do + md5sum -c ${MD5FILE} || exit +done + +if [ "$1" != "--skip-install" ]; then + echo Installing VPP + sudo ${VPP_INSTALL_COMMAND} +else + echo VPP Installation skipped +fi diff --git a/resources/tools/scripts/download_install_vpp_rpms.sh b/resources/tools/scripts/download_install_vpp_rpms.sh new file mode 100644 index 0000000000..29e09216db --- /dev/null +++ b/resources/tools/scripts/download_install_vpp_rpms.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex + +VER="RELEASE" + +VPP_REPO_URL_PATH="./VPP_REPO_URL" +if [ -e "$VPP_REPO_URL_PATH" ]; then + VPP_REPO_URL=$(cat $VPP_REPO_URL_PATH) + REPO=$(echo ${VPP_REPO_URL#https://nexus.fd.io/content/repositories/}) + REPO=$(echo ${REPO%/fd.io.centos7}) +else + REPO='https://nexus.fd.io/content/repositories/fd.io.centos7' +fi + +ARTIFACTS="vpp vpp-lib vpp-debuginfo vpp-devel vpp-python-api vpp-plugins" + + +yum-config-manager --add-repo $REPO + +if [ "$1" != "--skip-install" ]; then + echo Installing VPP + sudo yum install -y $ARTIFACTS +else + echo VPP Installation skipped +fi diff --git a/resources/tools/scripts/download_nsh_sfc_pkgs.sh b/resources/tools/scripts/download_nsh_sfc_pkgs.sh new file mode 100755 index 0000000000..2261f084e5 --- /dev/null +++ b/resources/tools/scripts/download_nsh_sfc_pkgs.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -ex + +trap 'rm -f *.deb.md5; exit' EXIT +trap 'rm -f *.deb.md5;rm -f *.deb; exit' ERR + +STREAM=$1 +OS=$2 + +URL="https://nexus.fd.io/service/local/artifact/maven/content" +VER="RELEASE" +GROUP="io.fd.vpp" +NSH_GROUP="io.fd.nsh_sfc" +VPP_ARTIFACTS="vpp vpp-dbg vpp-dev vpp-dpdk-dkms vpp-lib vpp-plugins vpp-api-java vpp-api-python vpp-api-lua" +NSH_ARTIFACTS="vpp-nsh-plugin" + +if [ "${OS}" == "ubuntu1404" ]; then + OS="ubuntu.trusty.main" + PACKAGE="deb deb.md5" + CLASS="deb" +elif [ "${OS}" == "ubuntu1604" ]; then + OS="ubuntu.xenial.main" + PACKAGE="deb deb.md5" + CLASS="deb" +elif [ "${OS}" == "centos7" ]; then + OS="centos7" + PACKAGE="rpm rpm.md5" + CLASS="rpm" +fi + +REPO="fd.io.${STREAM}.${OS}" + +for ART in ${VPP_ARTIFACTS}; do + for PAC in $PACKAGE; do + curl "${URL}?r=${REPO}&g=${GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit + done +done + +for ART in ${NSH_ARTIFACTS}; do + for PAC in $PACKAGE; do + curl "${URL}?r=${REPO}&g=${NSH_GROUP}&a=${ART}&p=${PAC}&v=${VER}&c=${CLASS}" -O -J || exit + done +done + +for FILE in *.deb; do + echo " "${FILE} >> ${FILE}.md5 +done + +for MD5FILE in *.md5; do + md5sum -c ${MD5FILE} || exit +done diff --git a/resources/tools/scripts/rename_robot_keywords.py b/resources/tools/scripts/rename_robot_keywords.py new file mode 100755 index 0000000000..9f27b4aaec --- /dev/null +++ b/resources/tools/scripts/rename_robot_keywords.py @@ -0,0 +1,243 @@ +#!/usr/bin/python + +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""This script renames the given robot keywords in the given directory +recursively. + +Example: + + ./rename_robot_keywords.py -i kws.csv -s ";" -d ~/ws/vpp/git/csit/ -vvv + + Input file "kws.csv" is CSV file exported from e.g. MS Excel. Its structure + must be: + + + + One keyword per line. + +""" + +import argparse +import sys +import re +from os import walk, rename +from os.path import join + + +def time_interval(func): + """Decorator function to measure the time spent by the decorated function. + + :param func: Decorated function. + :type func: Callable object. + :returns: Wrapper function. + :rtype: Callable object. + """ + + import time + + def wrapper(*args, **kwargs): + start = time.clock() + result = func(*args, **kwargs) + stop = time.clock() + print("\nRenaming done in {:.5g} seconds\n". + format(stop - start)) + return result + return wrapper + + +def get_files(path, extension): + """Generates the list of files to process. + + :param path: Path to files. + :param extension: Extension of files to process. If it is the empty string, + all files will be processed. + :type path: str + :type extension: str + :returns: List of files to process. + :rtype: list + """ + + file_list = list() + for root, dirs, files in walk(path): + for filename in files: + if extension: + if filename.endswith(extension): + file_list.append(join(root, filename)) + else: + file_list.append(join(root, filename)) + + return file_list + + +def read_keywords(args): + """This function reads the keywords from the input file and creates: + + - a dictionary where the key is the old name and the value is the new name, + these keywords will be further processed. + - a list of keywords which will not be processed, typically keywords with + argument(s) in its names. + - a list of duplicates - duplicated keyword names or names which are parts + of another keyword name, they will not be processed. + + :param args: Parsed arguments. + :type args: ArgumentParser + :returns: keyword names - dictionary where the key is the old name and the + value is the new name; ignored keyword names - list of keywords which will + not be processed; duplicates - duplicated keyword names or names which are + parts of another keyword name, they will not be processed. + :rtype: tuple(dict, list, list) + """ + + kw_names = dict() + ignored_kw_names = list() + duplicates = list() + + for line in args.input: + old_name, new_name = line.split(args.separator) + if '$' in old_name: + ignored_kw_names.append((old_name, new_name[:-1])) + elif old_name in kw_names.keys(): + duplicates.append((old_name, new_name[:-1])) + else: + kw_names[old_name] = new_name[:-1] + + # Remove duplicates: + for old_name, _ in duplicates: + new_name = kw_names.pop(old_name, None) + if new_name: + duplicates.append((old_name, new_name)) + + # Find KW names which are parts of other KW names: + for old_name in kw_names.keys(): + count = 0 + for key in kw_names.keys(): + if old_name in key: + count += 1 + if old_name in kw_names[key]: + if old_name != key: + count += 1 + if count > 1: + duplicates.append((old_name, kw_names[old_name])) + kw_names.pop(old_name) + + return kw_names, ignored_kw_names, duplicates + + +def rename_keywords(file_list, kw_names, args): + """Rename the keywords in specified files. + + :param file_list: List of files to be processed. + :param kw_names: Dictionary where the key is the old name and the value is + the new name + :type file_list: list + :type kw_names: dict + """ + + kw_not_found = list() + + for old_name, new_name in kw_names.items(): + kw_found = False + if args.verbosity > 0: + print("\nFrom: {}\n To: {}\n".format(old_name, new_name)) + for file_name in file_list: + tmp_file_name = file_name + ".new" + with open(file_name) as file_read: + file_write = open(tmp_file_name, 'w') + occurrences = 0 + for line in file_read: + new_line = re.sub(old_name, new_name, line) + file_write.write(new_line) + if new_line != line: + occurrences += 1 + if occurrences: + kw_found = True + if args.verbosity > 1: + print(" {:3d}: {}".format(occurrences, file_name)) + file_write.close() + rename(tmp_file_name, file_name) + if not kw_found: + kw_not_found.append(old_name) + + if args.verbosity > 0: + print("\nKeywords not found:") + for item in kw_not_found: + print(" {}".format(item)) + + +def parse_args(): + """Parse arguments from command line. + + :returns: Parsed arguments. + :rtype: ArgumentParser + """ + + parser = argparse.ArgumentParser(description=__doc__, + formatter_class=argparse. + RawDescriptionHelpFormatter) + parser.add_argument("-i", "--input", + required=True, + type=argparse.FileType('r'), + help="Text file with the old keyword name and the new " + "keyword name separated by separator per line.") + parser.add_argument("-s", "--separator", + default=";", + type=str, + help="Separator which separates the old and the new " + "keyword name.") + parser.add_argument("-d", "--dir", + required=True, + type=str, + help="Directory with robot files where the keywords " + "should be recursively searched.") + parser.add_argument("-v", "--verbosity", action="count", + help="Set the output verbosity.") + return parser.parse_args() + + +@time_interval +def main(): + """Main function.""" + + args = parse_args() + + kw_names, ignored_kw_names, duplicates = read_keywords(args) + + file_list = get_files(args.dir, "robot") + + if args.verbosity > 2: + print("\nList of files to be processed:") + for item in file_list: + print(" {}".format(item)) + print("\n{} files to be processed.\n".format(len(file_list))) + + print("\nList of keywords to be renamed:") + for item in kw_names: + print(" {}".format(item)) + print("\n{} keywords to be renamed.\n".format(len(kw_names))) + + rename_keywords(file_list, kw_names, args) + + if args.verbosity >= 0: + print("\nIgnored keywords: ({})".format(len(ignored_kw_names))) + for old, new in ignored_kw_names: + print(" From: {}\n To: {}\n".format(old, new)) + + print("\nIgnored duplicates ({}):".format(len(duplicates))) + for old, new in duplicates: + print(" From: {}\n To: {}\n".format(old, new)) + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/resources/tools/scripts/robot_output_parser.py b/resources/tools/scripts/robot_output_parser.py new file mode 100755 index 0000000000..b9ad8f8aa9 --- /dev/null +++ b/resources/tools/scripts/robot_output_parser.py @@ -0,0 +1,208 @@ +#!/usr/bin/python + +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Script parses the data taken by robot framework (output.xml) and dumps +interested values into XML output file.""" + +import argparse +import re +import sys +import xml.etree.ElementTree as ET + +from robot.api import ExecutionResult, ResultVisitor + + +class ExecutionChecker(ResultVisitor): + """Iterates through test cases.""" + + tc_regexp = re.compile(ur'^tc\d+-((\d+)B|IMIX)-(\d)t(\d)c-(.*)') + rate_regexp = re.compile(ur'^[\D\d]*FINAL_RATE:\s(\d+\.\d+)[\D\d]*') + lat_regexp = re.compile(ur'^[\D\d]*'\ + ur'LAT_\d+%NDR:\s\[\'(-?\d+\/-?\d+\/-?\d+)\','\ + ur'\s\'(-?\d+\/-?\d+\/-?\d+)\'\]\s\n'\ + ur'LAT_\d+%NDR:\s\[\'(-?\d+\/-?\d+\/-?\d+)\','\ + ur'\s\'(-?\d+\/-?\d+\/-?\d+)\'\]\s\n'\ + ur'LAT_\d+%NDR:\s\[\'(-?\d+\/-?\d+\/-?\d+)\','\ + ur'\s\'(-?\d+\/-?\d+\/-?\d+)\'\]') + + def __init__(self, args): + self.root = ET.Element('build', + attrib={'vdevice': args.vdevice}) + + def visit_suite(self, suite): + """Implements traversing through the suite and its direct children. + + :param suite: Suite to process. + :type suite: Suite + :return: Nothing. + """ + if self.start_suite(suite) is not False: + suite.suites.visit(self) + suite.tests.visit(self) + self.end_suite(suite) + + def start_suite(self, suite): + """Called when suite starts. + + :param suite: Suite to process. + :type suite: Suite + :return: Nothing. + """ + pass + + def end_suite(self, suite): + """Called when suite ends. + + :param suite: Suite to process. + :type suite: Suite + :return: Nothing. + """ + pass + + def visit_test(self, test): + """Implements traversing through the test. + + :param test: Test to process. + :type test: Test + :return: Nothing. + """ + if self.start_test(test) is not False: + self.end_test(test) + + def start_test(self, test): + """Called when test starts. + + :param test: Test to process. + :type test: Test + :return: Nothing. + """ + if any("NDRPDRDISC" in tag for tag in test.tags): + if test.status == 'PASS': + tags = [] + for tag in test.tags: + tags.append(tag) + + test_elem = ET.SubElement( + self.root, "S" + test.parent.name.replace(" ", "")) + test_elem.attrib['name'] = test.parent.name + test_elem.attrib['framesize'] = str(re.search( + self.tc_regexp, test.name).group(1)) + test_elem.attrib['threads'] = str(re.search( + self.tc_regexp, test.name).group(3)) + test_elem.attrib['cores'] = str(re.search( + self.tc_regexp, test.name).group(4)) + if any("NDRDISC" in tag for tag in test.tags): + try: + test_elem.attrib['lat_100'] = str(re.search( + self.lat_regexp, test.message).group(1)) + '/' +\ + str(re.search(self.lat_regexp, test.message). + group(2)) + except AttributeError: + test_elem.attrib['lat_100'] = "-1/-1/-1/-1/-1/-1" + try: + test_elem.attrib['lat_50'] = str(re.search( + self.lat_regexp, test.message).group(3)) + '/' +\ + str(re.search(self.lat_regexp, test.message). + group(4)) + except AttributeError: + test_elem.attrib['lat_50'] = "-1/-1/-1/-1/-1/-1" + try: + test_elem.attrib['lat_10'] = str(re.search( + self.lat_regexp, test.message).group(5)) + '/' +\ + str(re.search(self.lat_regexp, test.message). + group(6)) + except AttributeError: + test_elem.attrib['lat_10'] = "-1/-1/-1/-1/-1/-1" + test_elem.attrib['tags'] = ', '.join(tags) + try: + test_elem.text = str(re.search( + self.rate_regexp, test.message).group(1)) + except AttributeError: + test_elem.text = "-1" + + def end_test(self, test): + """Called when test ends. + + :param test: Test to process. + :type test: Test + :return: Nothing. + """ + pass + + +def parse_tests(args): + """Process data from robot output.xml file and return XML data. + + :param args: Parsed arguments. + :type args: ArgumentParser + + :return: XML formatted output. + :rtype: ElementTree + """ + + result = ExecutionResult(args.input) + checker = ExecutionChecker(args) + result.visit(checker) + + return checker.root + + +def print_error(msg): + """Print error message on stderr. + + :param msg: Error message to print. + :type msg: str + :return: nothing + """ + + sys.stderr.write(msg + '\n') + + +def parse_args(): + """Parse arguments from cmd line. + + :return: Parsed arguments. + :rtype ArgumentParser + """ + + parser = argparse.ArgumentParser() + parser.add_argument("-i", "--input", + required=True, + type=argparse.FileType('r'), + help="Robot XML log file") + parser.add_argument("-o", "--output", + required=True, + type=argparse.FileType('w'), + help="XML output file") + parser.add_argument("-v", "--vdevice", + required=False, + default="", + type=str, + help="VPP version") + + return parser.parse_args() + + +def main(): + """Main function.""" + + args = parse_args() + + root = parse_tests(args) + ET.ElementTree.write(ET.ElementTree(root), args.output) + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/resources/tools/scripts/topo_installation.py b/resources/tools/scripts/topo_installation.py new file mode 100755 index 0000000000..0488bdae69 --- /dev/null +++ b/resources/tools/scripts/topo_installation.py @@ -0,0 +1,149 @@ +#!/usr/bin/env python + +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""This script provides copy and installation of VPP build deb packages. + As destinations are used all DUT nodes from the topology file.""" + +import sys +import argparse +from yaml import load + +from resources.libraries.python.ssh import SSH + + +def ssh_no_error(ssh, cmd, sudo=False): + """Execute a command over ssh channel, and log and exit if the command + fails. + + :param ssh: SSH() object connected to a node. + :param cmd: Command line to execute on remote node. + :type ssh: SSH() object + :type cmd: str + :return: stdout from the SSH command. + :rtype: str + """ + + if sudo: + ret, stdo, stde = ssh.exec_command_sudo(cmd, timeout=60) + else: + ret, stdo, stde = ssh.exec_command(cmd, timeout=60) + + if ret != 0: + print 'Command execution failed: "{}"'.format(cmd) + print 'stdout: {0}'.format(stdo) + print 'stderr: {0}'.format(stde) + raise RuntimeError('Unexpected ssh command failure') + + return stdo + + +def ssh_ignore_error(ssh, cmd, sudo=False): + """Execute a command over ssh channel, ignore errors. + + :param ssh: SSH() object connected to a node. + :param cmd: Command line to execute on remote node. + :type ssh: SSH() object + :type cmd: str + :return: stdout from the SSH command. + :rtype: str + """ + + if sudo: + ret, stdo, stde = ssh.exec_command_sudo(cmd) + else: + ret, stdo, stde = ssh.exec_command(cmd) + + if ret != 0: + print 'Command execution failed: "{}"'.format(cmd) + print 'stdout: {0}'.format(stdo) + print 'stderr: {0}'.format(stde) + + return stdo + + +def main(): + """Copy and installation of VPP packages.""" + + parser = argparse.ArgumentParser() + parser.add_argument("-t", "--topo", required=True, + help="Topology file") + parser.add_argument("-d", "--directory", required=True, + help="Installation directory") + parser.add_argument("-p", "--packages", required=False, nargs='+', + help="Packages paths to copy") + parser.add_argument("-c", "--cancel", help="Cancel installation", + action="store_true") + args = parser.parse_args() + topology_file = args.topo + packages = args.packages + install_dir = args.directory + cancel_installation = args.cancel + + work_file = open(topology_file) + topology = load(work_file.read())['nodes'] + + ssh = SSH() + for node in topology: + if topology[node]['type'] == "DUT": + print "###TI host: {}".format(topology[node]['host']) + ssh.connect(topology[node]) + + if cancel_installation: + # Remove installation directory on DUT + cmd = "rm -r {}".format(install_dir) + stdout = ssh_ignore_error(ssh, cmd) + print "###TI {}".format(stdout) + + cmd = "dpkg -l | grep vpp" + ret, _, _ = ssh.exec_command(cmd) + if ret == 0: + # Try to fix interrupted installations + cmd = 'dpkg --configure -a' + stdout = ssh_no_error(ssh, cmd, sudo=True) + print "###TI {}".format(stdout) + # Try to remove installed vpp.* packages + cmd = 'apt-get purge -y "vpp.*"' + stdout = ssh_no_error(ssh, cmd, sudo=True) + print "###TI {}".format(stdout) + else: + # Create installation directory on DUT + cmd = "rm -r {0}; mkdir {0}".format(install_dir) + stdout = ssh_no_error(ssh, cmd) + print "###TI {}".format(stdout) + + # Copy packages from local path to installation dir + for deb in packages: + print "###TI scp: {}".format(deb) + ssh.scp(local_path=deb, remote_path=install_dir) + + cmd = "dpkg -l | grep vpp" + ret, _, _ = ssh.exec_command(cmd) + if ret == 0: + # Try to fix interrupted installations + cmd = 'dpkg --configure -a' + stdout = ssh_no_error(ssh, cmd, sudo=True) + print "###TI {}".format(stdout) + # Try to remove installed vpp.* packages + cmd = 'apt-get purge -y "vpp.*"' + stdout = ssh_no_error(ssh, cmd, sudo=True) + print "###TI {}".format(stdout) + + # Installation of VPP deb packages + cmd = "dpkg -i --force-all {}/*.deb".format(install_dir) + stdout = ssh_no_error(ssh, cmd, sudo=True) + print "###TI {}".format(stdout) + +if __name__ == "__main__": + sys.exit(main()) diff --git a/resources/tools/scripts/topo_reservation.py b/resources/tools/scripts/topo_reservation.py new file mode 100755 index 0000000000..4b5ed2459c --- /dev/null +++ b/resources/tools/scripts/topo_reservation.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python + +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""This script provides simple reservation mechanism to avoid + simultaneous use of nodes listed in topology file. + As source of truth is used DUT1 node from the topology file.""" + +import sys +import argparse +from resources.libraries.python.ssh import SSH +from yaml import load + +RESERVATION_DIR = "/tmp/reservation_dir" + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("-t", "--topo", required=True, + help="Topology file") + parser.add_argument("-c", "--cancel", help="Cancel reservation", + action="store_true") + args = parser.parse_args() + topology_file = args.topo + cancel_reservation = args.cancel + + work_file = open(topology_file) + topology = load(work_file.read())['nodes'] + + #we are using DUT1 node because we expect DUT1 to be a linux host + #we don't use TG because we don't expect TG to be linux only host + try: + tg_node = topology["DUT1"] + except KeyError: + print "Topology file does not contain 'DUT1' node" + return 1 + + ssh = SSH() + ssh.connect(tg_node) + + #For system reservation we use mkdir it is an atomic operation and we can + #store additional data (time, client_ID, ..) within reservation directory + if cancel_reservation: + ret, _, err = ssh.exec_command("rm -r {}".format(RESERVATION_DIR)) + else: + ret, _, err = ssh.exec_command("mkdir {}".format(RESERVATION_DIR)) + + if ret != 0: + print("{} unsuccessful:\n{}". + format(("Cancellation " if cancel_reservation else "Reservation"), + err)) + return ret + +if __name__ == "__main__": + sys.exit(main()) diff --git a/resources/tools/t-rex/stream_profiles/profile_trex_stateless_base_class.py b/resources/tools/t-rex/stream_profiles/profile_trex_stateless_base_class.py deleted file mode 100755 index a6cb97485a..0000000000 --- a/resources/tools/t-rex/stream_profiles/profile_trex_stateless_base_class.py +++ /dev/null @@ -1,212 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Base class for stream profiles for T-rex traffic generator. -""" - -import sys -import socket -import struct - -from random import choice -from string import letters - -from trex_stl_lib.api import * - - -class TrafficStreamsBaseClass(object): - """Base class for stream profiles for T-rex traffic generator. - """ - - STREAM_TABLE = { - 'IMIX_v4': [ - {'size': 60, 'pps': 28, 'isg': 0}, - {'size': 590, 'pps': 20, 'isg': 0.1}, - {'size': 1514, 'pps': 4, 'isg': 0.2} - ], - 'IMIX_v4_1': [ - {'size': 64, 'pps': 28, 'isg': 0}, - {'size': 570, 'pps': 16, 'isg': 0.1}, - {'size': 1518, 'pps': 4, 'isg': 0.2} - ] - } - - def __init__(self): - - # Default value of frame size, it will be overwritten by the value of - # "framesize" parameter of "get_streams" method. - self.framesize = 64 - - # If needed, add your own parameters. - - def _gen_payload(self, length): - """Generate payload. - - If needed, implement your own algorithm. - - :param length: Length of generated payload. - :type length: int - :returns: The generated payload. - :rtype: str - """ - - payload = "" - for _ in range(length): - payload += choice(letters) - - return payload - - def _get_start_end_ipv6(self, start_ip, end_ip): - """Get start host and number of hosts from IPv6 as integer. - - :param start_ip: Start IPv6. - :param end_ip: End IPv6. - :type start_ip: string - :type end_ip: string - :return: Start host, number of hosts. - :rtype tuple of int - :raises: ValueError if start_ip is greater then end_ip. - :raises: socket.error if the IP addresses are not valid IPv6 addresses. - """ - - try: - ip1 = socket.inet_pton(socket.AF_INET6, start_ip) - ip2 = socket.inet_pton(socket.AF_INET6, end_ip) - - hi1, lo1 = struct.unpack('!QQ', ip1) - hi2, lo2 = struct.unpack('!QQ', ip2) - - if ((hi1 << 64) | lo1) > ((hi2 << 64) | lo2): - raise ValueError("IPv6: start_ip is greater then end_ip") - - return lo1, abs(int(lo1) - int(lo2)) - - except socket.error as err: - print(err) - raise - - def define_packets(self): - """Define the packets to be sent from the traffic generator. - - This method MUST return: - - return base_pkt_a, base_pkt_b, vm1, vm2 - - vm1 and vm2 CAN be None. - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - raise NotImplementedError - - def create_streams(self): - """Create traffic streams. - - Implement your own traffic streams. - - :returns: Traffic streams. - :rtype: list - """ - - base_pkt_a, base_pkt_b, vm1, vm2 = self.define_packets() - - # In most cases you will not have to change the code below: - - # Frame size is defined as an integer, e.g. 64, 1518: - if isinstance(self.framesize, int): - - # Create a base packet and pad it to size - payload_len = max(0, self.framesize - len(base_pkt_a) - 4) # No FCS - - # Direction 0 --> 1 - pkt_a = STLPktBuilder( - pkt=base_pkt_a / self._gen_payload(payload_len), - vm=vm1) - # Direction 1 --> 0 - pkt_b = STLPktBuilder( - pkt=base_pkt_b / self._gen_payload(payload_len), - vm=vm2) - - # Packets for latency measurement: - # Direction 0 --> 1 - pkt_lat_a = STLPktBuilder( - pkt=base_pkt_a / self._gen_payload(payload_len)) - # Direction 1 --> 0 - pkt_lat_b = STLPktBuilder( - pkt=base_pkt_b / self._gen_payload(payload_len)) - - # Create the streams: - # Direction 0 --> 1 - stream1 = STLStream(packet=pkt_a, mode=STLTXCont(pps=9000)) - # Direction 1 --> 0 - # second traffic stream with a phase of 10ns (inter-stream gap) - stream2 = STLStream(packet=pkt_b, isg=10.0, - mode=STLTXCont(pps=9000)) - - # Streams for latency measurement: - # Direction 0 --> 1 - lat_stream1 = STLStream(packet=pkt_lat_a, - flow_stats=STLFlowLatencyStats(pg_id=0), - mode=STLTXCont(pps=9000)) - # Direction 1 --> 0 - # second traffic stream with a phase of 10ns (inter-stream gap) - lat_stream2 = STLStream(packet=pkt_lat_b, isg=10.0, - flow_stats=STLFlowLatencyStats(pg_id=1), - mode=STLTXCont(pps=9000)) - - return [stream1, stream2, lat_stream1, lat_stream2] - - # Frame size is defined as a string, e.g.IMIX_v4_1: - elif isinstance(self.framesize, str): - - stream1 = [] - stream2 = [] - - for stream in self.STREAM_TABLE[self.framesize]: - payload_len_a = max(0, stream['size'] - len(base_pkt_a) - 4) - payload_len_b = max(0, stream['size'] - len(base_pkt_b) - 4) - # Create a base packet and pad it to size - pkt_a = STLPktBuilder( - pkt=base_pkt_a / self._gen_payload(payload_len_a), - vm=vm1) - pkt_b = STLPktBuilder( - pkt=base_pkt_b / self._gen_payload(payload_len_b), - vm=vm2) - - # Create the streams: - stream1.append(STLStream(packet=pkt_a, - isg=stream['isg'], - mode=STLTXCont(pps=stream['pps']))) - stream2.append(STLStream(packet=pkt_b, - isg=stream['isg'], - mode=STLTXCont(pps=stream['pps']))) - streams = list() - streams.extend(stream1) - streams.extend(stream2) - - return streams - - def get_streams(self, **kwargs): - """Get traffic streams created by "create_streams" method. - - If needed, add your own parameters. - - :param kwargs: Key-value pairs used by "create_streams" method while - creating streams. - :returns: Traffic streams. - :rtype: list - """ - - self.framesize = kwargs['framesize'] - - return self.create_streams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-2n-ethip4-ip4src253.py b/resources/tools/t-rex/stream_profiles/trex-sl-2n-ethip4-ip4src253.py deleted file mode 100755 index f9a030b9eb..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-2n-ethip4-ip4src253.py +++ /dev/null @@ -1,94 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IP / - - Direction 0 --> 1: - - Source IP address range: 10.10.10.2 - 10.10.10.254 - - Destination IP address range: 20.20.20.2 - - Direction 1 --> 0: - - Source IP address range: 20.20.20.2 - 20.20.20.254 - - Destination IP address range: 10.10.10.2 -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '10.10.10.2' - self.p1_src_end_ip = '10.10.10.254' - self.p1_dst_start_ip = '20.20.20.2' - - self.p2_src_start_ip = '20.20.20.2' - self.p2_src_end_ip = '20.20.20.254' - self.p2_dst_start_ip = '10.10.10.2' - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IP | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - # Direction 0 --> 1 - base_pkt_a = Ether() / IP(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip, - proto=61) - # Direction 1 --> 0 - base_pkt_b = Ether() / IP(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip, - proto=61) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([STLVmFlowVar(name="src", - min_value=self.p1_src_start_ip, - max_value=self.p1_src_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"), - STLVmFixIpv4(offset="IP")], - split_by_field="src") - # Direction 1 --> 0 - vm2 = STLScVmRaw([STLVmFlowVar(name="src", - min_value=self.p2_src_start_ip, - max_value=self.p2_src_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"), - STLVmFixIpv4(offset="IP")], - split_by_field="src") - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst1.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst1.py deleted file mode 100755 index 68b492175b..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst1.py +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IP / - - Direction 0 --> 1: - - Source IP address range: 10.0.0.1 - - Destination IP address range: 20.0.0.0 - - Direction 1 --> 0: - - Source IP address range: 20.0.0.1 - - Destination IP address range: 10.0.0.0 -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_ip = '10.0.0.1' - self.p1_dst_ip = '20.0.0.0' - - self.p2_src_ip = '20.0.0.1' - self.p2_dst_ip = '10.0.0.0' - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IP | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - # Direction 0 --> 1 - base_pkt_a = (Ether() / - IP(src=self.p1_src_ip, dst=self.p1_dst_ip, proto=61)) - # Direction 1 --> 0 - base_pkt_b = (Ether() / - IP(src=self.p2_src_ip, dst=self.p2_dst_ip, proto=61)) - - return base_pkt_a, base_pkt_b, None, None - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst100.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst100.py deleted file mode 100755 index 86f423a153..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst100.py +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IP / - - Direction 0 --> 1: - - Source IP address range: 10.0.0.1 - - Destination IP address range: 20.0.0.0 - 20.0.0.99 - - Direction 1 --> 0: - - Source IP address range: 20.0.0.1 - - Destination IP address range: 10.0.0.0 - 10.0.0.99 -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '10.0.0.1' - self.p1_dst_start_ip = '20.0.0.0' - self.p1_dst_end_ip = '20.0.0.99' - - self.p2_src_start_ip = '20.0.0.1' - self.p2_dst_start_ip = '10.0.0.0' - self.p2_dst_end_ip = '10.0.0.99' - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IP | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - # Direction 0 --> 1 - base_pkt_a = (Ether() / - IP(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip, - proto=61)) - # Direction 1 --> 0 - base_pkt_b = (Ether() / - IP(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip, - proto=61)) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([STLVmFlowVar(name="dst", - min_value=self.p1_dst_start_ip, - max_value=self.p1_dst_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), - STLVmFixIpv4(offset="IP")], - split_by_field="dst") - # Direction 1 --> 0 - vm2 = STLScVmRaw([STLVmFlowVar(name="dst", - min_value=self.p2_dst_start_ip, - max_value=self.p2_dst_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), - STLVmFixIpv4(offset="IP")], - split_by_field="dst") - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst1000.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst1000.py deleted file mode 100755 index 569c06360f..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst1000.py +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IP / - - Direction 0 --> 1: - - Source IP address range: 10.0.0.1 - - Destination IP address range: 20.0.0.0 - 20.0.3.231 - - Direction 1 --> 0: - - Source IP address range: 20.0.0.1 - - Destination IP address range: 10.0.0.0 - 10.0.3.231 -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '10.0.0.1' - self.p1_dst_start_ip = '20.0.0.0' - self.p1_dst_end_ip = '20.0.3.231' - - self.p2_src_start_ip = '20.0.0.1' - self.p2_dst_start_ip = '10.0.0.0' - self.p2_dst_end_ip = '10.0.3.231' - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IP | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - # Direction 0 --> 1 - base_pkt_a = (Ether() / - IP(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip, - proto=61)) - # Direction 1 --> 0 - base_pkt_b = (Ether() / - IP(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip, - proto=61)) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([STLVmFlowVar(name="dst", - min_value=self.p1_dst_start_ip, - max_value=self.p1_dst_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), - STLVmFixIpv4(offset="IP")], - split_by_field="dst") - # Direction 1 --> 0 - vm2 = STLScVmRaw([STLVmFlowVar(name="dst", - min_value=self.p2_dst_start_ip, - max_value=self.p2_dst_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), - STLVmFixIpv4(offset="IP")], - split_by_field="dst") - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst10000.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst10000.py deleted file mode 100755 index 373076f596..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst10000.py +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IP / - - Direction 0 --> 1: - - Source IP address range: 10.0.0.1 - - Destination IP address range: 20.0.0.0 - 20.0.39.15 - - Direction 1 --> 0: - - Source IP address range: 20.0.0.1 - - Destination IP address range: 10.0.0.0 - 10.0.39.15 -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '10.0.0.1' - self.p1_dst_start_ip = '20.0.0.0' - self.p1_dst_end_ip = '20.0.39.15' - - self.p2_src_start_ip = '20.0.0.1' - self.p2_dst_start_ip = '10.0.0.0' - self.p2_dst_end_ip = '10.0.39.15' - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IP | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - # Direction 0 --> 1 - base_pkt_a = (Ether() / - IP(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip, - proto=61)) - # Direction 1 --> 0 - base_pkt_b = (Ether() / - IP(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip, - proto=61)) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([STLVmFlowVar(name="dst", - min_value=self.p1_dst_start_ip, - max_value=self.p1_dst_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), - STLVmFixIpv4(offset="IP")], - split_by_field="dst") - # Direction 1 --> 0 - vm2 = STLScVmRaw([STLVmFlowVar(name="dst", - min_value=self.p2_dst_start_ip, - max_value=self.p2_dst_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), - STLVmFixIpv4(offset="IP")], - split_by_field="dst") - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst100000.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst100000.py deleted file mode 100755 index 3b27e9a9e0..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst100000.py +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IP / - - Direction 0 --> 1: - - Source IP address range: 10.0.0.1 - - Destination IP address range: 20.0.0.0 - 20.1.134.159 - - Direction 1 --> 0: - - Source IP address range: 20.0.0.1 - - Destination IP address range: 10.0.0.0 - 10.1.134.159 -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '10.0.0.1' - self.p1_dst_start_ip = '20.0.0.0' - self.p1_dst_end_ip = '20.1.134.159' - - self.p2_src_start_ip = '20.0.0.1' - self.p2_dst_start_ip = '10.0.0.0' - self.p2_dst_end_ip = '10.1.134.159' - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IP | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - # Direction 0 --> 1 - base_pkt_a = (Ether() / - IP(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip, - proto=61)) - # Direction 1 --> 0 - base_pkt_b = (Ether() / - IP(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip, - proto=61)) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([STLVmFlowVar(name="dst", - min_value=self.p1_dst_start_ip, - max_value=self.p1_dst_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), - STLVmFixIpv4(offset="IP")], - split_by_field="dst") - # Direction 1 --> 0 - vm2 = STLScVmRaw([STLVmFlowVar(name="dst", - min_value=self.p2_dst_start_ip, - max_value=self.p2_dst_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), - STLVmFixIpv4(offset="IP")], - split_by_field="dst") - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst1000000.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst1000000.py deleted file mode 100755 index 076951b566..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst1000000.py +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IP / - - Direction 0 --> 1: - - Source IP address range: 10.0.0.1 - - Destination IP address range: 20.0.0.0 - 20.15.66.63 - - Direction 1 --> 0: - - Source IP address range: 20.0.0.1 - - Destination IP address range: 10.0.0.0 - 10.15.66.63 -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '10.0.0.1' - self.p1_dst_start_ip = '20.0.0.0' - self.p1_dst_end_ip = '20.15.66.63' - - self.p2_src_start_ip = '20.0.0.1' - self.p2_dst_start_ip = '10.0.0.0' - self.p2_dst_end_ip = '10.15.66.63' - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IP | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - # Direction 0 --> 1 - base_pkt_a = (Ether() / - IP(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip, - proto=61)) - # Direction 1 --> 0 - base_pkt_b = (Ether() / - IP(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip, - proto=61)) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([STLVmFlowVar(name="dst", - min_value=self.p1_dst_start_ip, - max_value=self.p1_dst_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), - STLVmFixIpv4(offset="IP")], - split_by_field="dst") - # Direction 1 --> 0 - vm2 = STLScVmRaw([STLVmFlowVar(name="dst", - min_value=self.p2_dst_start_ip, - max_value=self.p2_dst_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), - STLVmFixIpv4(offset="IP")], - split_by_field="dst") - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst253.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst253.py deleted file mode 100755 index 684af82ce1..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst253.py +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IP / - - Direction 0 --> 1: - - Source IP address range: 20.20.20.2 - - Destination IP address range: 2.1.1.2 - 2.1.1.254 - - Direction 1 --> 0: - - Source IP address range: 10.10.10.2 - - Destination IP address range: 1.1.1.2 - 1.1.1.254 -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '20.20.20.2' - self.p1_dst_start_ip = '2.1.1.2' - self.p1_dst_end_ip = '2.1.1.254' - - self.p2_src_start_ip = '10.10.10.2' - self.p2_dst_start_ip = '1.1.1.2' - self.p2_dst_end_ip = '1.1.1.254' - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IP | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - # Direction 0 --> 1 - base_pkt_a = (Ether() / - IP(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip, - proto=61)) - # Direction 1 --> 0 - base_pkt_b = (Ether() / - IP(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip, - proto=61)) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([STLVmFlowVar(name="dst", - min_value=self.p1_dst_start_ip, - max_value=self.p1_dst_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), - STLVmFixIpv4(offset="IP")], - split_by_field="dst") - # Direction 1 --> 0 - vm2 = STLScVmRaw([STLVmFlowVar(name="dst", - min_value=self.p2_dst_start_ip, - max_value=self.p2_dst_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), - STLVmFixIpv4(offset="IP")], - split_by_field="dst") - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst253_l3fwd.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst253_l3fwd.py deleted file mode 100755 index 55a79942de..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4dst253_l3fwd.py +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IP / - - Direction 0 --> 1: - - Source IP address range: 20.20.20.2 - - Destination IP address range: 1.1.1.2 - 1.1.1.254 - - Direction 1 --> 0: - - Source IP address range: 10.10.10.2 - - Destination IP address range: 2.1.1.2 - 2.1.1.254 -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '20.20.20.2' - self.p1_dst_start_ip = '1.1.1.2' - self.p1_dst_end_ip = '1.1.1.254' - - self.p2_src_start_ip = '10.10.10.2' - self.p2_dst_start_ip = '2.1.1.2' - self.p2_dst_end_ip = '2.1.1.254' - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IP | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - # Direction 0 --> 1 - base_pkt_a = (Ether() / - IP(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip, - proto=61)) - # Direction 1 --> 0 - base_pkt_b = (Ether() / - IP(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip, - proto=61)) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([STLVmFlowVar(name="dst", - min_value=self.p1_dst_start_ip, - max_value=self.p1_dst_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), - STLVmFixIpv4(offset="IP")], - split_by_field="dst") - # Direction 1 --> 0 - vm2 = STLScVmRaw([STLVmFlowVar(name="dst", - min_value=self.p2_dst_start_ip, - max_value=self.p2_dst_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), - STLVmFixIpv4(offset="IP")], - split_by_field="dst") - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4src253.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4src253.py deleted file mode 100755 index f9a030b9eb..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4src253.py +++ /dev/null @@ -1,94 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IP / - - Direction 0 --> 1: - - Source IP address range: 10.10.10.2 - 10.10.10.254 - - Destination IP address range: 20.20.20.2 - - Direction 1 --> 0: - - Source IP address range: 20.20.20.2 - 20.20.20.254 - - Destination IP address range: 10.10.10.2 -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '10.10.10.2' - self.p1_src_end_ip = '10.10.10.254' - self.p1_dst_start_ip = '20.20.20.2' - - self.p2_src_start_ip = '20.20.20.2' - self.p2_src_end_ip = '20.20.20.254' - self.p2_dst_start_ip = '10.10.10.2' - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IP | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - # Direction 0 --> 1 - base_pkt_a = Ether() / IP(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip, - proto=61) - # Direction 1 --> 0 - base_pkt_b = Ether() / IP(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip, - proto=61) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([STLVmFlowVar(name="src", - min_value=self.p1_src_start_ip, - max_value=self.p1_src_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"), - STLVmFixIpv4(offset="IP")], - split_by_field="src") - # Direction 1 --> 0 - vm2 = STLScVmRaw([STLVmFlowVar(name="src", - min_value=self.p2_src_start_ip, - max_value=self.p2_src_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"), - STLVmFixIpv4(offset="IP")], - split_by_field="src") - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4src254.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4src254.py deleted file mode 100755 index 0a2a4a4564..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4-ip4src254.py +++ /dev/null @@ -1,94 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IP / - - Direction 0 --> 1: - - Source IP address range: 10.10.10.1 - 10.10.10.254 - - Destination IP address range: 20.20.20.1 - - Direction 1 --> 0: - - Source IP address range: 20.20.20.1 - 20.20.20.254 - - Destination IP address range: 10.10.10.1 -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '10.10.10.1' - self.p1_src_end_ip = '10.10.10.254' - self.p1_dst_start_ip = '20.20.20.1' - - self.p2_src_start_ip = '20.20.20.1' - self.p2_src_end_ip = '20.20.20.254' - self.p2_dst_start_ip = '10.10.10.1' - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IP | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - # Direction 0 --> 1 - base_pkt_a = Ether() / IP(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip, - proto=61) - # Direction 1 --> 0 - base_pkt_b = Ether() / IP(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip, - proto=61) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([STLVmFlowVar(name="src", - min_value=self.p1_src_start_ip, - max_value=self.p1_src_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"), - STLVmFixIpv4(offset="IP")], - split_by_field="src") - # Direction 1 --> 0 - vm2 = STLScVmRaw([STLVmFlowVar(name="src", - min_value=self.p2_src_start_ip, - max_value=self.p2_src_end_ip, - size=4, op="inc"), - STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"), - STLVmFixIpv4(offset="IP")], - split_by_field="src") - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-1000u15p.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-1000u15p.py deleted file mode 100755 index c9f6a27b89..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-1000u15p.py +++ /dev/null @@ -1,116 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IP / UDP - - Direction 0 --> 1: - - Source IP address range: 20.0.0.0 - 20.0.3.231 - - Destination IP address range: 12.0.0.2 - - Source UDP port range: 1024 - 1038 - - Destination UDP port range: 1024 - - Direction 1 --> 0: - - Source IP address range: 12.0.0.2 - - Destination IP address range: 200.0.0.0 - - Source UDP port range: 1024 - - Destination UDP port range: 1024 - 16023 -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '20.0.0.0' - self.p1_src_end_ip = '20.0.3.231' - self.p1_dst_start_ip = '12.0.0.2' - - self.p2_src_start_ip = '12.0.0.2' - self.p2_src_end_ip = '12.0.0.2' - self.p2_dst_start_ip = '200.0.0.0' - - # UDP ports used in packet headers. - self.p1_src_start_udp_port = 1024 - self.p1_src_end_udp_port = 1038 - self.p1_dst_start_udp_port = 1024 - - self.p2_src_start_udp_port = 1024 - self.p2_dst_start_udp_port = 1024 - self.p2_dst_end_udp_port = 16023 - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IP | UDP | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - # Direction 0 --> 1 - base_pkt_a = (Ether() / - IP(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip, - proto=17) / - UDP(sport=self.p1_src_start_udp_port, - dport=self.p1_dst_start_udp_port)) - # Direction 1 --> 0 - base_pkt_b = (Ether() / - IP(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip, - proto=17) / - UDP(sport=self.p2_src_start_udp_port, - dport=self.p2_dst_start_udp_port)) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([ - STLVmTupleGen(ip_min=self.p1_src_start_ip, - ip_max=self.p1_src_end_ip, - port_min=self.p1_src_start_udp_port, - port_max=self.p1_src_end_udp_port, - name="tuple"), - STLVmWrFlowVar(fv_name="tuple.ip", pkt_offset="IP.src"), - STLVmFixIpv4(offset="IP"), - STLVmWrFlowVar(fv_name="tuple.port", pkt_offset="UDP.sport") - ]) - # Direction 0 --> 1 - vm2 = STLScVmRaw([ - STLVmFlowVar(name="dport", - min_value=self.p2_dst_start_udp_port, - max_value=self.p2_dst_end_udp_port, - size=2, op="inc"), - STLVmWrFlowVar(fv_name="dport", pkt_offset="UDP.dport") - ]) - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-100u15p.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-100u15p.py deleted file mode 100755 index 87a5d3067d..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-100u15p.py +++ /dev/null @@ -1,116 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IP / UDP - - Direction 0 --> 1: - - Source IP address range: 20.0.0.0 - 20.0.0.99 - - Destination IP address range: 12.0.0.2 - - Source UDP port range: 1024 - 1038 - - Destination UDP port range: 1024 - - Direction 1 --> 0: - - Source IP address range: 12.0.0.2 - - Destination IP address range: 200.0.0.0 - - Source UDP port range: 1024 - - Destination UDP port range: 1024 - 2523 -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '20.0.0.0' - self.p1_src_end_ip = '20.0.0.99' - self.p1_dst_start_ip = '12.0.0.2' - - self.p2_src_start_ip = '12.0.0.2' - self.p2_src_end_ip = '12.0.0.2' - self.p2_dst_start_ip = '200.0.0.0' - - # UDP ports used in packet headers. - self.p1_src_start_udp_port = 1024 - self.p1_src_end_udp_port = 1038 - self.p1_dst_start_udp_port = 1024 - - self.p2_src_start_udp_port = 1024 - self.p2_dst_start_udp_port = 1024 - self.p2_dst_end_udp_port = 2523 - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IP | UDP | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - # Direction 0 --> 1 - base_pkt_a = (Ether() / - IP(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip, - proto=17) / - UDP(sport=self.p1_src_start_udp_port, - dport=self.p1_dst_start_udp_port)) - # Direction 1 --> 0 - base_pkt_b = (Ether() / - IP(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip, - proto=17) / - UDP(sport=self.p2_src_start_udp_port, - dport=self.p2_dst_start_udp_port)) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([ - STLVmTupleGen(ip_min=self.p1_src_start_ip, - ip_max=self.p1_src_end_ip, - port_min=self.p1_src_start_udp_port, - port_max=self.p1_src_end_udp_port, - name="tuple"), - STLVmWrFlowVar(fv_name="tuple.ip", pkt_offset="IP.src"), - STLVmFixIpv4(offset="IP"), - STLVmWrFlowVar(fv_name="tuple.port", pkt_offset="UDP.sport") - ]) - # Direction 0 --> 1 - vm2 = STLScVmRaw([ - STLVmFlowVar(name="dport", - min_value=self.p2_dst_start_udp_port, - max_value=self.p2_dst_end_udp_port, - size=2, op="inc"), - STLVmWrFlowVar(fv_name="dport", pkt_offset="UDP.dport") - ]) - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-10u15p.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-10u15p.py deleted file mode 100755 index 74f2f0d1e5..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-10u15p.py +++ /dev/null @@ -1,116 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IP / UDP - - Direction 0 --> 1: - - Source IP address range: 20.0.0.0 - 20.0.0.9 - - Destination IP address range: 12.0.0.2 - - Source UDP port range: 1024 - 1038 - - Destination UDP port range: 1024 - - Direction 1 --> 0: - - Source IP address range: 12.0.0.2 - - Destination IP address range: 200.0.0.0 - - Source UDP port range: 1024 - - Destination UDP port range: 1024 - 1173 -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '20.0.0.0' - self.p1_src_end_ip = '20.0.0.9' - self.p1_dst_start_ip = '12.0.0.2' - - self.p2_src_start_ip = '12.0.0.2' - #self.p2_src_end_ip = '12.0.0.2' - self.p2_dst_start_ip = '200.0.0.0' - - # UDP ports used in packet headers. - self.p1_src_start_udp_port = 1024 - self.p1_src_end_udp_port = 1038 - self.p1_dst_start_udp_port = 1024 - - self.p2_src_start_udp_port = 1024 - self.p2_dst_start_udp_port = 1024 - self.p2_dst_end_udp_port = 1173 - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IP | UDP | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - # Direction 0 --> 1 - base_pkt_a = (Ether() / - IP(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip, - proto=17) / - UDP(sport=self.p1_src_start_udp_port, - dport=self.p1_dst_start_udp_port)) - # Direction 1 --> 0 - base_pkt_b = (Ether() / - IP(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip, - proto=17) / - UDP(sport=self.p2_src_start_udp_port, - dport=self.p2_dst_start_udp_port)) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([ - STLVmTupleGen(ip_min=self.p1_src_start_ip, - ip_max=self.p1_src_end_ip, - port_min=self.p1_src_start_udp_port, - port_max=self.p1_src_end_udp_port, - name="tuple"), - STLVmWrFlowVar(fv_name="tuple.ip", pkt_offset="IP.src"), - STLVmFixIpv4(offset="IP"), - STLVmWrFlowVar(fv_name="tuple.port", pkt_offset="UDP.sport") - ]) - # Direction 0 --> 1 - vm2 = STLScVmRaw([ - STLVmFlowVar(name="dport", - min_value=self.p2_dst_start_udp_port, - max_value=self.p2_dst_end_udp_port, - size=2, op="inc"), - STLVmWrFlowVar(fv_name="dport", pkt_offset="UDP.dport") - ]) - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-1u15p.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-1u15p.py deleted file mode 100755 index 220ec05e31..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-1u15p.py +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IP / UDP - - Direction 0 --> 1: - - Source IP address range: 20.0.0.0 - - Destination IP address range: 12.0.0.2 - - Source UDP port range: 1024 - 1038 - - Destination UDP port range: 1024 - - Direction 1 --> 0: - - Source IP address range: 12.0.0.2 - - Destination IP address range: 200.0.0.0 - - Source UDP port range: 1024 - - Destination UDP port range: 1024 - 1038 -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '20.0.0.0' - self.p1_src_end_ip = '20.0.0.0' - self.p1_dst_start_ip = '12.0.0.2' - - self.p2_src_start_ip = '12.0.0.2' - self.p2_src_end_ip = '12.0.0.2' - self.p2_dst_start_ip = '200.0.0.0' - - # UDP ports used in packet headers. - self.p1_src_start_udp_port = 1024 - self.p1_src_end_udp_port = 1038 - self.p1_dst_start_udp_port = 1024 - - self.p2_src_start_udp_port = 1024 - self.p2_dst_start_udp_port = 1024 - self.p2_dst_end_udp_port = 1038 - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IP | UDP | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - # Direction 0 --> 1 - base_pkt_a = (Ether() / - IP(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip, - proto=17) / - UDP(sport=self.p1_src_start_udp_port, - dport=self.p1_dst_start_udp_port)) - # Direction 1 --> 0 - base_pkt_b = (Ether() / - IP(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip, - proto=17) / - UDP(sport=self.p2_src_start_udp_port, - dport=self.p2_dst_start_udp_port)) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([ - STLVmFlowVar(name="sport", - min_value=self.p1_src_start_udp_port, - max_value=self.p1_src_end_udp_port, - size=2, op="inc"), - STLVmWrFlowVar(fv_name="sport", pkt_offset="UDP.sport") - ]) - # Direction 0 --> 1 - vm2 = STLScVmRaw([ - STLVmFlowVar(name="dport", - min_value=self.p2_dst_start_udp_port, - max_value=self.p2_dst_end_udp_port, - size=2, op="inc"), - STLVmWrFlowVar(fv_name="dport", pkt_offset="UDP.dport") - ]) - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-1u1p.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-1u1p.py deleted file mode 100755 index 939e4ce42c..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-1u1p.py +++ /dev/null @@ -1,88 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IP / UDP - - Direction 0 --> 1: - - Source IP address range: 20.0.0.0 - - Destination IP address range: 12.0.0.2 - - Source UDP port range: 1024 - - Destination UDP port range: 1024 - - Direction 1 --> 0: - - Source IP address range: 12.0.0.2 - - Destination IP address range: 200.0.0.0 - - Source UDP port range: 1024 - - Destination UDP port range: 1028 -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_ip = '20.0.0.0' - self.p1_dst_ip = '12.0.0.2' - - self.p2_src_ip = '12.0.0.2' - self.p2_dst_ip = '200.0.0.0' - - # UDP ports used in packet headers. - self.p1_src_udp_port = 1024 - self.p1_dst_udp_port = 1024 - - self.p2_src_udp_port = 1024 - self.p2_dst_udp_port = 1028 - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IP | UDP | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - # Direction 0 --> 1 - base_pkt_a = (Ether() / - IP(src=self.p1_src_ip, dst=self.p1_dst_ip, proto=17) / - UDP(sport=self.p1_src_udp_port, - dport=self.p1_dst_udp_port)) - # Direction 1 --> 0 - base_pkt_b = (Ether() / - IP(src=self.p2_src_ip, dst=self.p2_dst_ip, proto=17) / - UDP(sport=self.p2_src_udp_port, - dport=self.p2_dst_udp_port)) - - return base_pkt_a, base_pkt_b, None, None - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-2000u15p.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-2000u15p.py deleted file mode 100755 index 7d5651812e..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-2000u15p.py +++ /dev/null @@ -1,116 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IP / UDP - - Direction 0 --> 1: - - Source IP address range: 20.0.0.0 - 20.0.7.207 - - Destination IP address range: 12.0.0.2 - - Source UDP port range: 1024 - 1038 - - Destination UDP port range: 1024 - - Direction 1 --> 0: - - Source IP address range: 12.0.0.2 - - Destination IP address range: 200.0.0.0 - - Source UDP port range: 1024 - - Destination UDP port range: 1024 - 31022 -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '20.0.0.0' - self.p1_src_end_ip = '20.0.7.207' - self.p1_dst_start_ip = '12.0.0.2' - - self.p2_src_start_ip = '12.0.0.2' - self.p2_src_end_ip = '12.0.0.2' - self.p2_dst_start_ip = '200.0.0.0' - - # UDP ports used in packet headers. - self.p1_src_start_udp_port = 1024 - self.p1_src_end_udp_port = 1038 - self.p1_dst_start_udp_port = 1024 - - self.p2_src_start_udp_port = 1024 - self.p2_dst_start_udp_port = 1024 - self.p2_dst_end_udp_port = 31022 - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IP | UDP | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - # Direction 0 --> 1 - base_pkt_a = (Ether() / - IP(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip, - proto=17) / - UDP(sport=self.p1_src_start_udp_port, - dport=self.p1_dst_start_udp_port)) - # Direction 1 --> 0 - base_pkt_b = (Ether() / - IP(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip, - proto=17) / - UDP(sport=self.p2_src_start_udp_port, - dport=self.p2_dst_start_udp_port)) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([ - STLVmTupleGen(ip_min=self.p1_src_start_ip, - ip_max=self.p1_src_end_ip, - port_min=self.p1_src_start_udp_port, - port_max=self.p1_src_end_udp_port, - name="tuple"), - STLVmWrFlowVar(fv_name="tuple.ip", pkt_offset="IP.src"), - STLVmFixIpv4(offset="IP"), - STLVmWrFlowVar(fv_name="tuple.port", pkt_offset="UDP.sport") - ]) - # Direction 0 --> 1 - vm2 = STLScVmRaw([ - STLVmFlowVar(name="dport", - min_value=self.p2_dst_start_udp_port, - max_value=self.p2_dst_end_udp_port, - size=2, op="inc"), - STLVmWrFlowVar(fv_name="dport", pkt_offset="UDP.dport") - ]) - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-4000u15p.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-4000u15p.py deleted file mode 100755 index dab23b8627..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip4udp-4000u15p.py +++ /dev/null @@ -1,116 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IP / UDP - - Direction 0 --> 1: - - Source IP address range: 20.0.0.0 - 20.0.15.159 - - Destination IP address range: 12.0.0.2 - - Source UDP port range: 1024 - 1038 - - Destination UDP port range: 1024 - - Direction 1 --> 0: - - Source IP address range: 12.0.0.2 - - Destination IP address range: 200.0.0.0 - - Source UDP port range: 1024 - - Destination UDP port range: 1024 - 61022 -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '20.0.0.0' - self.p1_src_end_ip = '20.0.15.159' - self.p1_dst_start_ip = '12.0.0.2' - - self.p2_src_start_ip = '12.0.0.2' - self.p2_src_end_ip = '12.0.0.2' - self.p2_dst_start_ip = '200.0.0.0' - - # UDP ports used in packet headers. - self.p1_src_start_udp_port = 1024 - self.p1_src_end_udp_port = 1038 - self.p1_dst_start_udp_port = 1024 - - self.p2_src_start_udp_port = 1024 - self.p2_dst_start_udp_port = 1024 - self.p2_dst_end_udp_port = 61022 - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IP | UDP | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - # Direction 0 --> 1 - base_pkt_a = (Ether() / - IP(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip, - proto=17) / - UDP(sport=self.p1_src_start_udp_port, - dport=self.p1_dst_start_udp_port)) - # Direction 1 --> 0 - base_pkt_b = (Ether() / - IP(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip, - proto=17) / - UDP(sport=self.p2_src_start_udp_port, - dport=self.p2_dst_start_udp_port)) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([ - STLVmTupleGen(ip_min=self.p1_src_start_ip, - ip_max=self.p1_src_end_ip, - port_min=self.p1_src_start_udp_port, - port_max=self.p1_src_end_udp_port, - name="tuple"), - STLVmWrFlowVar(fv_name="tuple.ip", pkt_offset="IP.src"), - STLVmFixIpv4(offset="IP"), - STLVmWrFlowVar(fv_name="tuple.port", pkt_offset="UDP.sport") - ]) - # Direction 0 --> 1 - vm2 = STLScVmRaw([ - STLVmFlowVar(name="dport", - min_value=self.p2_dst_start_udp_port, - max_value=self.p2_dst_end_udp_port, - size=2, op="inc"), - STLVmWrFlowVar(fv_name="dport", pkt_offset="UDP.dport") - ]) - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip6-ip6dst10000.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip6-ip6dst10000.py deleted file mode 100755 index 7a85ddfc05..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip6-ip6dst10000.py +++ /dev/null @@ -1,99 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IPv6 / - - Direction 0 --> 1: - - Source IP address range: 2001:1::1 - - Destination IP address range: 2001:2::0 - 2001:2::270F - - Direction 1 --> 0: - - Source IP address range: 2001:2::1 - - Destination IP address range: 2001:1::0 - 2001:1::270F -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '2001:1::1' - self.p1_dst_start_ip = '2001:2::0' - self.p1_dst_end_ip = '2001:2::270F' - - self.p2_src_start_ip = '2001:2::1' - self.p2_dst_start_ip = '2001:1::0' - self.p2_dst_end_ip = '2001:1::270F' - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IPv6 | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - base_p1, count_p1 = self._get_start_end_ipv6(self.p1_dst_start_ip, - self.p1_dst_end_ip) - base_p2, count_p2 = self._get_start_end_ipv6(self.p2_dst_start_ip, - self.p2_dst_end_ip) - - # Direction 0 --> 1 - base_pkt_a = Ether() / IPv6(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip) - # Direction 1 --> 0 - base_pkt_b = Ether() / IPv6(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([STLVmFlowVar(name="ipv6_dst", - min_value=base_p1, - max_value=base_p1 + count_p1, - size=8, op="inc"), - STLVmWrFlowVar(fv_name="ipv6_dst", - pkt_offset="IPv6.dst", - offset_fixup=8)], - split_by_field="ipv6_dst") - # Direction 1 --> 0 - vm2 = STLScVmRaw([STLVmFlowVar(name="ipv6_dst", - min_value=base_p2, - max_value=base_p2 + count_p2, - size=8, op="inc"), - STLVmWrFlowVar(fv_name="ipv6_dst", - pkt_offset="IPv6.dst", - offset_fixup=8)], - split_by_field="ipv6_dst") - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip6-ip6dst100000.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip6-ip6dst100000.py deleted file mode 100755 index b1948c9de2..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip6-ip6dst100000.py +++ /dev/null @@ -1,99 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IPv6 / - - Direction 0 --> 1: - - Source IP address range: 2001:1::1 - - Destination IP address range: 2001:2::0 - 2001:2::1:869F - - Direction 1 --> 0: - - Source IP address range: 2001:2::1 - - Destination IP address range: 2001:1::0 - 2001:1::1:869F -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '2001:1::1' - self.p1_dst_start_ip = '2001:2::0' - self.p1_dst_end_ip = '2001:2::1:869F' - - self.p2_src_start_ip = '2001:2::1' - self.p2_dst_start_ip = '2001:1::0' - self.p2_dst_end_ip = '2001:1::1:869F' - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IPv6 | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - base_p1, count_p1 = self._get_start_end_ipv6(self.p1_dst_start_ip, - self.p1_dst_end_ip) - base_p2, count_p2 = self._get_start_end_ipv6(self.p2_dst_start_ip, - self.p2_dst_end_ip) - - # Direction 0 --> 1 - base_pkt_a = Ether() / IPv6(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip) - # Direction 1 --> 0 - base_pkt_b = Ether() / IPv6(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([STLVmFlowVar(name="ipv6_dst", - min_value=base_p1, - max_value=base_p1 + count_p1, - size=8, op="inc"), - STLVmWrFlowVar(fv_name="ipv6_dst", - pkt_offset="IPv6.dst", - offset_fixup=8)], - split_by_field="ipv6_dst") - # Direction 1 --> 0 - vm2 = STLScVmRaw([STLVmFlowVar(name="ipv6_dst", - min_value=base_p2, - max_value=base_p2 + count_p2, - size=8, op="inc"), - STLVmWrFlowVar(fv_name="ipv6_dst", - pkt_offset="IPv6.dst", - offset_fixup=8)], - split_by_field="ipv6_dst") - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip6-ip6dst1000000.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip6-ip6dst1000000.py deleted file mode 100755 index ace0dace76..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip6-ip6dst1000000.py +++ /dev/null @@ -1,99 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IPv6 / - - Direction 0 --> 1: - - Source IP address range: 2001:1::1 - - Destination IP address range: 2001:2::0 - 2001:2::F:423F - - Direction 1 --> 0: - - Source IP address range: 2001:2::1 - - Destination IP address range: 2001:1::0 - 2001:1::F:423F -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '2001:1::1' - self.p1_dst_start_ip = '2001:2::0' - self.p1_dst_end_ip = '2001:2::F:423F' - - self.p2_src_start_ip = '2001:2::1' - self.p2_dst_start_ip = '2001:1::0' - self.p2_dst_end_ip = '2001:1::F:423F' - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IPv6 | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - base_p1, count_p1 = self._get_start_end_ipv6(self.p1_dst_start_ip, - self.p1_dst_end_ip) - base_p2, count_p2 = self._get_start_end_ipv6(self.p2_dst_start_ip, - self.p2_dst_end_ip) - - # Direction 0 --> 1 - base_pkt_a = Ether() / IPv6(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip) - # Direction 1 --> 0 - base_pkt_b = Ether() / IPv6(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([STLVmFlowVar(name="ipv6_dst", - min_value=base_p1, - max_value=base_p1 + count_p1, - size=8, op="inc"), - STLVmWrFlowVar(fv_name="ipv6_dst", - pkt_offset="IPv6.dst", - offset_fixup=8)], - split_by_field="ipv6_dst") - # Direction 1 --> 0 - vm2 = STLScVmRaw([STLVmFlowVar(name="ipv6_dst", - min_value=base_p2, - max_value=base_p2 + count_p2, - size=8, op="inc"), - STLVmWrFlowVar(fv_name="ipv6_dst", - pkt_offset="IPv6.dst", - offset_fixup=8)], - split_by_field="ipv6_dst") - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip6-ip6src253.py b/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip6-ip6src253.py deleted file mode 100755 index be900ce2cc..0000000000 --- a/resources/tools/t-rex/stream_profiles/trex-sl-3n-ethip6-ip6src253.py +++ /dev/null @@ -1,99 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Stream profile for T-rex traffic generator. - -Stream profile: - - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. - - Packet: ETH / IPv6 / - - Direction 0 --> 1: - - Source IP address range: 2001:1::2 - 2001:1::FE - - Destination IP address range: 2001:2::2 - - Direction 1 --> 0: - - Source IP address range: 2001:2::2 - 2001:2::FE - - Destination IP address range: 2001:1::2 -""" - -from trex_stl_lib.api import * -from profile_trex_stateless_base_class import TrafficStreamsBaseClass - - -class TrafficStreams(TrafficStreamsBaseClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsBaseClass, self).__init__() - - # IPs used in packet headers. - self.p1_src_start_ip = '2001:1::2' - self.p1_src_end_ip = '2001:1::FE' - self.p1_dst_start_ip = '2001:2::2' - - self.p2_src_start_ip = '2001:2::2' - self.p2_src_end_ip = '2001:2::FE' - self.p2_dst_start_ip = '2001:1::2' - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IPv6 | - - :returns: Packets to be sent from the traffic generator. - :rtype: tuple - """ - - base_p1, count_p1 = self._get_start_end_ipv6(self.p1_src_start_ip, - self.p1_src_end_ip) - base_p2, count_p2 = self._get_start_end_ipv6(self.p2_src_start_ip, - self.p2_src_end_ip) - - # Direction 0 --> 1 - base_pkt_a = Ether() / IPv6(src=self.p1_src_start_ip, - dst=self.p1_dst_start_ip) - # Direction 1 --> 0 - base_pkt_b = Ether() / IPv6(src=self.p2_src_start_ip, - dst=self.p2_dst_start_ip) - - # Direction 0 --> 1 - vm1 = STLScVmRaw([STLVmFlowVar(name="ipv6_src", - min_value=base_p1, - max_value=base_p1 + count_p1, - size=8, op="inc"), - STLVmWrFlowVar(fv_name="ipv6_src", - pkt_offset="IPv6.src", - offset_fixup=8)], - split_by_field="ipv6_src") - # Direction 1 --> 0 - vm2 = STLScVmRaw([STLVmFlowVar(name="ipv6_src", - min_value=base_p2, - max_value=base_p2 + count_p2, - size=8, op="inc"), - STLVmWrFlowVar(fv_name="ipv6_src", - pkt_offset="IPv6.src", - offset_fixup=8)], - split_by_field="ipv6_src") - - return base_pkt_a, base_pkt_b, vm1, vm2 - - -def register(): - """Register this traffic profile to T-rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/tools/t-rex/t-rex-installer.sh b/resources/tools/t-rex/t-rex-installer.sh deleted file mode 100755 index 13891f14a1..0000000000 --- a/resources/tools/t-rex/t-rex-installer.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh - -TREX_VERSION="2.25" - -TREX_DOWNLOAD_REPO="https://github.com/cisco-system-traffic-generator/trex-core/archive/" -TREX_DOWNLOAD_PACKAGE="v${TREX_VERSION}.zip" -TREX_PACKAGE_URL="${TREX_DOWNLOAD_REPO}${TREX_DOWNLOAD_PACKAGE}" -TARGET_DIR="/opt/" -TREX_DIR="trex-core-${TREX_VERSION}/" -TREX_INSTALL_DIR="${TARGET_DIR}${TREX_DIR}" - -if test "$(id -u)" -ne 0 -then - echo "Please use root or sudo to be able to access target installation directory: ${TARGET_DIR}" - exit 1 -fi - -WORKING_DIR=$(mktemp -d) -test $? -eq 0 || exit 1 - -cleanup () { - rm -r ${WORKING_DIR} -} - -trap cleanup EXIT - -test -d ${TREX_INSTALL_DIR} && echo "T-REX aleready installed: ${TREX_INSTALL_DIR}" && exit 0 - -wget -P ${WORKING_DIR} ${TREX_PACKAGE_URL} -test $? -eq 0 || exit 1 - -unzip ${WORKING_DIR}/${TREX_DOWNLOAD_PACKAGE} -d ${TARGET_DIR} -test $? -eq 0 || exit 1 - -cd ${TREX_INSTALL_DIR}/linux_dpdk/ && ./b configure && ./b build || exit 1 -cd ${TREX_INSTALL_DIR}/scripts/ko/src && make && make install || exit 1 - diff --git a/resources/tools/t-rex/t-rex-server-info.py b/resources/tools/t-rex/t-rex-server-info.py deleted file mode 100755 index ac7c7a5427..0000000000 --- a/resources/tools/t-rex/t-rex-server-info.py +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/python - -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""This script uses T-REX stateless API to drive t-rex instance. - -Requirements: -- T-REX: https://github.com/cisco-system-traffic-generator/trex-core - - compiled and running T-REX process (eg. ./t-rex-64 -i -c 4) - - trex_stl_lib.api library -- Script must be executed on a node with T-REX instance - -Functionality: -1. Verify the API functionality and get server information - -""" - -import sys - -sys.path.insert(0, "/opt/trex-core-2.25/scripts/automation/"+\ - "trex_control_plane/stl/") -from trex_stl_lib.api import * - - -def get_server_system_info(): - """Check server info and quit. - - :return: nothing - """ - - # create client - client = STLClient() - - try: - # connect to server - client.connect() - # get server info - print client.get_server_system_info() - - except STLError as ex_error: - print_error(str(ex_error)) - sys.exit(1) - - finally: - client.disconnect() - - -def print_error(msg): - """Print error message on stderr. - - :param msg: Error message to print. - :type msg: string - :return: nothing - """ - - sys.stderr.write(msg+'\n') - - -def main(): - """Main function.""" - - get_server_system_info() - -if __name__ == "__main__": - main() diff --git a/resources/tools/t-rex/t-rex-stateless-profile.py b/resources/tools/t-rex/t-rex-stateless-profile.py deleted file mode 100755 index 0bbd241f8b..0000000000 --- a/resources/tools/t-rex/t-rex-stateless-profile.py +++ /dev/null @@ -1,296 +0,0 @@ -#!/usr/bin/python - -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""This module gets a traffic profile together with other parameters, reads -the profile and sends the traffic. At the end, it measures the packet loss and -latency. -""" - -import sys -import argparse -import json - -sys.path.insert(0, "/opt/trex-core-2.25/scripts/automation/" - "trex_control_plane/stl/") - -from trex_stl_lib.api import * - - -def fmt_latency(lat_min, lat_avg, lat_max): - """Return formatted, rounded latency. - - :param lat_min: Min latency - :param lat_avg: Average latency - :param lat_max: Max latency - :type lat_min: string - :type lat_avg: string - :type lat_max: string - :return: Formatted and rounded output "min/avg/max" - :rtype: string - """ - - try: - t_min = int(round(float(lat_min))) - except ValueError: - t_min = int(-1) - try: - t_avg = int(round(float(lat_avg))) - except ValueError: - t_avg = int(-1) - try: - t_max = int(round(float(lat_max))) - except ValueError: - t_max = int(-1) - - return "/".join(str(tmp) for tmp in (t_min, t_avg, t_max)) - - -def simple_burst(profile_file, duration, framesize, rate, warmup_time, port_0, - port_1, latency, async_start=False): - """Send the traffic and measure packet loss and latency. - - Procedure: - - reads the given traffic profile with streams, - - connects to the T-rex client, - - resets the ports, - - removes all existing streams, - - adds streams from the traffic profile to the ports, - - if the warm-up time is more than 0, sends the warm-up traffic, reads the - statistics, - - clears the statistics from the client, - - starts the traffic, - - waits for the defined time (or runs forever if async mode is defined), - - stops the traffic, - - reads and displays the statistics and - - disconnects from the client. - - :param profile_file: A python module with T-rex traffic profile. - :param framesize: Frame size. - :param duration: Duration of traffic run in seconds (-1=infinite). - :param rate: Traffic rate [percentage, pps, bps]. - :param warmup_time: Traffic warm-up time in seconds, 0 = disable. - :param port_0: Port 0 on the traffic generator. - :param port_1: Port 1 on the traffic generator. - :param latency: With latency stats. - :param async_start: Start the traffic and exit. - :type profile_file: str - :type framesize: int or str - :type duration: int - :type rate: str - :type warmup_time: int - :type port_0: int - :type port_1: int - :type latency: boo; - :type async_start: bool - """ - - client = None - total_rcvd = 0 - total_sent = 0 - lost_a = 0 - lost_b = 0 - lat_a = "-1/-1/-1" - lat_b = "-1/-1/-1" - - # Read the profile: - try: - print("### Profile file:\n{}".format(profile_file)) - profile = STLProfile.load(profile_file, direction=0, port_id=0, - framesize=framesize) - print("\n### Profiles ###\n") - print(profile.dump_to_yaml()) - streams = profile.get_streams() - except STLError: - print("Error while loading profile '{0}'\n".format(profile_file)) - sys.exit(1) - - try: - # Create the client: - client = STLClient(verbose_level=LoggerApi.VERBOSE_QUIET) - # Connect to server: - client.connect() - # Prepare our ports (the machine has 0 <--> 1 with static route): - client.reset(ports=[port_0, port_1]) - client.remove_all_streams(ports=[port_0, port_1]) - - if isinstance(framesize, int): - client.add_streams(streams[0], ports=[port_0]) - client.add_streams(streams[1], ports=[port_1]) - elif isinstance(framesize, str): - client.add_streams(streams[0:3], ports=[port_0]) - client.add_streams(streams[3:6], ports=[port_1]) - if latency: - try: - if isinstance(framesize, int): - client.add_streams(streams[2], ports=[port_0]) - client.add_streams(streams[3], ports=[port_1]) - elif isinstance(framesize, str): - latency = False - except STLError: - # Disable latency if NIC does not support requested stream type - print("##### FAILED to add latency streams #####") - latency = False - # Warm-up phase: - if warmup_time > 0: - # Clear the stats before injecting: - client.clear_stats() - - # Choose rate and start traffic: - client.start(ports=[port_0, port_1], mult=rate, - duration=warmup_time) - - # Block until done: - client.wait_on_traffic(ports=[port_0, port_1], - timeout=warmup_time+30) - - if client.get_warnings(): - for warning in client.get_warnings(): - print(warning) - - # Read the stats after the test: - stats = client.get_stats() - - print("##### Warmup statistics #####") - print(json.dumps(stats, indent=4, separators=(',', ': '), - sort_keys=True)) - - lost_a = stats[0]["opackets"] - stats[1]["ipackets"] - lost_b = stats[1]["opackets"] - stats[0]["ipackets"] - - print("\npackets lost from 0 --> 1: {0} pkts".format(lost_a)) - print("packets lost from 1 --> 0: {0} pkts".format(lost_b)) - - # Clear the stats before injecting: - client.clear_stats() - lost_a = 0 - lost_b = 0 - - # Choose rate and start traffic: - client.start(ports=[port_0, port_1], mult=rate, duration=duration) - - if not async_start: - # Block until done: - client.wait_on_traffic(ports=[port_0, port_1], timeout=duration+30) - - if client.get_warnings(): - for warning in client.get_warnings(): - print(warning) - - # Read the stats after the test - stats = client.get_stats() - - print("##### Statistics #####") - print(json.dumps(stats, indent=4, separators=(',', ': '), - sort_keys=True)) - - lost_a = stats[0]["opackets"] - stats[1]["ipackets"] - lost_b = stats[1]["opackets"] - stats[0]["ipackets"] - - if latency: - lat_a = fmt_latency( - str(stats["latency"][0]["latency"]["total_min"]), - str(stats["latency"][0]["latency"]["average"]), - str(stats["latency"][0]["latency"]["total_max"])) - lat_b = fmt_latency( - str(stats["latency"][1]["latency"]["total_min"]), - str(stats["latency"][1]["latency"]["average"]), - str(stats["latency"][1]["latency"]["total_max"])) - - total_sent = stats[0]["opackets"] + stats[1]["opackets"] - total_rcvd = stats[0]["ipackets"] + stats[1]["ipackets"] - - print("\npackets lost from 0 --> 1: {0} pkts".format(lost_a)) - print("packets lost from 1 --> 0: {0} pkts".format(lost_b)) - - except STLError as err: - sys.stderr.write("{0}\n".format(err)) - sys.exit(1) - - finally: - if async_start: - if client: - client.disconnect(stop_traffic=False, release_ports=True) - else: - if client: - client.disconnect() - print("rate={0}, totalReceived={1}, totalSent={2}, " - "frameLoss={3}, latencyStream0(usec)={4}, " - "latencyStream1(usec)={5}". - format(rate, total_rcvd, total_sent, lost_a + lost_b, - lat_a, lat_b)) - - -def main(): - """Main function for the traffic generator using T-rex. - - It verifies the given command line arguments and runs "simple_burst" - function. - """ - - parser = argparse.ArgumentParser() - parser.add_argument("-p", "--profile", - required=True, - type=str, - help="Python traffic profile.") - parser.add_argument("-d", "--duration", - required=True, - type=int, - help="Duration of traffic run.") - parser.add_argument("-s", "--frame_size", - required=True, - help="Size of a Frame without padding and IPG.") - parser.add_argument("-r", "--rate", - required=True, - help="Traffic rate with included units (%, pps).") - parser.add_argument("-w", "--warmup_time", - type=int, - default=5, - help="Traffic warm-up time in seconds, 0 = disable.") - parser.add_argument("--port_0", - required=True, - type=int, - help="Port 0 on the traffic generator.") - parser.add_argument("--port_1", - required=True, - type=int, - help="Port 1 on the traffic generator.") - parser.add_argument("--async", - action="store_true", - default=False, - help="Non-blocking call of the script.") - parser.add_argument("--latency", - action="store_true", - default=False, - help="Add latency stream") - args = parser.parse_args() - - try: - framesize = int(args.frame_size) - except ValueError: - framesize = args.frame_size - - simple_burst(profile_file=args.profile, - duration=int(args.duration), - framesize=framesize, - rate=args.rate, - warmup_time=int(args.warmup_time), - port_0=int(args.port_0), - port_1=int(args.port_1), - latency=args.latency, - async_start=args.async) - - -if __name__ == '__main__': - main() diff --git a/resources/tools/t-rex/t-rex-stateless-stop.py b/resources/tools/t-rex/t-rex-stateless-stop.py deleted file mode 100755 index cc008461e6..0000000000 --- a/resources/tools/t-rex/t-rex-stateless-stop.py +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/python - -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""This script uses T-REX stateless API to drive t-rex instance. - -Requirements: -- T-REX: https://github.com/cisco-system-traffic-generator/trex-core - - compiled and running T-REX process (eg. ./t-rex-64 -i -c 4) - - trex_stl_lib.api library -- Script must be executed on a node with T-REX instance - -Functionality: -1. Stop any running traffic - -""" - -import sys -import json - -sys.path.insert(0, "/opt/trex-core-2.25/scripts/automation/"+\ - "trex_control_plane/stl/") -from trex_stl_lib.api import * - - -def stop_all_traffic_streams(): - """Stop traffic if any is running. - - :return: nothing - """ - - # create client - client = STLClient(verbose_level=LoggerApi.VERBOSE_QUIET) - - try: - # connect to server - client.connect() - - client.acquire(force=True) - client.stop(ports=[0, 1]) - - # read the stats after the test - stats = client.get_stats() - - print("#####statistics (approx.)#####") - print(json.dumps(stats, indent=4, - separators=(',', ': '), sort_keys=True)) - - lost_a = stats[0]["opackets"] - stats[1]["ipackets"] - lost_b = stats[1]["opackets"] - stats[0]["ipackets"] - - print("\npackets lost from 0 --> 1: {0} pkts".format(lost_a)) - print("packets lost from 1 --> 0: {0} pkts".format(lost_b)) - - except STLError as ex_error: - print_error(str(ex_error)) - sys.exit(1) - - finally: - client.disconnect() - - -def print_error(msg): - """Print error message on stderr. - - :param msg: Error message to print. - :type msg: string - :return: nothing - """ - - sys.stderr.write(msg+'\n') - - -def main(): - """Main function.""" - - stop_all_traffic_streams() - -if __name__ == "__main__": - main() diff --git a/resources/tools/testbed-setup/playbooks/files/90-csit b/resources/tools/testbed-setup/playbooks/files/90-csit index b53106e6b3..2304162ce8 100644 --- a/resources/tools/testbed-setup/playbooks/files/90-csit +++ b/resources/tools/testbed-setup/playbooks/files/90-csit @@ -1,79 +1,79 @@ -# change the minimum size of the hugepage pool. -vm.nr_hugepages=4096 - -# this file contains the maximum number of memory map areas a process -# may have. memory map areas are used as a side-effect of calling -# malloc, directly by mmap and mprotect, and also when loading shared -# libraries. -# -# while most applications need less than a thousand maps, certain -# programs, particularly malloc debuggers, may consume lots of them, -# e.g., up to one or two maps per allocation. -# must be greater than or equal to (2 * vm.nr_hugepages). -vm.max_map_count=200000 - -# hugetlb_shm_group contains group id that is allowed to create sysv -# shared memory segment using hugetlb page. -vm.hugetlb_shm_group=0 - -# this control is used to define how aggressive the kernel will swap -# memory pages. higher values will increase agressiveness, lower values -# decrease the amount of swap. a value of 0 instructs the kernel not to -# initiate swap until the amount of free and file-backed pages is less -# than the high water mark in a zone. -vm.swappiness=0 - -# this parameter can be used to control the nmi watchdog -# (i.e. the hard lockup detector) on x86 systems. -# -# 0 - disable the hard lockup detector -# 1 - enable the hard lockup detector -# -# the hard lockup detector monitors each cpu for its ability to respond to -# timer interrupts. the mechanism utilizes cpu performance counter registers -# that are programmed to generate non-maskable interrupts (nmis) periodically -# while a cpu is busy. hence, the alternative name 'nmi watchdog'. -# -# the nmi watchdog is disabled by default if the kernel is running as a guest -# in a kvm virtual machine. this default can be overridden by adding -#kernel. nmi_watchdog=1 - -# shared memory max must be greator or equal to the total size of hugepages. -# for 2mb pages, totalhugepagesize = vm.nr_hugepages * 2 * 1024 * 1024 -# if the existing kernel.shmmax setting (cat /sys/proc/kernel/shmmax) -# is greater than the calculated totalhugepagesize then set this parameter -# to current shmmax value. -kernel.shmmax=8589934592 - -# this option can be used to select the type of process address -# space randomization that is used in the system, for architectures -# that support this feature. -# 0 - turn the process address space randomization off. this is the -# default for architectures that do not support this feature anyways, -# and kernels that are booted with the "norandmaps" parameter. -kernel.randomize_va_space=0 - -# this parameter can be used to control the soft lockup detector. -# -# 0 - disable the soft lockup detector -# 1 - enable the soft lockup detector -# -# the soft lockup detector monitors cpus for threads that are hogging the cpus -# without rescheduling voluntarily, and thus prevent the 'watchdog/n' threads -# from running. the mechanism depends on the cpus ability to respond to timer -# interrupts which are needed for the 'watchdog/n' threads to be woken up by -# the watchdog timer function, otherwise the nmi watchdog - if enabled - can -# detect a hard lockup condition. -#kernel.soft_watchdog=0 - -# this value can be used to control on which cpus the watchdog may run. -# the default cpumask is all possible cores, but if no_hz_full is -# enabled in the kernel config, and cores are specified with the -# nohz_full= boot argument, those cores are excluded by default. -# offline cores can be included in this mask, and if the core is later -# brought online, the watchdog will be started based on the mask value. -# -# typically this value would only be touched in the nohz_full case -# to re-enable cores that by default were not running the watchdog, -# if a kernel lockup was suspected on those cores. -kernel.watchdog_cpumask=0,18 +# change the minimum size of the hugepage pool. +vm.nr_hugepages=4096 + +# this file contains the maximum number of memory map areas a process +# may have. memory map areas are used as a side-effect of calling +# malloc, directly by mmap and mprotect, and also when loading shared +# libraries. +# +# while most applications need less than a thousand maps, certain +# programs, particularly malloc debuggers, may consume lots of them, +# e.g., up to one or two maps per allocation. +# must be greater than or equal to (2 * vm.nr_hugepages). +vm.max_map_count=200000 + +# hugetlb_shm_group contains group id that is allowed to create sysv +# shared memory segment using hugetlb page. +vm.hugetlb_shm_group=0 + +# this control is used to define how aggressive the kernel will swap +# memory pages. higher values will increase agressiveness, lower values +# decrease the amount of swap. a value of 0 instructs the kernel not to +# initiate swap until the amount of free and file-backed pages is less +# than the high water mark in a zone. +vm.swappiness=0 + +# this parameter can be used to control the nmi watchdog +# (i.e. the hard lockup detector) on x86 systems. +# +# 0 - disable the hard lockup detector +# 1 - enable the hard lockup detector +# +# the hard lockup detector monitors each cpu for its ability to respond to +# timer interrupts. the mechanism utilizes cpu performance counter registers +# that are programmed to generate non-maskable interrupts (nmis) periodically +# while a cpu is busy. hence, the alternative name 'nmi watchdog'. +# +# the nmi watchdog is disabled by default if the kernel is running as a guest +# in a kvm virtual machine. this default can be overridden by adding +#kernel. nmi_watchdog=1 + +# shared memory max must be greator or equal to the total size of hugepages. +# for 2mb pages, totalhugepagesize = vm.nr_hugepages * 2 * 1024 * 1024 +# if the existing kernel.shmmax setting (cat /sys/proc/kernel/shmmax) +# is greater than the calculated totalhugepagesize then set this parameter +# to current shmmax value. +kernel.shmmax=8589934592 + +# this option can be used to select the type of process address +# space randomization that is used in the system, for architectures +# that support this feature. +# 0 - turn the process address space randomization off. this is the +# default for architectures that do not support this feature anyways, +# and kernels that are booted with the "norandmaps" parameter. +kernel.randomize_va_space=0 + +# this parameter can be used to control the soft lockup detector. +# +# 0 - disable the soft lockup detector +# 1 - enable the soft lockup detector +# +# the soft lockup detector monitors cpus for threads that are hogging the cpus +# without rescheduling voluntarily, and thus prevent the 'watchdog/n' threads +# from running. the mechanism depends on the cpus ability to respond to timer +# interrupts which are needed for the 'watchdog/n' threads to be woken up by +# the watchdog timer function, otherwise the nmi watchdog - if enabled - can +# detect a hard lockup condition. +#kernel.soft_watchdog=0 + +# this value can be used to control on which cpus the watchdog may run. +# the default cpumask is all possible cores, but if no_hz_full is +# enabled in the kernel config, and cores are specified with the +# nohz_full= boot argument, those cores are excluded by default. +# offline cores can be included in this mask, and if the core is later +# brought online, the watchdog will be started based on the mask value. +# +# typically this value would only be touched in the nohz_full case +# to re-enable cores that by default were not running the watchdog, +# if a kernel lockup was suspected on those cores. +kernel.watchdog_cpumask=0,18 diff --git a/resources/tools/topo_installation.py b/resources/tools/topo_installation.py deleted file mode 100755 index 0488bdae69..0000000000 --- a/resources/tools/topo_installation.py +++ /dev/null @@ -1,149 +0,0 @@ -#!/usr/bin/env python - -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""This script provides copy and installation of VPP build deb packages. - As destinations are used all DUT nodes from the topology file.""" - -import sys -import argparse -from yaml import load - -from resources.libraries.python.ssh import SSH - - -def ssh_no_error(ssh, cmd, sudo=False): - """Execute a command over ssh channel, and log and exit if the command - fails. - - :param ssh: SSH() object connected to a node. - :param cmd: Command line to execute on remote node. - :type ssh: SSH() object - :type cmd: str - :return: stdout from the SSH command. - :rtype: str - """ - - if sudo: - ret, stdo, stde = ssh.exec_command_sudo(cmd, timeout=60) - else: - ret, stdo, stde = ssh.exec_command(cmd, timeout=60) - - if ret != 0: - print 'Command execution failed: "{}"'.format(cmd) - print 'stdout: {0}'.format(stdo) - print 'stderr: {0}'.format(stde) - raise RuntimeError('Unexpected ssh command failure') - - return stdo - - -def ssh_ignore_error(ssh, cmd, sudo=False): - """Execute a command over ssh channel, ignore errors. - - :param ssh: SSH() object connected to a node. - :param cmd: Command line to execute on remote node. - :type ssh: SSH() object - :type cmd: str - :return: stdout from the SSH command. - :rtype: str - """ - - if sudo: - ret, stdo, stde = ssh.exec_command_sudo(cmd) - else: - ret, stdo, stde = ssh.exec_command(cmd) - - if ret != 0: - print 'Command execution failed: "{}"'.format(cmd) - print 'stdout: {0}'.format(stdo) - print 'stderr: {0}'.format(stde) - - return stdo - - -def main(): - """Copy and installation of VPP packages.""" - - parser = argparse.ArgumentParser() - parser.add_argument("-t", "--topo", required=True, - help="Topology file") - parser.add_argument("-d", "--directory", required=True, - help="Installation directory") - parser.add_argument("-p", "--packages", required=False, nargs='+', - help="Packages paths to copy") - parser.add_argument("-c", "--cancel", help="Cancel installation", - action="store_true") - args = parser.parse_args() - topology_file = args.topo - packages = args.packages - install_dir = args.directory - cancel_installation = args.cancel - - work_file = open(topology_file) - topology = load(work_file.read())['nodes'] - - ssh = SSH() - for node in topology: - if topology[node]['type'] == "DUT": - print "###TI host: {}".format(topology[node]['host']) - ssh.connect(topology[node]) - - if cancel_installation: - # Remove installation directory on DUT - cmd = "rm -r {}".format(install_dir) - stdout = ssh_ignore_error(ssh, cmd) - print "###TI {}".format(stdout) - - cmd = "dpkg -l | grep vpp" - ret, _, _ = ssh.exec_command(cmd) - if ret == 0: - # Try to fix interrupted installations - cmd = 'dpkg --configure -a' - stdout = ssh_no_error(ssh, cmd, sudo=True) - print "###TI {}".format(stdout) - # Try to remove installed vpp.* packages - cmd = 'apt-get purge -y "vpp.*"' - stdout = ssh_no_error(ssh, cmd, sudo=True) - print "###TI {}".format(stdout) - else: - # Create installation directory on DUT - cmd = "rm -r {0}; mkdir {0}".format(install_dir) - stdout = ssh_no_error(ssh, cmd) - print "###TI {}".format(stdout) - - # Copy packages from local path to installation dir - for deb in packages: - print "###TI scp: {}".format(deb) - ssh.scp(local_path=deb, remote_path=install_dir) - - cmd = "dpkg -l | grep vpp" - ret, _, _ = ssh.exec_command(cmd) - if ret == 0: - # Try to fix interrupted installations - cmd = 'dpkg --configure -a' - stdout = ssh_no_error(ssh, cmd, sudo=True) - print "###TI {}".format(stdout) - # Try to remove installed vpp.* packages - cmd = 'apt-get purge -y "vpp.*"' - stdout = ssh_no_error(ssh, cmd, sudo=True) - print "###TI {}".format(stdout) - - # Installation of VPP deb packages - cmd = "dpkg -i --force-all {}/*.deb".format(install_dir) - stdout = ssh_no_error(ssh, cmd, sudo=True) - print "###TI {}".format(stdout) - -if __name__ == "__main__": - sys.exit(main()) diff --git a/resources/tools/topo_reservation.py b/resources/tools/topo_reservation.py deleted file mode 100755 index 4b5ed2459c..0000000000 --- a/resources/tools/topo_reservation.py +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env python - -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""This script provides simple reservation mechanism to avoid - simultaneous use of nodes listed in topology file. - As source of truth is used DUT1 node from the topology file.""" - -import sys -import argparse -from resources.libraries.python.ssh import SSH -from yaml import load - -RESERVATION_DIR = "/tmp/reservation_dir" - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument("-t", "--topo", required=True, - help="Topology file") - parser.add_argument("-c", "--cancel", help="Cancel reservation", - action="store_true") - args = parser.parse_args() - topology_file = args.topo - cancel_reservation = args.cancel - - work_file = open(topology_file) - topology = load(work_file.read())['nodes'] - - #we are using DUT1 node because we expect DUT1 to be a linux host - #we don't use TG because we don't expect TG to be linux only host - try: - tg_node = topology["DUT1"] - except KeyError: - print "Topology file does not contain 'DUT1' node" - return 1 - - ssh = SSH() - ssh.connect(tg_node) - - #For system reservation we use mkdir it is an atomic operation and we can - #store additional data (time, client_ID, ..) within reservation directory - if cancel_reservation: - ret, _, err = ssh.exec_command("rm -r {}".format(RESERVATION_DIR)) - else: - ret, _, err = ssh.exec_command("mkdir {}".format(RESERVATION_DIR)) - - if ret != 0: - print("{} unsuccessful:\n{}". - format(("Cancellation " if cancel_reservation else "Reservation"), - err)) - return ret - -if __name__ == "__main__": - sys.exit(main()) diff --git a/resources/tools/trex/trex_installer.sh b/resources/tools/trex/trex_installer.sh new file mode 100755 index 0000000000..13891f14a1 --- /dev/null +++ b/resources/tools/trex/trex_installer.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +TREX_VERSION="2.25" + +TREX_DOWNLOAD_REPO="https://github.com/cisco-system-traffic-generator/trex-core/archive/" +TREX_DOWNLOAD_PACKAGE="v${TREX_VERSION}.zip" +TREX_PACKAGE_URL="${TREX_DOWNLOAD_REPO}${TREX_DOWNLOAD_PACKAGE}" +TARGET_DIR="/opt/" +TREX_DIR="trex-core-${TREX_VERSION}/" +TREX_INSTALL_DIR="${TARGET_DIR}${TREX_DIR}" + +if test "$(id -u)" -ne 0 +then + echo "Please use root or sudo to be able to access target installation directory: ${TARGET_DIR}" + exit 1 +fi + +WORKING_DIR=$(mktemp -d) +test $? -eq 0 || exit 1 + +cleanup () { + rm -r ${WORKING_DIR} +} + +trap cleanup EXIT + +test -d ${TREX_INSTALL_DIR} && echo "T-REX aleready installed: ${TREX_INSTALL_DIR}" && exit 0 + +wget -P ${WORKING_DIR} ${TREX_PACKAGE_URL} +test $? -eq 0 || exit 1 + +unzip ${WORKING_DIR}/${TREX_DOWNLOAD_PACKAGE} -d ${TARGET_DIR} +test $? -eq 0 || exit 1 + +cd ${TREX_INSTALL_DIR}/linux_dpdk/ && ./b configure && ./b build || exit 1 +cd ${TREX_INSTALL_DIR}/scripts/ko/src && make && make install || exit 1 + diff --git a/resources/tools/trex/trex_server_info.py b/resources/tools/trex/trex_server_info.py new file mode 100755 index 0000000000..ac7c7a5427 --- /dev/null +++ b/resources/tools/trex/trex_server_info.py @@ -0,0 +1,76 @@ +#!/usr/bin/python + +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""This script uses T-REX stateless API to drive t-rex instance. + +Requirements: +- T-REX: https://github.com/cisco-system-traffic-generator/trex-core + - compiled and running T-REX process (eg. ./t-rex-64 -i -c 4) + - trex_stl_lib.api library +- Script must be executed on a node with T-REX instance + +Functionality: +1. Verify the API functionality and get server information + +""" + +import sys + +sys.path.insert(0, "/opt/trex-core-2.25/scripts/automation/"+\ + "trex_control_plane/stl/") +from trex_stl_lib.api import * + + +def get_server_system_info(): + """Check server info and quit. + + :return: nothing + """ + + # create client + client = STLClient() + + try: + # connect to server + client.connect() + # get server info + print client.get_server_system_info() + + except STLError as ex_error: + print_error(str(ex_error)) + sys.exit(1) + + finally: + client.disconnect() + + +def print_error(msg): + """Print error message on stderr. + + :param msg: Error message to print. + :type msg: string + :return: nothing + """ + + sys.stderr.write(msg+'\n') + + +def main(): + """Main function.""" + + get_server_system_info() + +if __name__ == "__main__": + main() diff --git a/resources/tools/trex/trex_stateless_profile.py b/resources/tools/trex/trex_stateless_profile.py new file mode 100755 index 0000000000..0bbd241f8b --- /dev/null +++ b/resources/tools/trex/trex_stateless_profile.py @@ -0,0 +1,296 @@ +#!/usr/bin/python + +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""This module gets a traffic profile together with other parameters, reads +the profile and sends the traffic. At the end, it measures the packet loss and +latency. +""" + +import sys +import argparse +import json + +sys.path.insert(0, "/opt/trex-core-2.25/scripts/automation/" + "trex_control_plane/stl/") + +from trex_stl_lib.api import * + + +def fmt_latency(lat_min, lat_avg, lat_max): + """Return formatted, rounded latency. + + :param lat_min: Min latency + :param lat_avg: Average latency + :param lat_max: Max latency + :type lat_min: string + :type lat_avg: string + :type lat_max: string + :return: Formatted and rounded output "min/avg/max" + :rtype: string + """ + + try: + t_min = int(round(float(lat_min))) + except ValueError: + t_min = int(-1) + try: + t_avg = int(round(float(lat_avg))) + except ValueError: + t_avg = int(-1) + try: + t_max = int(round(float(lat_max))) + except ValueError: + t_max = int(-1) + + return "/".join(str(tmp) for tmp in (t_min, t_avg, t_max)) + + +def simple_burst(profile_file, duration, framesize, rate, warmup_time, port_0, + port_1, latency, async_start=False): + """Send the traffic and measure packet loss and latency. + + Procedure: + - reads the given traffic profile with streams, + - connects to the T-rex client, + - resets the ports, + - removes all existing streams, + - adds streams from the traffic profile to the ports, + - if the warm-up time is more than 0, sends the warm-up traffic, reads the + statistics, + - clears the statistics from the client, + - starts the traffic, + - waits for the defined time (or runs forever if async mode is defined), + - stops the traffic, + - reads and displays the statistics and + - disconnects from the client. + + :param profile_file: A python module with T-rex traffic profile. + :param framesize: Frame size. + :param duration: Duration of traffic run in seconds (-1=infinite). + :param rate: Traffic rate [percentage, pps, bps]. + :param warmup_time: Traffic warm-up time in seconds, 0 = disable. + :param port_0: Port 0 on the traffic generator. + :param port_1: Port 1 on the traffic generator. + :param latency: With latency stats. + :param async_start: Start the traffic and exit. + :type profile_file: str + :type framesize: int or str + :type duration: int + :type rate: str + :type warmup_time: int + :type port_0: int + :type port_1: int + :type latency: boo; + :type async_start: bool + """ + + client = None + total_rcvd = 0 + total_sent = 0 + lost_a = 0 + lost_b = 0 + lat_a = "-1/-1/-1" + lat_b = "-1/-1/-1" + + # Read the profile: + try: + print("### Profile file:\n{}".format(profile_file)) + profile = STLProfile.load(profile_file, direction=0, port_id=0, + framesize=framesize) + print("\n### Profiles ###\n") + print(profile.dump_to_yaml()) + streams = profile.get_streams() + except STLError: + print("Error while loading profile '{0}'\n".format(profile_file)) + sys.exit(1) + + try: + # Create the client: + client = STLClient(verbose_level=LoggerApi.VERBOSE_QUIET) + # Connect to server: + client.connect() + # Prepare our ports (the machine has 0 <--> 1 with static route): + client.reset(ports=[port_0, port_1]) + client.remove_all_streams(ports=[port_0, port_1]) + + if isinstance(framesize, int): + client.add_streams(streams[0], ports=[port_0]) + client.add_streams(streams[1], ports=[port_1]) + elif isinstance(framesize, str): + client.add_streams(streams[0:3], ports=[port_0]) + client.add_streams(streams[3:6], ports=[port_1]) + if latency: + try: + if isinstance(framesize, int): + client.add_streams(streams[2], ports=[port_0]) + client.add_streams(streams[3], ports=[port_1]) + elif isinstance(framesize, str): + latency = False + except STLError: + # Disable latency if NIC does not support requested stream type + print("##### FAILED to add latency streams #####") + latency = False + # Warm-up phase: + if warmup_time > 0: + # Clear the stats before injecting: + client.clear_stats() + + # Choose rate and start traffic: + client.start(ports=[port_0, port_1], mult=rate, + duration=warmup_time) + + # Block until done: + client.wait_on_traffic(ports=[port_0, port_1], + timeout=warmup_time+30) + + if client.get_warnings(): + for warning in client.get_warnings(): + print(warning) + + # Read the stats after the test: + stats = client.get_stats() + + print("##### Warmup statistics #####") + print(json.dumps(stats, indent=4, separators=(',', ': '), + sort_keys=True)) + + lost_a = stats[0]["opackets"] - stats[1]["ipackets"] + lost_b = stats[1]["opackets"] - stats[0]["ipackets"] + + print("\npackets lost from 0 --> 1: {0} pkts".format(lost_a)) + print("packets lost from 1 --> 0: {0} pkts".format(lost_b)) + + # Clear the stats before injecting: + client.clear_stats() + lost_a = 0 + lost_b = 0 + + # Choose rate and start traffic: + client.start(ports=[port_0, port_1], mult=rate, duration=duration) + + if not async_start: + # Block until done: + client.wait_on_traffic(ports=[port_0, port_1], timeout=duration+30) + + if client.get_warnings(): + for warning in client.get_warnings(): + print(warning) + + # Read the stats after the test + stats = client.get_stats() + + print("##### Statistics #####") + print(json.dumps(stats, indent=4, separators=(',', ': '), + sort_keys=True)) + + lost_a = stats[0]["opackets"] - stats[1]["ipackets"] + lost_b = stats[1]["opackets"] - stats[0]["ipackets"] + + if latency: + lat_a = fmt_latency( + str(stats["latency"][0]["latency"]["total_min"]), + str(stats["latency"][0]["latency"]["average"]), + str(stats["latency"][0]["latency"]["total_max"])) + lat_b = fmt_latency( + str(stats["latency"][1]["latency"]["total_min"]), + str(stats["latency"][1]["latency"]["average"]), + str(stats["latency"][1]["latency"]["total_max"])) + + total_sent = stats[0]["opackets"] + stats[1]["opackets"] + total_rcvd = stats[0]["ipackets"] + stats[1]["ipackets"] + + print("\npackets lost from 0 --> 1: {0} pkts".format(lost_a)) + print("packets lost from 1 --> 0: {0} pkts".format(lost_b)) + + except STLError as err: + sys.stderr.write("{0}\n".format(err)) + sys.exit(1) + + finally: + if async_start: + if client: + client.disconnect(stop_traffic=False, release_ports=True) + else: + if client: + client.disconnect() + print("rate={0}, totalReceived={1}, totalSent={2}, " + "frameLoss={3}, latencyStream0(usec)={4}, " + "latencyStream1(usec)={5}". + format(rate, total_rcvd, total_sent, lost_a + lost_b, + lat_a, lat_b)) + + +def main(): + """Main function for the traffic generator using T-rex. + + It verifies the given command line arguments and runs "simple_burst" + function. + """ + + parser = argparse.ArgumentParser() + parser.add_argument("-p", "--profile", + required=True, + type=str, + help="Python traffic profile.") + parser.add_argument("-d", "--duration", + required=True, + type=int, + help="Duration of traffic run.") + parser.add_argument("-s", "--frame_size", + required=True, + help="Size of a Frame without padding and IPG.") + parser.add_argument("-r", "--rate", + required=True, + help="Traffic rate with included units (%, pps).") + parser.add_argument("-w", "--warmup_time", + type=int, + default=5, + help="Traffic warm-up time in seconds, 0 = disable.") + parser.add_argument("--port_0", + required=True, + type=int, + help="Port 0 on the traffic generator.") + parser.add_argument("--port_1", + required=True, + type=int, + help="Port 1 on the traffic generator.") + parser.add_argument("--async", + action="store_true", + default=False, + help="Non-blocking call of the script.") + parser.add_argument("--latency", + action="store_true", + default=False, + help="Add latency stream") + args = parser.parse_args() + + try: + framesize = int(args.frame_size) + except ValueError: + framesize = args.frame_size + + simple_burst(profile_file=args.profile, + duration=int(args.duration), + framesize=framesize, + rate=args.rate, + warmup_time=int(args.warmup_time), + port_0=int(args.port_0), + port_1=int(args.port_1), + latency=args.latency, + async_start=args.async) + + +if __name__ == '__main__': + main() diff --git a/resources/tools/trex/trex_stateless_stop.py b/resources/tools/trex/trex_stateless_stop.py new file mode 100755 index 0000000000..cc008461e6 --- /dev/null +++ b/resources/tools/trex/trex_stateless_stop.py @@ -0,0 +1,91 @@ +#!/usr/bin/python + +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""This script uses T-REX stateless API to drive t-rex instance. + +Requirements: +- T-REX: https://github.com/cisco-system-traffic-generator/trex-core + - compiled and running T-REX process (eg. ./t-rex-64 -i -c 4) + - trex_stl_lib.api library +- Script must be executed on a node with T-REX instance + +Functionality: +1. Stop any running traffic + +""" + +import sys +import json + +sys.path.insert(0, "/opt/trex-core-2.25/scripts/automation/"+\ + "trex_control_plane/stl/") +from trex_stl_lib.api import * + + +def stop_all_traffic_streams(): + """Stop traffic if any is running. + + :return: nothing + """ + + # create client + client = STLClient(verbose_level=LoggerApi.VERBOSE_QUIET) + + try: + # connect to server + client.connect() + + client.acquire(force=True) + client.stop(ports=[0, 1]) + + # read the stats after the test + stats = client.get_stats() + + print("#####statistics (approx.)#####") + print(json.dumps(stats, indent=4, + separators=(',', ': '), sort_keys=True)) + + lost_a = stats[0]["opackets"] - stats[1]["ipackets"] + lost_b = stats[1]["opackets"] - stats[0]["ipackets"] + + print("\npackets lost from 0 --> 1: {0} pkts".format(lost_a)) + print("packets lost from 1 --> 0: {0} pkts".format(lost_b)) + + except STLError as ex_error: + print_error(str(ex_error)) + sys.exit(1) + + finally: + client.disconnect() + + +def print_error(msg): + """Print error message on stderr. + + :param msg: Error message to print. + :type msg: string + :return: nothing + """ + + sys.stderr.write(msg+'\n') + + +def main(): + """Main function.""" + + stop_all_traffic_streams() + +if __name__ == "__main__": + main() diff --git a/resources/traffic_profiles/trex/profile_trex_stateless_base_class.py b/resources/traffic_profiles/trex/profile_trex_stateless_base_class.py new file mode 100755 index 0000000000..a6cb97485a --- /dev/null +++ b/resources/traffic_profiles/trex/profile_trex_stateless_base_class.py @@ -0,0 +1,212 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Base class for stream profiles for T-rex traffic generator. +""" + +import sys +import socket +import struct + +from random import choice +from string import letters + +from trex_stl_lib.api import * + + +class TrafficStreamsBaseClass(object): + """Base class for stream profiles for T-rex traffic generator. + """ + + STREAM_TABLE = { + 'IMIX_v4': [ + {'size': 60, 'pps': 28, 'isg': 0}, + {'size': 590, 'pps': 20, 'isg': 0.1}, + {'size': 1514, 'pps': 4, 'isg': 0.2} + ], + 'IMIX_v4_1': [ + {'size': 64, 'pps': 28, 'isg': 0}, + {'size': 570, 'pps': 16, 'isg': 0.1}, + {'size': 1518, 'pps': 4, 'isg': 0.2} + ] + } + + def __init__(self): + + # Default value of frame size, it will be overwritten by the value of + # "framesize" parameter of "get_streams" method. + self.framesize = 64 + + # If needed, add your own parameters. + + def _gen_payload(self, length): + """Generate payload. + + If needed, implement your own algorithm. + + :param length: Length of generated payload. + :type length: int + :returns: The generated payload. + :rtype: str + """ + + payload = "" + for _ in range(length): + payload += choice(letters) + + return payload + + def _get_start_end_ipv6(self, start_ip, end_ip): + """Get start host and number of hosts from IPv6 as integer. + + :param start_ip: Start IPv6. + :param end_ip: End IPv6. + :type start_ip: string + :type end_ip: string + :return: Start host, number of hosts. + :rtype tuple of int + :raises: ValueError if start_ip is greater then end_ip. + :raises: socket.error if the IP addresses are not valid IPv6 addresses. + """ + + try: + ip1 = socket.inet_pton(socket.AF_INET6, start_ip) + ip2 = socket.inet_pton(socket.AF_INET6, end_ip) + + hi1, lo1 = struct.unpack('!QQ', ip1) + hi2, lo2 = struct.unpack('!QQ', ip2) + + if ((hi1 << 64) | lo1) > ((hi2 << 64) | lo2): + raise ValueError("IPv6: start_ip is greater then end_ip") + + return lo1, abs(int(lo1) - int(lo2)) + + except socket.error as err: + print(err) + raise + + def define_packets(self): + """Define the packets to be sent from the traffic generator. + + This method MUST return: + + return base_pkt_a, base_pkt_b, vm1, vm2 + + vm1 and vm2 CAN be None. + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + raise NotImplementedError + + def create_streams(self): + """Create traffic streams. + + Implement your own traffic streams. + + :returns: Traffic streams. + :rtype: list + """ + + base_pkt_a, base_pkt_b, vm1, vm2 = self.define_packets() + + # In most cases you will not have to change the code below: + + # Frame size is defined as an integer, e.g. 64, 1518: + if isinstance(self.framesize, int): + + # Create a base packet and pad it to size + payload_len = max(0, self.framesize - len(base_pkt_a) - 4) # No FCS + + # Direction 0 --> 1 + pkt_a = STLPktBuilder( + pkt=base_pkt_a / self._gen_payload(payload_len), + vm=vm1) + # Direction 1 --> 0 + pkt_b = STLPktBuilder( + pkt=base_pkt_b / self._gen_payload(payload_len), + vm=vm2) + + # Packets for latency measurement: + # Direction 0 --> 1 + pkt_lat_a = STLPktBuilder( + pkt=base_pkt_a / self._gen_payload(payload_len)) + # Direction 1 --> 0 + pkt_lat_b = STLPktBuilder( + pkt=base_pkt_b / self._gen_payload(payload_len)) + + # Create the streams: + # Direction 0 --> 1 + stream1 = STLStream(packet=pkt_a, mode=STLTXCont(pps=9000)) + # Direction 1 --> 0 + # second traffic stream with a phase of 10ns (inter-stream gap) + stream2 = STLStream(packet=pkt_b, isg=10.0, + mode=STLTXCont(pps=9000)) + + # Streams for latency measurement: + # Direction 0 --> 1 + lat_stream1 = STLStream(packet=pkt_lat_a, + flow_stats=STLFlowLatencyStats(pg_id=0), + mode=STLTXCont(pps=9000)) + # Direction 1 --> 0 + # second traffic stream with a phase of 10ns (inter-stream gap) + lat_stream2 = STLStream(packet=pkt_lat_b, isg=10.0, + flow_stats=STLFlowLatencyStats(pg_id=1), + mode=STLTXCont(pps=9000)) + + return [stream1, stream2, lat_stream1, lat_stream2] + + # Frame size is defined as a string, e.g.IMIX_v4_1: + elif isinstance(self.framesize, str): + + stream1 = [] + stream2 = [] + + for stream in self.STREAM_TABLE[self.framesize]: + payload_len_a = max(0, stream['size'] - len(base_pkt_a) - 4) + payload_len_b = max(0, stream['size'] - len(base_pkt_b) - 4) + # Create a base packet and pad it to size + pkt_a = STLPktBuilder( + pkt=base_pkt_a / self._gen_payload(payload_len_a), + vm=vm1) + pkt_b = STLPktBuilder( + pkt=base_pkt_b / self._gen_payload(payload_len_b), + vm=vm2) + + # Create the streams: + stream1.append(STLStream(packet=pkt_a, + isg=stream['isg'], + mode=STLTXCont(pps=stream['pps']))) + stream2.append(STLStream(packet=pkt_b, + isg=stream['isg'], + mode=STLTXCont(pps=stream['pps']))) + streams = list() + streams.extend(stream1) + streams.extend(stream2) + + return streams + + def get_streams(self, **kwargs): + """Get traffic streams created by "create_streams" method. + + If needed, add your own parameters. + + :param kwargs: Key-value pairs used by "create_streams" method while + creating streams. + :returns: Traffic streams. + :rtype: list + """ + + self.framesize = kwargs['framesize'] + + return self.create_streams() diff --git a/resources/traffic_profiles/trex/trex-sl-2n-ethip4-ip4src253.py b/resources/traffic_profiles/trex/trex-sl-2n-ethip4-ip4src253.py new file mode 100755 index 0000000000..f9a030b9eb --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-2n-ethip4-ip4src253.py @@ -0,0 +1,94 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IP / + - Direction 0 --> 1: + - Source IP address range: 10.10.10.2 - 10.10.10.254 + - Destination IP address range: 20.20.20.2 + - Direction 1 --> 0: + - Source IP address range: 20.20.20.2 - 20.20.20.254 + - Destination IP address range: 10.10.10.2 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '10.10.10.2' + self.p1_src_end_ip = '10.10.10.254' + self.p1_dst_start_ip = '20.20.20.2' + + self.p2_src_start_ip = '20.20.20.2' + self.p2_src_end_ip = '20.20.20.254' + self.p2_dst_start_ip = '10.10.10.2' + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + # Direction 0 --> 1 + base_pkt_a = Ether() / IP(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip, + proto=61) + # Direction 1 --> 0 + base_pkt_b = Ether() / IP(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip, + proto=61) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([STLVmFlowVar(name="src", + min_value=self.p1_src_start_ip, + max_value=self.p1_src_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"), + STLVmFixIpv4(offset="IP")], + split_by_field="src") + # Direction 1 --> 0 + vm2 = STLScVmRaw([STLVmFlowVar(name="src", + min_value=self.p2_src_start_ip, + max_value=self.p2_src_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"), + STLVmFixIpv4(offset="IP")], + split_by_field="src") + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst1.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst1.py new file mode 100755 index 0000000000..68b492175b --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst1.py @@ -0,0 +1,73 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IP / + - Direction 0 --> 1: + - Source IP address range: 10.0.0.1 + - Destination IP address range: 20.0.0.0 + - Direction 1 --> 0: + - Source IP address range: 20.0.0.1 + - Destination IP address range: 10.0.0.0 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_ip = '10.0.0.1' + self.p1_dst_ip = '20.0.0.0' + + self.p2_src_ip = '20.0.0.1' + self.p2_dst_ip = '10.0.0.0' + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + # Direction 0 --> 1 + base_pkt_a = (Ether() / + IP(src=self.p1_src_ip, dst=self.p1_dst_ip, proto=61)) + # Direction 1 --> 0 + base_pkt_b = (Ether() / + IP(src=self.p2_src_ip, dst=self.p2_dst_ip, proto=61)) + + return base_pkt_a, base_pkt_b, None, None + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst100.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst100.py new file mode 100755 index 0000000000..86f423a153 --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst100.py @@ -0,0 +1,96 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IP / + - Direction 0 --> 1: + - Source IP address range: 10.0.0.1 + - Destination IP address range: 20.0.0.0 - 20.0.0.99 + - Direction 1 --> 0: + - Source IP address range: 20.0.0.1 + - Destination IP address range: 10.0.0.0 - 10.0.0.99 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '10.0.0.1' + self.p1_dst_start_ip = '20.0.0.0' + self.p1_dst_end_ip = '20.0.0.99' + + self.p2_src_start_ip = '20.0.0.1' + self.p2_dst_start_ip = '10.0.0.0' + self.p2_dst_end_ip = '10.0.0.99' + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + # Direction 0 --> 1 + base_pkt_a = (Ether() / + IP(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip, + proto=61)) + # Direction 1 --> 0 + base_pkt_b = (Ether() / + IP(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip, + proto=61)) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([STLVmFlowVar(name="dst", + min_value=self.p1_dst_start_ip, + max_value=self.p1_dst_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), + STLVmFixIpv4(offset="IP")], + split_by_field="dst") + # Direction 1 --> 0 + vm2 = STLScVmRaw([STLVmFlowVar(name="dst", + min_value=self.p2_dst_start_ip, + max_value=self.p2_dst_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), + STLVmFixIpv4(offset="IP")], + split_by_field="dst") + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst1000.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst1000.py new file mode 100755 index 0000000000..569c06360f --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst1000.py @@ -0,0 +1,96 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IP / + - Direction 0 --> 1: + - Source IP address range: 10.0.0.1 + - Destination IP address range: 20.0.0.0 - 20.0.3.231 + - Direction 1 --> 0: + - Source IP address range: 20.0.0.1 + - Destination IP address range: 10.0.0.0 - 10.0.3.231 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '10.0.0.1' + self.p1_dst_start_ip = '20.0.0.0' + self.p1_dst_end_ip = '20.0.3.231' + + self.p2_src_start_ip = '20.0.0.1' + self.p2_dst_start_ip = '10.0.0.0' + self.p2_dst_end_ip = '10.0.3.231' + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + # Direction 0 --> 1 + base_pkt_a = (Ether() / + IP(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip, + proto=61)) + # Direction 1 --> 0 + base_pkt_b = (Ether() / + IP(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip, + proto=61)) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([STLVmFlowVar(name="dst", + min_value=self.p1_dst_start_ip, + max_value=self.p1_dst_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), + STLVmFixIpv4(offset="IP")], + split_by_field="dst") + # Direction 1 --> 0 + vm2 = STLScVmRaw([STLVmFlowVar(name="dst", + min_value=self.p2_dst_start_ip, + max_value=self.p2_dst_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), + STLVmFixIpv4(offset="IP")], + split_by_field="dst") + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst10000.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst10000.py new file mode 100755 index 0000000000..373076f596 --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst10000.py @@ -0,0 +1,96 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IP / + - Direction 0 --> 1: + - Source IP address range: 10.0.0.1 + - Destination IP address range: 20.0.0.0 - 20.0.39.15 + - Direction 1 --> 0: + - Source IP address range: 20.0.0.1 + - Destination IP address range: 10.0.0.0 - 10.0.39.15 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '10.0.0.1' + self.p1_dst_start_ip = '20.0.0.0' + self.p1_dst_end_ip = '20.0.39.15' + + self.p2_src_start_ip = '20.0.0.1' + self.p2_dst_start_ip = '10.0.0.0' + self.p2_dst_end_ip = '10.0.39.15' + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + # Direction 0 --> 1 + base_pkt_a = (Ether() / + IP(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip, + proto=61)) + # Direction 1 --> 0 + base_pkt_b = (Ether() / + IP(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip, + proto=61)) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([STLVmFlowVar(name="dst", + min_value=self.p1_dst_start_ip, + max_value=self.p1_dst_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), + STLVmFixIpv4(offset="IP")], + split_by_field="dst") + # Direction 1 --> 0 + vm2 = STLScVmRaw([STLVmFlowVar(name="dst", + min_value=self.p2_dst_start_ip, + max_value=self.p2_dst_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), + STLVmFixIpv4(offset="IP")], + split_by_field="dst") + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst100000.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst100000.py new file mode 100755 index 0000000000..3b27e9a9e0 --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst100000.py @@ -0,0 +1,96 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IP / + - Direction 0 --> 1: + - Source IP address range: 10.0.0.1 + - Destination IP address range: 20.0.0.0 - 20.1.134.159 + - Direction 1 --> 0: + - Source IP address range: 20.0.0.1 + - Destination IP address range: 10.0.0.0 - 10.1.134.159 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '10.0.0.1' + self.p1_dst_start_ip = '20.0.0.0' + self.p1_dst_end_ip = '20.1.134.159' + + self.p2_src_start_ip = '20.0.0.1' + self.p2_dst_start_ip = '10.0.0.0' + self.p2_dst_end_ip = '10.1.134.159' + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + # Direction 0 --> 1 + base_pkt_a = (Ether() / + IP(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip, + proto=61)) + # Direction 1 --> 0 + base_pkt_b = (Ether() / + IP(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip, + proto=61)) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([STLVmFlowVar(name="dst", + min_value=self.p1_dst_start_ip, + max_value=self.p1_dst_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), + STLVmFixIpv4(offset="IP")], + split_by_field="dst") + # Direction 1 --> 0 + vm2 = STLScVmRaw([STLVmFlowVar(name="dst", + min_value=self.p2_dst_start_ip, + max_value=self.p2_dst_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), + STLVmFixIpv4(offset="IP")], + split_by_field="dst") + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst1000000.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst1000000.py new file mode 100755 index 0000000000..076951b566 --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst1000000.py @@ -0,0 +1,96 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IP / + - Direction 0 --> 1: + - Source IP address range: 10.0.0.1 + - Destination IP address range: 20.0.0.0 - 20.15.66.63 + - Direction 1 --> 0: + - Source IP address range: 20.0.0.1 + - Destination IP address range: 10.0.0.0 - 10.15.66.63 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '10.0.0.1' + self.p1_dst_start_ip = '20.0.0.0' + self.p1_dst_end_ip = '20.15.66.63' + + self.p2_src_start_ip = '20.0.0.1' + self.p2_dst_start_ip = '10.0.0.0' + self.p2_dst_end_ip = '10.15.66.63' + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + # Direction 0 --> 1 + base_pkt_a = (Ether() / + IP(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip, + proto=61)) + # Direction 1 --> 0 + base_pkt_b = (Ether() / + IP(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip, + proto=61)) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([STLVmFlowVar(name="dst", + min_value=self.p1_dst_start_ip, + max_value=self.p1_dst_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), + STLVmFixIpv4(offset="IP")], + split_by_field="dst") + # Direction 1 --> 0 + vm2 = STLScVmRaw([STLVmFlowVar(name="dst", + min_value=self.p2_dst_start_ip, + max_value=self.p2_dst_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), + STLVmFixIpv4(offset="IP")], + split_by_field="dst") + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst253.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst253.py new file mode 100755 index 0000000000..684af82ce1 --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst253.py @@ -0,0 +1,96 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IP / + - Direction 0 --> 1: + - Source IP address range: 20.20.20.2 + - Destination IP address range: 2.1.1.2 - 2.1.1.254 + - Direction 1 --> 0: + - Source IP address range: 10.10.10.2 + - Destination IP address range: 1.1.1.2 - 1.1.1.254 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '20.20.20.2' + self.p1_dst_start_ip = '2.1.1.2' + self.p1_dst_end_ip = '2.1.1.254' + + self.p2_src_start_ip = '10.10.10.2' + self.p2_dst_start_ip = '1.1.1.2' + self.p2_dst_end_ip = '1.1.1.254' + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + # Direction 0 --> 1 + base_pkt_a = (Ether() / + IP(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip, + proto=61)) + # Direction 1 --> 0 + base_pkt_b = (Ether() / + IP(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip, + proto=61)) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([STLVmFlowVar(name="dst", + min_value=self.p1_dst_start_ip, + max_value=self.p1_dst_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), + STLVmFixIpv4(offset="IP")], + split_by_field="dst") + # Direction 1 --> 0 + vm2 = STLScVmRaw([STLVmFlowVar(name="dst", + min_value=self.p2_dst_start_ip, + max_value=self.p2_dst_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), + STLVmFixIpv4(offset="IP")], + split_by_field="dst") + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst253_l3fwd.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst253_l3fwd.py new file mode 100755 index 0000000000..55a79942de --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4dst253_l3fwd.py @@ -0,0 +1,96 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IP / + - Direction 0 --> 1: + - Source IP address range: 20.20.20.2 + - Destination IP address range: 1.1.1.2 - 1.1.1.254 + - Direction 1 --> 0: + - Source IP address range: 10.10.10.2 + - Destination IP address range: 2.1.1.2 - 2.1.1.254 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '20.20.20.2' + self.p1_dst_start_ip = '1.1.1.2' + self.p1_dst_end_ip = '1.1.1.254' + + self.p2_src_start_ip = '10.10.10.2' + self.p2_dst_start_ip = '2.1.1.2' + self.p2_dst_end_ip = '2.1.1.254' + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + # Direction 0 --> 1 + base_pkt_a = (Ether() / + IP(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip, + proto=61)) + # Direction 1 --> 0 + base_pkt_b = (Ether() / + IP(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip, + proto=61)) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([STLVmFlowVar(name="dst", + min_value=self.p1_dst_start_ip, + max_value=self.p1_dst_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), + STLVmFixIpv4(offset="IP")], + split_by_field="dst") + # Direction 1 --> 0 + vm2 = STLScVmRaw([STLVmFlowVar(name="dst", + min_value=self.p2_dst_start_ip, + max_value=self.p2_dst_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="dst", pkt_offset="IP.dst"), + STLVmFixIpv4(offset="IP")], + split_by_field="dst") + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4src253.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4src253.py new file mode 100755 index 0000000000..f9a030b9eb --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4src253.py @@ -0,0 +1,94 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IP / + - Direction 0 --> 1: + - Source IP address range: 10.10.10.2 - 10.10.10.254 + - Destination IP address range: 20.20.20.2 + - Direction 1 --> 0: + - Source IP address range: 20.20.20.2 - 20.20.20.254 + - Destination IP address range: 10.10.10.2 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '10.10.10.2' + self.p1_src_end_ip = '10.10.10.254' + self.p1_dst_start_ip = '20.20.20.2' + + self.p2_src_start_ip = '20.20.20.2' + self.p2_src_end_ip = '20.20.20.254' + self.p2_dst_start_ip = '10.10.10.2' + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + # Direction 0 --> 1 + base_pkt_a = Ether() / IP(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip, + proto=61) + # Direction 1 --> 0 + base_pkt_b = Ether() / IP(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip, + proto=61) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([STLVmFlowVar(name="src", + min_value=self.p1_src_start_ip, + max_value=self.p1_src_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"), + STLVmFixIpv4(offset="IP")], + split_by_field="src") + # Direction 1 --> 0 + vm2 = STLScVmRaw([STLVmFlowVar(name="src", + min_value=self.p2_src_start_ip, + max_value=self.p2_src_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"), + STLVmFixIpv4(offset="IP")], + split_by_field="src") + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4src254.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4src254.py new file mode 100755 index 0000000000..0a2a4a4564 --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip4-ip4src254.py @@ -0,0 +1,94 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IP / + - Direction 0 --> 1: + - Source IP address range: 10.10.10.1 - 10.10.10.254 + - Destination IP address range: 20.20.20.1 + - Direction 1 --> 0: + - Source IP address range: 20.20.20.1 - 20.20.20.254 + - Destination IP address range: 10.10.10.1 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '10.10.10.1' + self.p1_src_end_ip = '10.10.10.254' + self.p1_dst_start_ip = '20.20.20.1' + + self.p2_src_start_ip = '20.20.20.1' + self.p2_src_end_ip = '20.20.20.254' + self.p2_dst_start_ip = '10.10.10.1' + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + # Direction 0 --> 1 + base_pkt_a = Ether() / IP(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip, + proto=61) + # Direction 1 --> 0 + base_pkt_b = Ether() / IP(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip, + proto=61) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([STLVmFlowVar(name="src", + min_value=self.p1_src_start_ip, + max_value=self.p1_src_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"), + STLVmFixIpv4(offset="IP")], + split_by_field="src") + # Direction 1 --> 0 + vm2 = STLScVmRaw([STLVmFlowVar(name="src", + min_value=self.p2_src_start_ip, + max_value=self.p2_src_end_ip, + size=4, op="inc"), + STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"), + STLVmFixIpv4(offset="IP")], + split_by_field="src") + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-1000u15p.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-1000u15p.py new file mode 100755 index 0000000000..c9f6a27b89 --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-1000u15p.py @@ -0,0 +1,116 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IP / UDP + - Direction 0 --> 1: + - Source IP address range: 20.0.0.0 - 20.0.3.231 + - Destination IP address range: 12.0.0.2 + - Source UDP port range: 1024 - 1038 + - Destination UDP port range: 1024 + - Direction 1 --> 0: + - Source IP address range: 12.0.0.2 + - Destination IP address range: 200.0.0.0 + - Source UDP port range: 1024 + - Destination UDP port range: 1024 - 16023 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '20.0.0.0' + self.p1_src_end_ip = '20.0.3.231' + self.p1_dst_start_ip = '12.0.0.2' + + self.p2_src_start_ip = '12.0.0.2' + self.p2_src_end_ip = '12.0.0.2' + self.p2_dst_start_ip = '200.0.0.0' + + # UDP ports used in packet headers. + self.p1_src_start_udp_port = 1024 + self.p1_src_end_udp_port = 1038 + self.p1_dst_start_udp_port = 1024 + + self.p2_src_start_udp_port = 1024 + self.p2_dst_start_udp_port = 1024 + self.p2_dst_end_udp_port = 16023 + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | UDP | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + # Direction 0 --> 1 + base_pkt_a = (Ether() / + IP(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip, + proto=17) / + UDP(sport=self.p1_src_start_udp_port, + dport=self.p1_dst_start_udp_port)) + # Direction 1 --> 0 + base_pkt_b = (Ether() / + IP(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip, + proto=17) / + UDP(sport=self.p2_src_start_udp_port, + dport=self.p2_dst_start_udp_port)) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([ + STLVmTupleGen(ip_min=self.p1_src_start_ip, + ip_max=self.p1_src_end_ip, + port_min=self.p1_src_start_udp_port, + port_max=self.p1_src_end_udp_port, + name="tuple"), + STLVmWrFlowVar(fv_name="tuple.ip", pkt_offset="IP.src"), + STLVmFixIpv4(offset="IP"), + STLVmWrFlowVar(fv_name="tuple.port", pkt_offset="UDP.sport") + ]) + # Direction 0 --> 1 + vm2 = STLScVmRaw([ + STLVmFlowVar(name="dport", + min_value=self.p2_dst_start_udp_port, + max_value=self.p2_dst_end_udp_port, + size=2, op="inc"), + STLVmWrFlowVar(fv_name="dport", pkt_offset="UDP.dport") + ]) + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-100u15p.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-100u15p.py new file mode 100755 index 0000000000..87a5d3067d --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-100u15p.py @@ -0,0 +1,116 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IP / UDP + - Direction 0 --> 1: + - Source IP address range: 20.0.0.0 - 20.0.0.99 + - Destination IP address range: 12.0.0.2 + - Source UDP port range: 1024 - 1038 + - Destination UDP port range: 1024 + - Direction 1 --> 0: + - Source IP address range: 12.0.0.2 + - Destination IP address range: 200.0.0.0 + - Source UDP port range: 1024 + - Destination UDP port range: 1024 - 2523 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '20.0.0.0' + self.p1_src_end_ip = '20.0.0.99' + self.p1_dst_start_ip = '12.0.0.2' + + self.p2_src_start_ip = '12.0.0.2' + self.p2_src_end_ip = '12.0.0.2' + self.p2_dst_start_ip = '200.0.0.0' + + # UDP ports used in packet headers. + self.p1_src_start_udp_port = 1024 + self.p1_src_end_udp_port = 1038 + self.p1_dst_start_udp_port = 1024 + + self.p2_src_start_udp_port = 1024 + self.p2_dst_start_udp_port = 1024 + self.p2_dst_end_udp_port = 2523 + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | UDP | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + # Direction 0 --> 1 + base_pkt_a = (Ether() / + IP(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip, + proto=17) / + UDP(sport=self.p1_src_start_udp_port, + dport=self.p1_dst_start_udp_port)) + # Direction 1 --> 0 + base_pkt_b = (Ether() / + IP(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip, + proto=17) / + UDP(sport=self.p2_src_start_udp_port, + dport=self.p2_dst_start_udp_port)) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([ + STLVmTupleGen(ip_min=self.p1_src_start_ip, + ip_max=self.p1_src_end_ip, + port_min=self.p1_src_start_udp_port, + port_max=self.p1_src_end_udp_port, + name="tuple"), + STLVmWrFlowVar(fv_name="tuple.ip", pkt_offset="IP.src"), + STLVmFixIpv4(offset="IP"), + STLVmWrFlowVar(fv_name="tuple.port", pkt_offset="UDP.sport") + ]) + # Direction 0 --> 1 + vm2 = STLScVmRaw([ + STLVmFlowVar(name="dport", + min_value=self.p2_dst_start_udp_port, + max_value=self.p2_dst_end_udp_port, + size=2, op="inc"), + STLVmWrFlowVar(fv_name="dport", pkt_offset="UDP.dport") + ]) + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-10u15p.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-10u15p.py new file mode 100755 index 0000000000..74f2f0d1e5 --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-10u15p.py @@ -0,0 +1,116 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IP / UDP + - Direction 0 --> 1: + - Source IP address range: 20.0.0.0 - 20.0.0.9 + - Destination IP address range: 12.0.0.2 + - Source UDP port range: 1024 - 1038 + - Destination UDP port range: 1024 + - Direction 1 --> 0: + - Source IP address range: 12.0.0.2 + - Destination IP address range: 200.0.0.0 + - Source UDP port range: 1024 + - Destination UDP port range: 1024 - 1173 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '20.0.0.0' + self.p1_src_end_ip = '20.0.0.9' + self.p1_dst_start_ip = '12.0.0.2' + + self.p2_src_start_ip = '12.0.0.2' + #self.p2_src_end_ip = '12.0.0.2' + self.p2_dst_start_ip = '200.0.0.0' + + # UDP ports used in packet headers. + self.p1_src_start_udp_port = 1024 + self.p1_src_end_udp_port = 1038 + self.p1_dst_start_udp_port = 1024 + + self.p2_src_start_udp_port = 1024 + self.p2_dst_start_udp_port = 1024 + self.p2_dst_end_udp_port = 1173 + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | UDP | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + # Direction 0 --> 1 + base_pkt_a = (Ether() / + IP(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip, + proto=17) / + UDP(sport=self.p1_src_start_udp_port, + dport=self.p1_dst_start_udp_port)) + # Direction 1 --> 0 + base_pkt_b = (Ether() / + IP(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip, + proto=17) / + UDP(sport=self.p2_src_start_udp_port, + dport=self.p2_dst_start_udp_port)) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([ + STLVmTupleGen(ip_min=self.p1_src_start_ip, + ip_max=self.p1_src_end_ip, + port_min=self.p1_src_start_udp_port, + port_max=self.p1_src_end_udp_port, + name="tuple"), + STLVmWrFlowVar(fv_name="tuple.ip", pkt_offset="IP.src"), + STLVmFixIpv4(offset="IP"), + STLVmWrFlowVar(fv_name="tuple.port", pkt_offset="UDP.sport") + ]) + # Direction 0 --> 1 + vm2 = STLScVmRaw([ + STLVmFlowVar(name="dport", + min_value=self.p2_dst_start_udp_port, + max_value=self.p2_dst_end_udp_port, + size=2, op="inc"), + STLVmWrFlowVar(fv_name="dport", pkt_offset="UDP.dport") + ]) + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-1u15p.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-1u15p.py new file mode 100755 index 0000000000..220ec05e31 --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-1u15p.py @@ -0,0 +1,113 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IP / UDP + - Direction 0 --> 1: + - Source IP address range: 20.0.0.0 + - Destination IP address range: 12.0.0.2 + - Source UDP port range: 1024 - 1038 + - Destination UDP port range: 1024 + - Direction 1 --> 0: + - Source IP address range: 12.0.0.2 + - Destination IP address range: 200.0.0.0 + - Source UDP port range: 1024 + - Destination UDP port range: 1024 - 1038 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '20.0.0.0' + self.p1_src_end_ip = '20.0.0.0' + self.p1_dst_start_ip = '12.0.0.2' + + self.p2_src_start_ip = '12.0.0.2' + self.p2_src_end_ip = '12.0.0.2' + self.p2_dst_start_ip = '200.0.0.0' + + # UDP ports used in packet headers. + self.p1_src_start_udp_port = 1024 + self.p1_src_end_udp_port = 1038 + self.p1_dst_start_udp_port = 1024 + + self.p2_src_start_udp_port = 1024 + self.p2_dst_start_udp_port = 1024 + self.p2_dst_end_udp_port = 1038 + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | UDP | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + # Direction 0 --> 1 + base_pkt_a = (Ether() / + IP(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip, + proto=17) / + UDP(sport=self.p1_src_start_udp_port, + dport=self.p1_dst_start_udp_port)) + # Direction 1 --> 0 + base_pkt_b = (Ether() / + IP(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip, + proto=17) / + UDP(sport=self.p2_src_start_udp_port, + dport=self.p2_dst_start_udp_port)) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([ + STLVmFlowVar(name="sport", + min_value=self.p1_src_start_udp_port, + max_value=self.p1_src_end_udp_port, + size=2, op="inc"), + STLVmWrFlowVar(fv_name="sport", pkt_offset="UDP.sport") + ]) + # Direction 0 --> 1 + vm2 = STLScVmRaw([ + STLVmFlowVar(name="dport", + min_value=self.p2_dst_start_udp_port, + max_value=self.p2_dst_end_udp_port, + size=2, op="inc"), + STLVmWrFlowVar(fv_name="dport", pkt_offset="UDP.dport") + ]) + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-1u1p.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-1u1p.py new file mode 100755 index 0000000000..939e4ce42c --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-1u1p.py @@ -0,0 +1,88 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IP / UDP + - Direction 0 --> 1: + - Source IP address range: 20.0.0.0 + - Destination IP address range: 12.0.0.2 + - Source UDP port range: 1024 + - Destination UDP port range: 1024 + - Direction 1 --> 0: + - Source IP address range: 12.0.0.2 + - Destination IP address range: 200.0.0.0 + - Source UDP port range: 1024 + - Destination UDP port range: 1028 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_ip = '20.0.0.0' + self.p1_dst_ip = '12.0.0.2' + + self.p2_src_ip = '12.0.0.2' + self.p2_dst_ip = '200.0.0.0' + + # UDP ports used in packet headers. + self.p1_src_udp_port = 1024 + self.p1_dst_udp_port = 1024 + + self.p2_src_udp_port = 1024 + self.p2_dst_udp_port = 1028 + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | UDP | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + # Direction 0 --> 1 + base_pkt_a = (Ether() / + IP(src=self.p1_src_ip, dst=self.p1_dst_ip, proto=17) / + UDP(sport=self.p1_src_udp_port, + dport=self.p1_dst_udp_port)) + # Direction 1 --> 0 + base_pkt_b = (Ether() / + IP(src=self.p2_src_ip, dst=self.p2_dst_ip, proto=17) / + UDP(sport=self.p2_src_udp_port, + dport=self.p2_dst_udp_port)) + + return base_pkt_a, base_pkt_b, None, None + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-2000u15p.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-2000u15p.py new file mode 100755 index 0000000000..7d5651812e --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-2000u15p.py @@ -0,0 +1,116 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IP / UDP + - Direction 0 --> 1: + - Source IP address range: 20.0.0.0 - 20.0.7.207 + - Destination IP address range: 12.0.0.2 + - Source UDP port range: 1024 - 1038 + - Destination UDP port range: 1024 + - Direction 1 --> 0: + - Source IP address range: 12.0.0.2 + - Destination IP address range: 200.0.0.0 + - Source UDP port range: 1024 + - Destination UDP port range: 1024 - 31022 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '20.0.0.0' + self.p1_src_end_ip = '20.0.7.207' + self.p1_dst_start_ip = '12.0.0.2' + + self.p2_src_start_ip = '12.0.0.2' + self.p2_src_end_ip = '12.0.0.2' + self.p2_dst_start_ip = '200.0.0.0' + + # UDP ports used in packet headers. + self.p1_src_start_udp_port = 1024 + self.p1_src_end_udp_port = 1038 + self.p1_dst_start_udp_port = 1024 + + self.p2_src_start_udp_port = 1024 + self.p2_dst_start_udp_port = 1024 + self.p2_dst_end_udp_port = 31022 + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | UDP | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + # Direction 0 --> 1 + base_pkt_a = (Ether() / + IP(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip, + proto=17) / + UDP(sport=self.p1_src_start_udp_port, + dport=self.p1_dst_start_udp_port)) + # Direction 1 --> 0 + base_pkt_b = (Ether() / + IP(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip, + proto=17) / + UDP(sport=self.p2_src_start_udp_port, + dport=self.p2_dst_start_udp_port)) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([ + STLVmTupleGen(ip_min=self.p1_src_start_ip, + ip_max=self.p1_src_end_ip, + port_min=self.p1_src_start_udp_port, + port_max=self.p1_src_end_udp_port, + name="tuple"), + STLVmWrFlowVar(fv_name="tuple.ip", pkt_offset="IP.src"), + STLVmFixIpv4(offset="IP"), + STLVmWrFlowVar(fv_name="tuple.port", pkt_offset="UDP.sport") + ]) + # Direction 0 --> 1 + vm2 = STLScVmRaw([ + STLVmFlowVar(name="dport", + min_value=self.p2_dst_start_udp_port, + max_value=self.p2_dst_end_udp_port, + size=2, op="inc"), + STLVmWrFlowVar(fv_name="dport", pkt_offset="UDP.dport") + ]) + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-4000u15p.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-4000u15p.py new file mode 100755 index 0000000000..dab23b8627 --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip4udp-4000u15p.py @@ -0,0 +1,116 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IP / UDP + - Direction 0 --> 1: + - Source IP address range: 20.0.0.0 - 20.0.15.159 + - Destination IP address range: 12.0.0.2 + - Source UDP port range: 1024 - 1038 + - Destination UDP port range: 1024 + - Direction 1 --> 0: + - Source IP address range: 12.0.0.2 + - Destination IP address range: 200.0.0.0 + - Source UDP port range: 1024 + - Destination UDP port range: 1024 - 61022 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '20.0.0.0' + self.p1_src_end_ip = '20.0.15.159' + self.p1_dst_start_ip = '12.0.0.2' + + self.p2_src_start_ip = '12.0.0.2' + self.p2_src_end_ip = '12.0.0.2' + self.p2_dst_start_ip = '200.0.0.0' + + # UDP ports used in packet headers. + self.p1_src_start_udp_port = 1024 + self.p1_src_end_udp_port = 1038 + self.p1_dst_start_udp_port = 1024 + + self.p2_src_start_udp_port = 1024 + self.p2_dst_start_udp_port = 1024 + self.p2_dst_end_udp_port = 61022 + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | UDP | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + # Direction 0 --> 1 + base_pkt_a = (Ether() / + IP(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip, + proto=17) / + UDP(sport=self.p1_src_start_udp_port, + dport=self.p1_dst_start_udp_port)) + # Direction 1 --> 0 + base_pkt_b = (Ether() / + IP(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip, + proto=17) / + UDP(sport=self.p2_src_start_udp_port, + dport=self.p2_dst_start_udp_port)) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([ + STLVmTupleGen(ip_min=self.p1_src_start_ip, + ip_max=self.p1_src_end_ip, + port_min=self.p1_src_start_udp_port, + port_max=self.p1_src_end_udp_port, + name="tuple"), + STLVmWrFlowVar(fv_name="tuple.ip", pkt_offset="IP.src"), + STLVmFixIpv4(offset="IP"), + STLVmWrFlowVar(fv_name="tuple.port", pkt_offset="UDP.sport") + ]) + # Direction 0 --> 1 + vm2 = STLScVmRaw([ + STLVmFlowVar(name="dport", + min_value=self.p2_dst_start_udp_port, + max_value=self.p2_dst_end_udp_port, + size=2, op="inc"), + STLVmWrFlowVar(fv_name="dport", pkt_offset="UDP.dport") + ]) + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip6-ip6dst10000.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip6-ip6dst10000.py new file mode 100755 index 0000000000..7a85ddfc05 --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip6-ip6dst10000.py @@ -0,0 +1,99 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IPv6 / + - Direction 0 --> 1: + - Source IP address range: 2001:1::1 + - Destination IP address range: 2001:2::0 - 2001:2::270F + - Direction 1 --> 0: + - Source IP address range: 2001:2::1 + - Destination IP address range: 2001:1::0 - 2001:1::270F +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '2001:1::1' + self.p1_dst_start_ip = '2001:2::0' + self.p1_dst_end_ip = '2001:2::270F' + + self.p2_src_start_ip = '2001:2::1' + self.p2_dst_start_ip = '2001:1::0' + self.p2_dst_end_ip = '2001:1::270F' + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IPv6 | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + base_p1, count_p1 = self._get_start_end_ipv6(self.p1_dst_start_ip, + self.p1_dst_end_ip) + base_p2, count_p2 = self._get_start_end_ipv6(self.p2_dst_start_ip, + self.p2_dst_end_ip) + + # Direction 0 --> 1 + base_pkt_a = Ether() / IPv6(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip) + # Direction 1 --> 0 + base_pkt_b = Ether() / IPv6(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([STLVmFlowVar(name="ipv6_dst", + min_value=base_p1, + max_value=base_p1 + count_p1, + size=8, op="inc"), + STLVmWrFlowVar(fv_name="ipv6_dst", + pkt_offset="IPv6.dst", + offset_fixup=8)], + split_by_field="ipv6_dst") + # Direction 1 --> 0 + vm2 = STLScVmRaw([STLVmFlowVar(name="ipv6_dst", + min_value=base_p2, + max_value=base_p2 + count_p2, + size=8, op="inc"), + STLVmWrFlowVar(fv_name="ipv6_dst", + pkt_offset="IPv6.dst", + offset_fixup=8)], + split_by_field="ipv6_dst") + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip6-ip6dst100000.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip6-ip6dst100000.py new file mode 100755 index 0000000000..b1948c9de2 --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip6-ip6dst100000.py @@ -0,0 +1,99 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IPv6 / + - Direction 0 --> 1: + - Source IP address range: 2001:1::1 + - Destination IP address range: 2001:2::0 - 2001:2::1:869F + - Direction 1 --> 0: + - Source IP address range: 2001:2::1 + - Destination IP address range: 2001:1::0 - 2001:1::1:869F +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '2001:1::1' + self.p1_dst_start_ip = '2001:2::0' + self.p1_dst_end_ip = '2001:2::1:869F' + + self.p2_src_start_ip = '2001:2::1' + self.p2_dst_start_ip = '2001:1::0' + self.p2_dst_end_ip = '2001:1::1:869F' + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IPv6 | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + base_p1, count_p1 = self._get_start_end_ipv6(self.p1_dst_start_ip, + self.p1_dst_end_ip) + base_p2, count_p2 = self._get_start_end_ipv6(self.p2_dst_start_ip, + self.p2_dst_end_ip) + + # Direction 0 --> 1 + base_pkt_a = Ether() / IPv6(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip) + # Direction 1 --> 0 + base_pkt_b = Ether() / IPv6(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([STLVmFlowVar(name="ipv6_dst", + min_value=base_p1, + max_value=base_p1 + count_p1, + size=8, op="inc"), + STLVmWrFlowVar(fv_name="ipv6_dst", + pkt_offset="IPv6.dst", + offset_fixup=8)], + split_by_field="ipv6_dst") + # Direction 1 --> 0 + vm2 = STLScVmRaw([STLVmFlowVar(name="ipv6_dst", + min_value=base_p2, + max_value=base_p2 + count_p2, + size=8, op="inc"), + STLVmWrFlowVar(fv_name="ipv6_dst", + pkt_offset="IPv6.dst", + offset_fixup=8)], + split_by_field="ipv6_dst") + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip6-ip6dst1000000.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip6-ip6dst1000000.py new file mode 100755 index 0000000000..ace0dace76 --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip6-ip6dst1000000.py @@ -0,0 +1,99 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IPv6 / + - Direction 0 --> 1: + - Source IP address range: 2001:1::1 + - Destination IP address range: 2001:2::0 - 2001:2::F:423F + - Direction 1 --> 0: + - Source IP address range: 2001:2::1 + - Destination IP address range: 2001:1::0 - 2001:1::F:423F +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '2001:1::1' + self.p1_dst_start_ip = '2001:2::0' + self.p1_dst_end_ip = '2001:2::F:423F' + + self.p2_src_start_ip = '2001:2::1' + self.p2_dst_start_ip = '2001:1::0' + self.p2_dst_end_ip = '2001:1::F:423F' + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IPv6 | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + base_p1, count_p1 = self._get_start_end_ipv6(self.p1_dst_start_ip, + self.p1_dst_end_ip) + base_p2, count_p2 = self._get_start_end_ipv6(self.p2_dst_start_ip, + self.p2_dst_end_ip) + + # Direction 0 --> 1 + base_pkt_a = Ether() / IPv6(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip) + # Direction 1 --> 0 + base_pkt_b = Ether() / IPv6(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([STLVmFlowVar(name="ipv6_dst", + min_value=base_p1, + max_value=base_p1 + count_p1, + size=8, op="inc"), + STLVmWrFlowVar(fv_name="ipv6_dst", + pkt_offset="IPv6.dst", + offset_fixup=8)], + split_by_field="ipv6_dst") + # Direction 1 --> 0 + vm2 = STLScVmRaw([STLVmFlowVar(name="ipv6_dst", + min_value=base_p2, + max_value=base_p2 + count_p2, + size=8, op="inc"), + STLVmWrFlowVar(fv_name="ipv6_dst", + pkt_offset="IPv6.dst", + offset_fixup=8)], + split_by_field="ipv6_dst") + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/resources/traffic_profiles/trex/trex-sl-3n-ethip6-ip6src253.py b/resources/traffic_profiles/trex/trex-sl-3n-ethip6-ip6src253.py new file mode 100755 index 0000000000..be900ce2cc --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-3n-ethip6-ip6src253.py @@ -0,0 +1,99 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Packet: ETH / IPv6 / + - Direction 0 --> 1: + - Source IP address range: 2001:1::2 - 2001:1::FE + - Destination IP address range: 2001:2::2 + - Direction 1 --> 0: + - Source IP address range: 2001:2::2 - 2001:2::FE + - Destination IP address range: 2001:1::2 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # IPs used in packet headers. + self.p1_src_start_ip = '2001:1::2' + self.p1_src_end_ip = '2001:1::FE' + self.p1_dst_start_ip = '2001:2::2' + + self.p2_src_start_ip = '2001:2::2' + self.p2_src_end_ip = '2001:2::FE' + self.p2_dst_start_ip = '2001:1::2' + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IPv6 | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + base_p1, count_p1 = self._get_start_end_ipv6(self.p1_src_start_ip, + self.p1_src_end_ip) + base_p2, count_p2 = self._get_start_end_ipv6(self.p2_src_start_ip, + self.p2_src_end_ip) + + # Direction 0 --> 1 + base_pkt_a = Ether() / IPv6(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip) + # Direction 1 --> 0 + base_pkt_b = Ether() / IPv6(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([STLVmFlowVar(name="ipv6_src", + min_value=base_p1, + max_value=base_p1 + count_p1, + size=8, op="inc"), + STLVmWrFlowVar(fv_name="ipv6_src", + pkt_offset="IPv6.src", + offset_fixup=8)], + split_by_field="ipv6_src") + # Direction 1 --> 0 + vm2 = STLScVmRaw([STLVmFlowVar(name="ipv6_src", + min_value=base_p2, + max_value=base_p2 + count_p2, + size=8, op="inc"), + STLVmWrFlowVar(fv_name="ipv6_src", + pkt_offset="IPv6.src", + offset_fixup=8)], + split_by_field="ipv6_src") + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/sample_tests/sample_suite.robot b/sample_tests/sample_suite.robot index 9d44eaf8cd..97a8585988 100644 --- a/sample_tests/sample_suite.robot +++ b/sample_tests/sample_suite.robot @@ -17,9 +17,9 @@ | Library | resources.libraries.python.TrafficScriptExecutor | Library | resources.libraries.python.MacSwap | Library | resources.libraries.python.SetupFramework -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/counters.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/counters.robot | Suite Setup | Run Keywords | Setup Framework | ${nodes} | ... | AND | Setup All DUTs | ${nodes} | ... | AND | Configure all TGs for traffic script diff --git a/tests/dpdk/dpdk_scripts/cleanup_dpdk.sh b/tests/dpdk/dpdk_scripts/cleanup_dpdk.sh new file mode 100755 index 0000000000..48e1a29b63 --- /dev/null +++ b/tests/dpdk/dpdk_scripts/cleanup_dpdk.sh @@ -0,0 +1,90 @@ +#!/bin/bash + +set -x + +# Setting variables +DPDK_VERSION=dpdk-17.05 +ROOTDIR=/tmp/openvpp-testing +TESTPMDLOG=screenlog.0 +PWDDIR=$(pwd) + +# Setting command line arguments +port1_driver=$1 +port1_pci=$2 +port2_driver=$3 +port2_pci=$4 + +# Try to kill the testpmd +sudo pgrep testpmd +if [ $? -eq "0" ]; then + success=false + sudo pkill testpmd + echo "RC = $?" + for attempt in {1..5}; do + echo "Checking if testpmd is still alive, attempt nr ${attempt}" + sudo pgrep testpmd + if [ $? -eq "1" ]; then + echo "testpmd is dead" + success=true + break + fi + echo "testpmd is still alive, waiting 1 second" + sleep 1 + done + if [ "$success" = false ]; then + echo "The command sudo pkill testpmd failed" + sudo pkill -9 testpmd + echo "RC = $?" + exit 1 + fi +else + echo "testpmd is not running" +fi + +#also kill the l3fwd +sudo pgrep l3fwd +if [ $? -eq "0" ]; then + success=false + sudo pkill l3fwd + echo "RC = $?" + for attempt in {1..5}; do + echo "Checking if l3fwd is still alive, attempt nr ${attempt}" + sudo pgrep l3fwd + if [ $? -eq "1" ]; then + echo "l3fwd is dead" + success=true + break + fi + echo "l3fwd is still alive, waiting 1 second" + sleep 1 + done + if [ "$success" = false ]; then + echo "The command sudo pkill l3fwd failed" + sudo pkill -9 l3fwd + echo "RC = $?" + exit 1 + fi +else + echo "l3fwd is not running" +fi + +# Remove hugepages +sudo rm -f /dev/hugepages/* + +# Unbind interfaces +cd ${ROOTDIR}/${DPDK_VERSION}/ +sudo ./usertools/dpdk-devbind.py -b ${port1_driver} ${port1_pci} || \ + { echo "Unbind ${port1_pci} failed"; exit 1; } +sudo ./usertools/dpdk-devbind.py -b ${port2_driver} ${port2_pci} || \ + { echo "Unbind ${port1_pci} failed"; exit 1; } + +sleep 2 + +if1_name=`./usertools/dpdk-devbind.py --s | grep "${port1_pci}" | sed -n 's/.*if=\(\S\)/\1/p' | awk -F' ' '{print $1}'` +if2_name=`./usertools/dpdk-devbind.py --s | grep "${port2_pci}" | sed -n 's/.*if=\(\S\)/\1/p' | awk -F' ' '{print $1}'` + +# Remove igb_uio driver +rmmod igb_uio || \ + { echo "Removing igb_uio failed"; exit 1; } + +cd ${PWDDIR} diff --git a/tests/dpdk/dpdk_scripts/init_dpdk.sh b/tests/dpdk/dpdk_scripts/init_dpdk.sh new file mode 100755 index 0000000000..bc4870e73e --- /dev/null +++ b/tests/dpdk/dpdk_scripts/init_dpdk.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +set -x + +# Setting variables +DPDK_VERSION=dpdk-17.05 +ROOTDIR=/tmp/openvpp-testing +PWDDIR=$(pwd) +cd ${ROOTDIR}/${DPDK_VERSION}/ + +modprobe uio +echo "RC = $?" + +lsmod | grep igb_uio +if [ $? -ne 1 ]; +then + rmmod igb_uio || \ + { echo "Failed to remove igb_uio module"; exit 1; } +fi + +lsmod | grep uio_pci_generic +if [ $? -ne 1 ]; +then + rmmod uio_pci_generic || \ + { echo "Failed to remove uio_pci_generic module"; exit 1; } +fi + +insmod ./x86_64-native-linuxapp-gcc/kmod/igb_uio.ko || \ + { echo "Failed to insert igb_uio module"; exit 1; } + +# Binding +./usertools/dpdk-devbind.py -b igb_uio $1 $2 || \ + { echo "Failed to bind interface $1 and $2 to igb_uio"; exit 1; } + +cd ${PWDDIR} diff --git a/tests/dpdk/dpdk_scripts/install_dpdk.sh b/tests/dpdk/dpdk_scripts/install_dpdk.sh new file mode 100755 index 0000000000..126e8cafc0 --- /dev/null +++ b/tests/dpdk/dpdk_scripts/install_dpdk.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +set -x + +# Setting variables +DPDK_VERSION=dpdk-17.05 +DPDK_DIR=${DPDK_VERSION} +DPDK_PACKAGE=${DPDK_DIR}.tar.xz +ROOTDIR=/tmp/openvpp-testing +PWDDIR=$(pwd) + +# Download the DPDK package +cd ${ROOTDIR} +wget "fast.dpdk.org/rel/${DPDK_PACKAGE}" || \ + { echo "Failed to download $DPDK_PACKAGE"; exit 1; } +tar xJvf ${DPDK_PACKAGE} || \ + { echo "Failed to extract $DPDK_PACKAGE"; exit 1; } + +# Compile the DPDK +cd ./${DPDK_DIR} +sudo sed -i 's/^CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n/CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=y/g' ./config/common_base +make install T=x86_64-native-linuxapp-gcc -j || \ + { echo "Failed to compile $DPDK_VERSION"; exit 1; } +cd ${PWDDIR} + +# Compile the l3fwd +export RTE_SDK=${ROOTDIR}/${DPDK_DIR}/ +export RTE_TARGET=x86_64-native-linuxapp-gcc +cd ${RTE_SDK}/examples/l3fwd +sudo sed -i 's/^#define RTE_TEST_RX_DESC_DEFAULT 128/#define RTE_TEST_RX_DESC_DEFAULT 2048/g' ./main.c +sudo sed -i 's/^#define RTE_TEST_TX_DESC_DEFAULT 512/#define RTE_TEST_TX_DESC_DEFAULT 2048/g' ./main.c +make -j || \ + { echo "Failed to compile l3fwd"; exit 1; } +cd ${PWDDIR} + +# Check and setup the hugepages +SYS_HUGEPAGE=$(cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages) +echo " SYS_HUGEPAGE = ${SYS_HUGEPAGE}" +if [ ${SYS_HUGEPAGE} -lt 4096 ]; then + echo " It is not enough, should be at least 4096" + MOUNT=$(mount | grep /mnt/huge) + while [ "${MOUNT}" != "" ] + do + sudo umount /mnt/huge + sleep 1 + MOUNT=$(mount | grep /mnt/huge) + done + + echo 2048 | sudo tee /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages + echo 2048 | sudo tee /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages + + echo " Mounting hugepages" + sudo mkdir -p /mnt/huge + sudo mount -t hugetlbfs nodev /mnt/huge/ || \ + { echo "Failed to mount hugepages"; exit 1; } +fi + +# Check and set the max map count +SYS_MAP=$(cat /proc/sys/vm/max_map_count) + +if [ ${SYS_MAP} -lt 200000 ]; then + echo 200000 | sudo tee /proc/sys/vm/max_map_count +fi diff --git a/tests/dpdk/dpdk_scripts/run_l2fwd.sh b/tests/dpdk/dpdk_scripts/run_l2fwd.sh new file mode 100755 index 0000000000..20c41d6d6f --- /dev/null +++ b/tests/dpdk/dpdk_scripts/run_l2fwd.sh @@ -0,0 +1,115 @@ +#!/bin/bash + +set -x + +# Setting variables +DPDK_VERSION=dpdk-17.05 +ROOTDIR=/tmp/openvpp-testing +TESTPMDLOG=screenlog.0 +PWDDIR=$(pwd) + +# Setting command line arguments +cpu_corelist=$1 +nb_cores=$2 +queue_nums=$3 +jumbo_frames=$4 + +# Try to kill the testpmd +sudo pgrep testpmd +if [ $? -eq "0" ]; then + success=false + sudo pkill testpmd + echo "RC = $?" + for attempt in {1..5}; do + echo "Checking if testpmd is still alive, attempt nr ${attempt}" + sudo pgrep testpmd + if [ $? -eq "1" ]; then + echo "testpmd is dead" + success=true + break + fi + echo "testpmd is still alive, waiting 1 second" + sleep 1 + done + if [ "$success" = false ]; then + echo "The command sudo pkill testpmd failed" + sudo pkill -9 testpmd + echo "RC = $?" + exit 1 + fi +else + echo "testpmd is not running" +fi + +# Try to kill the l3fwd +sudo pgrep l3fwd +if [ $? -eq "0" ]; then + success=false + sudo pkill l3fwd + echo "RC = $?" + for attempt in {1..5}; do + echo "Checking if l3fwd is still alive, attempt nr ${attempt}" + sudo pgrep l3fwd + if [ $? -eq "1" ]; then + echo "l3fwd is dead" + success=true + break + fi + echo "l3fwd is still alive, waiting 1 second" + sleep 1 + done + if [ "$success" = false ]; then + echo "The command sudo pkill l3fwd failed" + sudo pkill -9 l3fwd + echo "RC = $?" + exit 1 + fi +else + echo "l3fwd is not running" +fi + +# Remove hugepages +sudo rm -f /dev/hugepages/* + +sleep 2 + +cd ${ROOTDIR}/${DPDK_VERSION}/ +rm -f ${TESTPMDLOG} +if [ "$jumbo_frames" = "yes" ]; then + sudo sh -c "screen -dmSL DPDK-test ./x86_64-native-linuxapp-gcc/app/testpmd \ + -l ${cpu_corelist} -n 4 -- \ + --numa \ + --nb-ports=2 \ + --portmask=0x3 \ + --nb-cores=${nb_cores} \ + --max-pkt-len=9000 \ + --txqflags=0 \ + --forward-mode=io \ + --rxq=${queue_nums} \ + --txq=$((${nb_cores} + 1)) \ + --burst=64 \ + --rxd=1024 \ + --txd=1024 \ + --disable-link-check \ + --auto-start" +else + sudo sh -c "screen -dmSL DPDK-test ./x86_64-native-linuxapp-gcc/app/testpmd \ + -l ${cpu_corelist} -n 4 -- \ + --numa \ + --nb-ports=2 \ + --portmask=0x3 \ + --nb-cores=${nb_cores} \ + --forward-mode=io \ + --rxq=${queue_nums} \ + --txq=$((${nb_cores} + 1)) \ + --burst=64 \ + --rxd=1024 \ + --txd=1024 \ + --disable-link-check \ + --auto-start" +fi + +sleep 10 +less -r ${TESTPMDLOG} + +cd ${PWDDIR} diff --git a/tests/dpdk/dpdk_scripts/run_l3fwd.sh b/tests/dpdk/dpdk_scripts/run_l3fwd.sh new file mode 100755 index 0000000000..3363d71875 --- /dev/null +++ b/tests/dpdk/dpdk_scripts/run_l3fwd.sh @@ -0,0 +1,104 @@ +#!/bin/bash + +set -x + +# Setting variables +DPDK_VERSION=dpdk-17.05 +ROOTDIR=/tmp/openvpp-testing +L3FWDLOG=screenlog.0 +PWDDIR=$(pwd) + +cpu_corelist=$1 +port_config=$2 +adj_mac0=$3 +adj_mac1=$4 +jumbo_frames=$5 + +SCRIPT_NAME=$(basename $0) + +# define a function to get the l3fwd PID +function get_l3fwd_pid() +{ + pid_l3fwd=`sudo ps -elf | grep l3fwd | grep -v grep | grep -v SCREEN | grep -v ${SCRIPT_NAME} | awk '{print $4}'` + echo ${pid_l3fwd} +} + +# Try to kill the l3fwd +# Don't use the pgrep and pkill +l3fwd_pid=`get_l3fwd_pid` +echo ${l3fwd_pid} +if [ ! -z ${l3fwd_pid} ]; then + success=false + sudo kill -15 ${l3fwd_pid} + echo "RC = $?" + for attempt in {1..5}; do + echo "Checking if l3fwd is still alive, attempt nr ${attempt}" + l3fwd_pid=`get_l3fwd_pid` + if [ -z ${l3fwd_pid} ]; then + echo "l3fwd is dead" + success=true + break + fi + echo "l3fwd is still alive, waiting 1 second" + sleep 1 + done + if [ "$success" = false ]; then + echo "The command sudo kill -15 l3fwd failed" + sudo kill -9 ${l3fwd_pid} + echo "RC = $?" + exit 1 + fi +else + echo "l3fwd is not running" +fi + +# Try to kill the testpmd +sudo pgrep testpmd +if [ $? -eq "0" ]; then + success=false + sudo pkill testpmd + echo "RC = $?" + for attempt in {1..5}; do + echo "Checking if testpmd is still alive, attempt nr ${attempt}" + sudo pgrep testpmd + if [ $? -eq "1" ]; then + echo "testpmd is dead" + success=true + break + fi + echo "testpmd is still alive, waiting 1 second" + sleep 1 + done + if [ "$success" = false ]; then + echo "The command sudo pkill testpmd failed" + sudo pkill -9 testpmd + echo "RC = $?" + exit 1 + fi +else + echo "testpmd is not running" +fi + +sudo rm -f /dev/hugepages/* + +sleep 2 + +#run the l3fwd +cd ${ROOTDIR}/${DPDK_VERSION}/ +rm -f ${L3FWDLOG} +if [ "$jumbo_frames" = "yes" ]; then + sudo sh -c "screen -dmSL DPDK-test ./examples/l3fwd/build/app/l3fwd \ + -l ${cpu_corelist} -n 4 -- -P -L -p 0x3 --config='${port_config}' \ + --enable-jumbo --max-pkt-len=9000 --eth-dest=0,${adj_mac0} \ + --eth-dest=1,${adj_mac1} --parse-ptype" +else + sudo sh -c "screen -dmSL DPDK-test ./examples/l3fwd/build/app/l3fwd \ + -l ${cpu_corelist} -n 4 -- -P -L -p 0x3 --config='${port_config}' \ + --eth-dest=0,${adj_mac0} --eth-dest=1,${adj_mac1} --parse-ptype" +fi + +sleep 10 +less -r ${L3FWDLOG} + +cd ${PWDDIR} + diff --git a/tests/dpdk/perf/10ge2p1x520-eth-l2xcbase-testpmd-ndrpdrdisc.robot b/tests/dpdk/perf/10ge2p1x520-eth-l2xcbase-testpmd-ndrpdrdisc.robot new file mode 100644 index 0000000000..962552dae4 --- /dev/null +++ b/tests/dpdk/perf/10ge2p1x520-eth-l2xcbase-testpmd-ndrpdrdisc.robot @@ -0,0 +1,374 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/dpdk/default.robot +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.DPDK.DPDKTools +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | PERFTEST | NDRPDRDISC | 1NUMA +| ... | NIC_Intel-X520-DA2 | DPDK | ETH | L2XCFWD | BASE +| Suite Setup | Set up DPDK 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down DPDK 3-node performance topology +| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 frame forwarding. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 run the DPDK testpmd\ +| ... | application and use the io forwarding mode. DUT1 and DUT2 tested with\ +| ... | 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ +| ... | of packets transmitted. NDR and PDR are discovered for different\ +| ... | Ethernet L2 frame sizes using either binary search or linear search\ +| ... | algorithms with configured starting rate and final step that determines\ +| ... | throughput measurement resolution. Test packets are generated by TG on\ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\ +| ... | (flow-group per direction, 253 flows per flow-group) with all packets\ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\ +| ... | payload. MAC addresses are matching MAC addresses of the TG node\ +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames\ +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames\ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames\ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames\ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames\ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte\ +| | ... | frames using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte\ +| | ... | frames using binary search start at 10GE linerate, step 100kpps,\ +| | ... | LT=0.5%. +| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte\ +| | ... | frames using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte\ +| | ... | frames using binary search start at 10GE linerate, step 10kpps,\ +| | ... | LT=0.5%. +| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte\ +| | ... | frames using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte\ +| | ... | frames using binary search start at 10GE linerate, step 10kpps,\ +| | ... | LT=0.5%. +| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte\ +| | ... | frames using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte\ +| | ... | frames using binary search start at 10GE linerate, step 100kpps,\ +| | ... | LT=0.5%. +| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte\ +| | ... | frames using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte\ +| | ... | frames using binary search start at 10GE linerate, step 10kpps,\ +| | ... | LT=0.5%. +| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte\ +| | ... | frames using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte +| | ... | frames using binary search start at 10GE linerate, step 5kpps,\ +| | ... | LT=0.5%. +| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/dpdk/perf/10ge2p1x520-ethip4-ip4base-l3fwd-ndrpdrdisc.robot b/tests/dpdk/perf/10ge2p1x520-ethip4-ip4base-l3fwd-ndrpdrdisc.robot new file mode 100644 index 0000000000..c493c27e7b --- /dev/null +++ b/tests/dpdk/perf/10ge2p1x520-ethip4-ip4base-l3fwd-ndrpdrdisc.robot @@ -0,0 +1,421 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/dpdk/default.robot +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.DPDK.DPDKTools +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC | 1NUMA +| ... | NIC_Intel-X520-DA2 | DPDK | IP4FWD | BASE | ETH +| Suite Setup | Set up DPDK 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down DPDK 3-node performance topology +| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L3 IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 run the DPDK l3fwd application +| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst253_l3fwd + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L3 IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps. +| | ... +| | [Tags] | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L3FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} +| | ... | ${threshold} + +| tc02-64B-1t1c-ethip4-ip4base-l3fwd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L3 IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps, LT=0.5%. +| | ... +| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L3FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} +| | ... | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4-ip4base-l3fwd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L3 IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps. +| | ... +| | [Tags] | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L3FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} +| | ... | ${threshold} + +| tc04-1518B-1t1c-ethip4-ip4base-l3fwd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L3 IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L3FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} +| | ... | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip4-ip4base-l3fwd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L3 IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps. +| | ... +| | [Tags] | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L3FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} +| | ... | ${threshold} + +| tc06-9000B-1t1c-ethip4-ip4base-l3fwd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L3 IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps, LT=0.5%. +| | ... +| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L3FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} +| | ... | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L3 IPv4 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps. +| | ... +| | [Tags] | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L3FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} +| | ... | ${threshold} + +| tc08-64B-2t2c-ethip4-ip4base-l3fwd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L3 IPv4 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps, LT=0.5%. +| | ... +| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L3FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} +| | ... | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-ethip4-ip4base-l3fwd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L3 IPv4 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps. +| | ... +| | [Tags] | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L3FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} +| | ... | ${threshold} + +| tc10-1518B-2t2c-ethip4-ip4base-l3fwd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L3 IPv4 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L3FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} +| | ... | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip4-ip4base-l3fwd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L3 IPv4 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps. +| | ... +| | [Tags] | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L3FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} +| | ... | ${threshold} + +| tc12-9000B-2t2c-ethip4-ip4base-l3fwd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L3 IPv4 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps, LT=0.5%. +| | ... +| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L3FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} +| | ... | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-ethip4-ip4base-l3fwd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L3 IPv4 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps. +| | ... +| | [Tags] | 4T4C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L3FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} +| | ... | ${threshold} + +| tc14-64B-4t4c-ethip4-ip4base-l3fwd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L3 IPv4 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps, LT=0.5%. +| | ... +| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L3FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} +| | ... | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-ethip4-ip4base-l3fwd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L3 IPv4 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps. +| | ... +| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L3FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} +| | ... | ${threshold} + +| tc16-1518B-4t4c-ethip4-ip4base-l3fwd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L3 IPv4 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L3FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} +| | ... | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip4-ip4base-l3fwd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L3 IPv4 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps. +| | ... +| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L3FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} +| | ... | ${threshold} + +| tc18-9000B-4t4c-ethip4-ip4base-l3fwd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L3 IPv4 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps, LT=0.5%. +| | ... +| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L3FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} | ${min_rate} | ${max_rate} +| | ... | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/dpdk/perf/10ge2p1x710-eth-l2xcbase-testpmd-ndrpdrdisc.robot b/tests/dpdk/perf/10ge2p1x710-eth-l2xcbase-testpmd-ndrpdrdisc.robot new file mode 100644 index 0000000000..148c4ddd35 --- /dev/null +++ b/tests/dpdk/perf/10ge2p1x710-eth-l2xcbase-testpmd-ndrpdrdisc.robot @@ -0,0 +1,422 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/dpdk/default.robot +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.DPDK.DPDKTools +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | PERFTEST | NDRPDRDISC | 1NUMA +| ... | NIC_Intel-X710 | DPDK | ETH | L2XCFWD | BASE +| Suite Setup | Set up DPDK 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X710 +| Suite Teardown | Tear down DPDK 3-node performance topology +| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 frame forwarding. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 run the DPDK testpmd\ +| ... | application and use the io forwarding mode. DUT1 and DUT2 tested with\ +| ... | 2p10GE NIC X710 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ +| ... | of packets transmitted. NDR and PDR are discovered for different\ +| ... | Ethernet L2 frame sizes using either binary search or linear search\ +| ... | algorithms with configured starting rate and final step that determines\ +| ... | throughput measurement resolution. Test packets are generated by TG on\ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\ +| ... | (flow-group per direction, 253 flows per flow-group) with all packets\ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\ +| ... | payload. MAC addresses are matching MAC addresses of the TG node\ +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | ... +| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | ... +| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 4T4C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | ... +| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 5kpps, LT=0.5%. +| | ... +| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} \ No newline at end of file diff --git a/tests/dpdk/perf/40ge2p1xl710-eth-l2xcbase-testpmd-ndrpdrdisc.robot b/tests/dpdk/perf/40ge2p1xl710-eth-l2xcbase-testpmd-ndrpdrdisc.robot new file mode 100644 index 0000000000..5d5418c6c1 --- /dev/null +++ b/tests/dpdk/perf/40ge2p1xl710-eth-l2xcbase-testpmd-ndrpdrdisc.robot @@ -0,0 +1,424 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/dpdk/default.robot +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.DPDK.DPDKTools +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | PERFTEST | NDRPDRDISC | 1NUMA +| ... | NIC_Intel-XL710 | DPDK | ETH | L2XCFWD | BASE +| Suite Setup | Set up DPDK 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-XL710 +| Suite Teardown | Tear down DPDK 3-node performance topology +| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 frame forwarding. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 run the DPDK testpmd\ +| ... | application and use the io forwarding mode. DUT1 and DUT2 tested with\ +| ... | 2p40GE NIC XL710 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ +| ... | of packets transmitted. NDR and PDR are discovered for different\ +| ... | Ethernet L2 frame sizes using either binary search or linear search\ +| ... | algorithms with configured starting rate and final step that determines\ +| ... | throughput measurement resolution. Test packets are generated by TG on\ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\ +| ... | (flow-group per direction, 253 flows per flow-group) with all packets\ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\ +| ... | payload. MAC addresses are matching MAC addresses of the TG node\ +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G} | ${24500000000} +# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps} | ${18750000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | ... +| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '1' worker threads and '1' rxqueues with jumbo frames 'yes' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | ... +| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '2' worker threads and '1' rxqueues with jumbo frames 'yes' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 4T4C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | ... +| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'no' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-eth-l2xcbase-testpmd-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes' +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-eth-l2xcbase-testpmd-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2 frame forwarding config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 5kpps, LT=0.5%. +| | ... +| | [Tags] | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Start L2FWD '4' worker threads and '2' rxqueues with jumbo frames 'yes' +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} \ No newline at end of file diff --git a/tests/dpdk/perf/__init__.robot b/tests/dpdk/perf/__init__.robot new file mode 100644 index 0000000000..5801fd1b25 --- /dev/null +++ b/tests/dpdk/perf/__init__.robot @@ -0,0 +1,38 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Library | resources.libraries.python.DPDK.SetupDPDKTest +| Suite Setup | Run Keywords | Setup performance global Variables +| ... | AND | Setup DPDK Test | ${nodes} +| ... | AND | Get CPU Layout from all nodes | ${nodes} +| ... | AND | Update All Numa Nodes +| ... | ${nodes} | skip_tg=${True} + +*** Keywords *** +| Setup performance global Variables +| | [Documentation] +| | ... | Setup suite Variables. Variables are used across performance testing. +| | ... +| | ... | _NOTE:_ This KW sets following suite variables: +| | ... | - perf_trial_duration - Duration of traffic run [s]. +| | ... | - perf_pdr_loss_acceptance - Loss acceptance treshold +| | ... | - perf_pdr_loss_acceptance_type - Loss acceptance treshold type +| | ... | - perf_vm_image - Guest VM disk image +| | ... +| | Set Global Variable | ${perf_trial_duration} | 10 +| | Set Global Variable | ${perf_pdr_loss_acceptance} | 0.5 +| | Set Global Variable | ${perf_pdr_loss_acceptance_type} | percentage +| | Set Global Variable | ${perf_vm_image} | /var/lib/vm/csit-nested-1.6.img diff --git a/tests/func/__init__.robot b/tests/func/__init__.robot deleted file mode 100644 index 2016146e3b..0000000000 --- a/tests/func/__init__.robot +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Library | resources.libraries.python.SetupFramework -| Suite Setup | Run Keywords | Setup Framework | ${nodes} -| ... | AND | Setup All DUTs | ${nodes} -| ... | AND | Update All Interface Data On All Nodes | ${nodes} diff --git a/tests/func/cop/eth2p-ethip4-ip4base-copblklistbase-func.robot b/tests/func/cop/eth2p-ethip4-ip4base-copblklistbase-func.robot deleted file mode 100644 index 3230dabfae..0000000000 --- a/tests/func/cop/eth2p-ethip4-ip4base-copblklistbase-func.robot +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.Cop -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/l2_xconnect.robot -| Variables | resources/libraries/python/IPv4NodeAddress.py | ${nodes} -| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *COP Security IPv4 Blacklist Tests* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 on all links. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and -| ... | static routes. COP security black-lists are applied on DUT1 ingress -| ... | interface from TG. DUT2 is configured with L2XC. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in -| ... | one direction by TG on link to DUT1; on receive TG verifies packets for -| ... | correctness and drops as applicable. -| ... | *[Ref] Applicable standard specifications:* - -*** Variables *** -| ${tg_node}= | ${nodes['TG']} -| ${dut1_node}= | ${nodes['DUT1']} -| ${dut2_node}= | ${nodes['DUT2']} - -| ${dut1_if1_ip}= | 192.168.1.1 -| ${dut1_if2_ip}= | 192.168.2.1 -| ${dut1_if1_ip_GW}= | 192.168.1.2 -| ${dut1_if2_ip_GW}= | 192.168.2.2 - -| ${test_dst_ip}= | 32.0.0.1 -| ${test_src_ip}= | 16.0.0.1 - -| ${cop_dut_ip}= | 16.0.0.0 - -| ${ip_prefix}= | 24 -| ${nodes_ipv4_addresses}= | ${nodes_ipv4_addr} - -| ${fib_table_number}= | 1 - -*** Test Cases *** -| TC01: DUT drops IPv4 pkts with COP blacklist set with IPv4 src-addr -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 \ -| | ... | configure interface IPv4 addresses and routes in the main -| | ... | routing domain, add COP blacklist on interface to TG with IPv4 -| | ... | src-addr matching packets generated by TG; on DUT2 configure L2 -| | ... | xconnect. [Ver] Make TG send ICMPv4 Echo Req on its interface to -| | ... | DUT1; verify no ICMPv4 Echo Req pkts are received. [Ref] -| | Given Configure path in 3-node circular topology -| | ... | ${tg_node} | ${dut1_node} | ${dut2_node} | ${tg_node} -| | And Set interfaces in 3-node circular topology up -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | And Set Interface Address -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_if1_ip} | ${ip_prefix} -| | And Set Interface Address -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if2_ip} | ${ip_prefix} -| | And Add Arp On Dut -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_if1_ip_GW} | ${tg_to_dut1_mac} -| | And Add Arp On Dut -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if2_ip_GW} | ${tg_to_dut2_mac} -| | And Vpp Route Add | ${dut1_node} -| | ... | ${test_dst_ip} | ${ip_prefix} | ${dut1_if2_ip_GW} | ${dut1_to_dut2} -| | And Add fib table | ${dut1_node} -| | ... | ${cop_dut_ip} | ${ip_prefix} | ${fib_table_number} | drop -| | When COP Add whitelist Entry -| | ... | ${dut1_node} | ${dut1_to_tg} | ip4 | ${fib_table_number} -| | And COP interface enable or disable | ${dut1_node} | ${dut1_to_tg} | enable -| | Then Packet transmission from port to port should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} | ${dut1_to_dut2_mac} -| | ... | ${tg_to_dut2_mac} diff --git a/tests/func/cop/eth2p-ethip4-ip4base-copwhlistbase-func.robot b/tests/func/cop/eth2p-ethip4-ip4base-copwhlistbase-func.robot deleted file mode 100644 index c46a8c9c27..0000000000 --- a/tests/func/cop/eth2p-ethip4-ip4base-copwhlistbase-func.robot +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.Cop -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/l2_xconnect.robot -| Variables | resources/libraries/python/IPv4NodeAddress.py | ${nodes} -| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *COP Security IPv4 Whitelist Tests* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 on all links. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and -| ... | static routes. COP security white-lists are applied on DUT1 ingress -| ... | interface from TG. DUT2 is configured with L2XC. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in -| ... | one direction by TG on link to DUT1; on receive TG verifies packets for -| ... | correctness and drops as applicable. -| ... | *[Ref] Applicable standard specifications:* - -*** Variables *** -| ${tg_node}= | ${nodes['TG']} -| ${dut1_node}= | ${nodes['DUT1']} -| ${dut2_node}= | ${nodes['DUT2']} - -| ${dut1_if1_ip}= | 192.168.1.1 -| ${dut1_if2_ip}= | 192.168.2.1 -| ${dut1_if1_ip_GW}= | 192.168.1.2 -| ${dut1_if2_ip_GW}= | 192.168.2.2 - -| ${test_dst_ip}= | 32.0.0.1 -| ${test_src_ip}= | 16.0.0.1 - -| ${cop_dut_ip}= | 16.0.0.0 - -| ${ip_prefix}= | 24 -| ${nodes_ipv4_addresses}= | ${nodes_ipv4_addr} - -| ${fib_table_number}= | 1 - -*** Test Cases *** -| TC01: DUT permits IPv4 pkts with COP whitelist set with IPv4 src-addr -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 \ -| | ... | configure interface IPv4 addresses and routes in the main -| | ... | routing domain, add COP whitelist on interface to TG with IPv4 -| | ... | src-addr matching packets generated by TG; on DUT2 configure L2 -| | ... | xconnect. [Ver] Make TG send ICMPv4 Echo Req on its interface to -| | ... | DUT1; verify received ICMPv4 Echo Req pkts are correct. [Ref] -| | Given Configure path in 3-node circular topology -| | ... | ${tg_node} | ${dut1_node} | ${dut2_node} | ${tg_node} -| | And Set interfaces in 3-node circular topology up -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | And Set Interface Address -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_if1_ip} | ${ip_prefix} -| | And Set Interface Address -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if2_ip} | ${ip_prefix} -| | And Add Arp On Dut -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_if1_ip_GW} | ${tg_to_dut1_mac} -| | And Add Arp On Dut -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if2_ip_GW} | ${tg_to_dut2_mac} -| | And Vpp Route Add | ${dut1_node} -| | ... | ${test_dst_ip} | ${ip_prefix} | ${dut1_if2_ip_GW} | ${dut1_to_dut2} -| | And Add fib table | ${dut1_node} -| | ... | ${cop_dut_ip} | ${ip_prefix} | ${fib_table_number} | local -| | When COP Add whitelist Entry -| | ... | ${dut1_node} | ${dut1_to_tg} | ip4 | ${fib_table_number} -| | And COP interface enable or disable | ${dut1_node} | ${dut1_to_tg} | enable -| | Then Send packet and verify headers | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} | ${dut1_to_dut2_mac} -| | ... | ${tg_to_dut2_mac} diff --git a/tests/func/cop/eth2p-ethip6-ip6base-copblklistbase-func.robot b/tests/func/cop/eth2p-ethip6-ip6base-copblklistbase-func.robot deleted file mode 100644 index d0a395cf44..0000000000 --- a/tests/func/cop/eth2p-ethip6-ip6base-copblklistbase-func.robot +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.Cop -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/l2_xconnect.robot -| Variables | resources/libraries/python/IPv6NodesAddr.py | ${nodes} -| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *COP Security IPv6 Blacklist Tests* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-ICMPv6 on all links. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv6 routing and -| ... | static routes. COP security black-lists are applied on DUT1 ingress -| ... | interface from TG. DUT2 is configured with L2XC. -| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in -| ... | one direction by TG on link to DUT1; on receive TG verifies packets for -| ... | correctness and drops as applicable. -| ... | *[Ref] Applicable standard specifications:* - -*** Variables *** -| ${tg_node}= | ${nodes['TG']} -| ${dut1_node}= | ${nodes['DUT1']} -| ${dut2_node}= | ${nodes['DUT2']} - -| ${dut1_if1_ip}= | 3ffe:62::1 -| ${dut1_if2_ip}= | 3ffe:63::1 -| ${dut1_if1_ip_GW}= | 3ffe:62::2 -| ${dut1_if2_ip_GW}= | 3ffe:63::2 - -| ${dut2_if1_ip}= | 3ffe:72::1 -| ${dut2_if2_ip}= | 3ffe:73::1 - -| ${test_dst_ip}= | 3ffe:64::1 -| ${test_src_ip}= | 3ffe:61::1 - -| ${cop_dut_ip}= | 3ffe:61:: - -| ${ip_prefix}= | 64 - -| ${nodes_ipv6_addresses}= | ${nodes_ipv6_addr} - -| ${fib_table_number}= | 1 - -*** Test Cases *** -| TC01: DUT drops IPv6 pkts with COP blacklist set with IPv6 src-addr -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-ICMPv6. [Cfg] On DUT1 \ -| | ... | configure interface IPv6 addresses and routes in the main -| | ... | routing domain, add COP blacklist on interface to TG with IPv6 -| | ... | src-addr matching packets generated by TG; on DUT2 configure L2 -| | ... | xconnect. [Ver] Make TG send ICMPv6 Echo Req on its interface to -| | ... | DUT1; verify no ICMPv6 Echo Req pkts are received. [Ref] -| | Given Configure path in 3-node circular topology -| | ... | ${tg_node} | ${dut1_node} | ${dut2_node} | ${tg_node} -| | And Set interfaces in 3-node circular topology up -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | And VPP Set IF IPv6 Addr -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_if1_ip} | ${ip_prefix} -| | And VPP Set IF IPv6 Addr -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if2_ip} | ${ip_prefix} -| | And VPP Set IF IPv6 Addr -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_if1_ip} | ${ip_prefix} -| | And VPP Set IF IPv6 Addr -| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_if2_ip} | ${ip_prefix} -| | And Add IP Neighbor -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_if1_ip_GW} | ${tg_to_dut1_mac} -| | And Add IP Neighbor -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if2_ip_GW} | ${tg_to_dut2_mac} -| | And Vpp Route Add | ${dut1_node} -| | ... | ${test_dst_ip} | ${ip_prefix} | ${dut1_if2_ip_GW} | ${dut1_to_dut2} -| | And Vpp All Ra Suppress Link Layer | ${nodes} -| | And Add fib table | ${dut1_node} -| | ... | ${cop_dut_ip} | ${ip_prefix} | ${fib_table_number} | drop -| | When COP Add whitelist Entry -| | ... | ${dut1_node} | ${dut1_to_tg} | ip6 | ${fib_table_number} -| | And COP interface enable or disable | ${dut1_node} | ${dut1_to_tg} | enable -| | Then Packet transmission from port to port should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} | ${dut1_to_dut2_mac} -| | ... | ${tg_to_dut2_mac} diff --git a/tests/func/cop/eth2p-ethip6-ip6base-copwhlistbase-func.robot b/tests/func/cop/eth2p-ethip6-ip6base-copwhlistbase-func.robot deleted file mode 100644 index 3fb80ba308..0000000000 --- a/tests/func/cop/eth2p-ethip6-ip6base-copwhlistbase-func.robot +++ /dev/null @@ -1,101 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.Cop -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/l2_xconnect.robot -| Variables | resources/libraries/python/IPv6NodesAddr.py | ${nodes} -| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *COP Security IPv6 Whitelist Tests* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-ICMPv6 on all links. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv6 routing and -| ... | static routes. COP security white-lists are applied on DUT1 ingress -| ... | interface from TG. DUT2 is configured with L2XC. -| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in -| ... | one direction by TG on link to DUT1; on receive TG verifies packets for -| ... | correctness and drops as applicable. -| ... | *[Ref] Applicable standard specifications:* - -*** Variables *** -| ${tg_node}= | ${nodes['TG']} -| ${dut1_node}= | ${nodes['DUT1']} -| ${dut2_node}= | ${nodes['DUT2']} - -| ${dut1_if1_ip}= | 3ffe:62::1 -| ${dut1_if2_ip}= | 3ffe:63::1 -| ${dut1_if1_ip_GW}= | 3ffe:62::2 -| ${dut1_if2_ip_GW}= | 3ffe:63::2 - -| ${dut2_if1_ip}= | 3ffe:72::1 -| ${dut2_if2_ip}= | 3ffe:73::1 - -| ${test_dst_ip}= | 3ffe:64::1 -| ${test_src_ip}= | 3ffe:61::1 - -| ${cop_dut_ip}= | 3ffe:61:: - -| ${ip_prefix}= | 64 - -| ${nodes_ipv6_addresses}= | ${nodes_ipv6_addr} - -| ${fib_table_number}= | 1 - -*** Test Cases *** -| TC01: DUT permits IPv6 pkts with COP whitelist set with IPv6 src-addr -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-ICMPv6. [Cfg] On DUT1 \ -| | ... | configure interface IPv6 addresses and routes in the main -| | ... | routing domain, add COP whitelist on interface to TG with IPv6 -| | ... | src-addr matching packets generated by TG; on DUT2 configure L2 -| | ... | xconnect. [Ver] Make TG send ICMPv6 Echo Req on its interface to -| | ... | DUT1; verify received ICMPv6 Echo Req pkts are correct. [Ref] -| | Given Configure path in 3-node circular topology -| | ... | ${tg_node} | ${dut1_node} | ${dut2_node} | ${tg_node} -| | And Set interfaces in 3-node circular topology up -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | And VPP Set IF IPv6 Addr -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_if1_ip} | ${ip_prefix} -| | And VPP Set IF IPv6 Addr -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if2_ip} | ${ip_prefix} -| | And VPP Set IF IPv6 Addr -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_if1_ip} | ${ip_prefix} -| | And VPP Set IF IPv6 Addr -| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_if2_ip} | ${ip_prefix} -| | And Add IP Neighbor -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_if1_ip_GW} | ${tg_to_dut1_mac} -| | And Add IP Neighbor -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if2_ip_GW} | ${tg_to_dut2_mac} -| | And Vpp Route Add | ${dut1_node} -| | ... | ${test_dst_ip} | ${ip_prefix} | ${dut1_if2_ip_GW} | ${dut1_to_dut2} -| | And Vpp All Ra Suppress Link Layer | ${nodes} -| | And Add fib table | ${dut1_node} | ${cop_dut_ip} | ${ip_prefix} | -| | ... | ${fib_table_number} | local -| | When COP Add whitelist Entry | ${dut1_node} | ${dut1_to_tg} | ip6 | -| | ... | ${fib_table_number} -| | And COP interface enable or disable | ${dut1_node} | ${dut1_to_tg} | enable -| | Then Send packet and verify headers | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} | ${dut1_to_dut2_mac} -| | ... | ${tg_to_dut2_mac} diff --git a/tests/func/dhcp/eth2p-ethip4-ip4base-ip4dhcpclient-func.robot b/tests/func/dhcp/eth2p-ethip4-ip4base-ip4dhcpclient-func.robot deleted file mode 100644 index cf7b40bef7..0000000000 --- a/tests/func/dhcp/eth2p-ethip4-ip4base-ip4dhcpclient-func.robot +++ /dev/null @@ -1,117 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/dhcp_client.robot -| Resource | resources/libraries/robot/ipv4.robot -| Library | resources.libraries.python.Trace -| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *DHCPv4 Client related test cases* - -*** Variables *** -| ${client_hostname}= | dhcp-client -| ${client_ip}= | 192.168.23.10 -| ${client_mask}= | 255.255.255.0 -| ${server_ip}= | 192.168.23.1 -| ${own_xid}= | 11112222 -| ${lease_time}= | ${15} - -*** Test Cases *** -| TC01: VPP sends a DHCP DISCOVER -| | [Documentation] | Configure DHCPv4 client on interface to TG without -| | ... | hostname and check if DHCPv4 DISCOVER message contains all -| | ... | required fields with expected values. -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | When Set DHCP client on Interface | ${dut_node} | ${dut_to_tg_if1} -| | Then Verify DHCP DISCOVER header | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} - -| TC02: VPP sends a DHCPv4 DISCOVER with hostname -| | [Documentation] | Configure DHCPv4 client on interface to TG with hostname -| | ... | and check if DHCPv4 DISCOVER message contains all required -| | ... | fields with expected values. -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | When Set DHCP client on Interface | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${client_hostname} -| | Then Verify DHCP DISCOVER header | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} | ${client_hostname} - -| TC03: VPP sends DHCPv4 REQUEST after OFFER -| | [Documentation] | Configure DHCPv4 client on interface to TG and check if -| | ... | DHCPv4 REQUEST message contains all required fields. -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And VPP Route Add | ${dut_node} | 255.255.255.255 | 32 | ${NONE} | local -| | ... | ${FALSE} | ${NONE} -| | When Set DHCP client on Interface | ${dut_node} | ${dut_to_tg_if1} -| | Then Verify DHCP REQUEST after OFFER | ${tg_node} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if1_mac} | ${server_ip} -| | ... | ${dut_to_tg_if1_mac} | ${client_ip} | ${client_mask} - -| TC04: VPP doesn't send DHCPv4 REQUEST after OFFER with wrong XID -| | [ Tags ] | EXPECTED_FAILING -| | [Documentation] | Configure DHCPv4 client on interface to TG. If server -| | ... | sends DHCPv4 OFFER with different XID as in DHCPv4 -| | ... | DISCOVER, DHCPv4 REQUEST message shouldn't be sent. -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And VPP Route Add | ${dut_node} | 255.255.255.255 | 32 | ${NONE} | local -| | ... | ${FALSE} | ${NONE} -| | When Set DHCP client on Interface | ${dut_node} | ${dut_to_tg_if1} -| | Then Run Keyword And Expect Error | DHCP REQUEST Rx timeout -| | ... | Verify DHCP REQUEST after OFFER | ${tg_node} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if1_mac} | ${server_ip} -| | ... | ${dut_to_tg_if1_mac} | ${client_ip} | ${client_mask} -| | ... | offer_xid=${own_xid} - -| TC05: VPP honors DHCPv4 lease time -| | [Documentation] | Send IP configuration to the VPP client via DHCPv4. -| | ... | Address is checked with ICMP echo request and there should -| | ... | be no reply for echo request when lease has expired. -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And VPP Route Add | ${dut_node} | 255.255.255.255 | 32 | ${NONE} | local -| | ... | ${FALSE} | ${NONE} -| | When Set DHCP client on Interface | ${dut_node} | ${dut_to_tg_if1} -| | And Configure IP on client via DHCP -| | ... | ${tg_node} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if1_mac} | ${server_ip} -| | ... | ${client_ip} | ${client_mask} -| | ... | ${lease_time} -| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if1} | ${server_ip} -| | ... | ${tg_to_dut_if1_mac} -| | Then Send ICMP echo request and verify answer -| | ... | ${tg_node} | ${tg_to_dut_if1} -| | ... | ${dut_to_tg_if1_mac} | ${tg_to_dut_if1_mac} | ${client_ip} -| | ... | ${server_ip} -| | And Sleep | ${lease_time} -| | And Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP echo request and verify answer | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} | ${tg_to_dut_if1_mac} -| | ... | ${client_ip} | ${server_ip} diff --git a/tests/func/dhcp/eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot b/tests/func/dhcp/eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot deleted file mode 100644 index 3e89c63f73..0000000000 --- a/tests/func/dhcp/eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot +++ /dev/null @@ -1,93 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/dhcp_proxy.robot -| Resource | resources/libraries/robot/ipv4.robot -| Library | resources.libraries.python.Trace -| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *DHCPv4 proxy test cases* -| ... -| ... | *[Top] Network Topologies:* TG = DUT -| ... | with two links between the nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP-BOOTP-DHCP -| ... | *[Cfg] DUT configuration:* DUT is configured with DHCPv4 proxy. -| ... | *[Ver] TG verification:* Test DHCPv4 packets are sent -| ... | on TG on first link to DUT and received on TG on second link. -| ... | On receive TG verifies if DHCPv4 packets are valid. - -*** Variables *** -| ${dut_to_tg_if1_ip}= | 172.16.0.1 -| ${dut_to_tg_if2_ip}= | 192.168.0.1 -| ${dhcp_server_ip}= | 192.168.0.100 -| ${client_ip}= | 172.16.0.2 -| ${prefix_length}= | 24 - -| ${discover_src_ip}= | 0.0.0.0 -| ${valid_discover_dst_ip}= | 255.255.255.255 -| ${invalid_discover_dst_ip}= | 255.255.255.1 - -*** Test Cases *** -| TC01: VPP proxies valid DHCPv4 request to DHCPv4 server -| | [Documentation] | -| | ... | [Top] TG=DUT \ -| | ... | [Enc] Eth-IPv4-UDP-BOOTP-DHCP -| | ... | [Cfg] On DUT setup DHCPv4 proxy. -| | ... | [Ver] Make TG verify matching DHCPv4 packets between client and DHCPv4 -| | ... | server through DHCP proxy. -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And VPP Route Add | ${dut_node} | 255.255.255.255 | 32 | ${NONE} | local -| | ... | ${FALSE} | ${NONE} -| | And Set Interface Address | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} -| | And Set Interface Address | ${dut_node} -| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} -| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if2} | ${dhcp_server_ip} -| | ... | ${tg_to_dut_if2_mac} -| | When DHCP Proxy Config | ${dut_node} | ${dhcp_server_ip} -| | ... | ${dut_to_tg_if1_ip} -| | Then Send DHCP messages and check answer | ${tg_node} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if2} | ${dhcp_server_ip} | ${tg_to_dut_if2_mac} -| | ... | ${client_ip} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_ip} - -| TC02: VPP proxy ignores invalid DHCPv4 request -| | [Documentation] | -| | ... | [Top] TG=DUT \ -| | ... | [Enc] Eth-IPv4-UDP-BOOTP-DHCP -| | ... | [Cfg] On DUT setup DHCPv4 proxy. -| | ... | [Ver] Make TG verify matching invalid DHCPv4 packets are dropped. -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And VPP Route Add | ${dut_node} | 255.255.255.255 | 32 | ${NONE} | local -| | ... | ${FALSE} | ${NONE} -| | And Set Interface Address | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} -| | And Set Interface Address | ${dut_node} -| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} -| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if2} | ${dhcp_server_ip} -| | ... | ${tg_to_dut_if2_mac} -| | When DHCP Proxy Config | ${dut_node} | ${dhcp_server_ip} -| | ... | ${dut_to_tg_if1_ip} -| | Then Send DHCP DISCOVER and check answer | ${tg_node} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if2} | ${discover_src_ip} | ${valid_discover_dst_ip} -| | And DHCP DISCOVER should fail | ${tg_node} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if2} | ${discover_src_ip} | ${invalid_discover_dst_ip} diff --git a/tests/func/dhcp/eth2p-ethip6-ip6base-ip6dhcpproxy-func.robot b/tests/func/dhcp/eth2p-ethip6-ip6base-ip6dhcpproxy-func.robot deleted file mode 100644 index 88f0fbdcb5..0000000000 --- a/tests/func/dhcp/eth2p-ethip6-ip6base-ip6dhcpproxy-func.robot +++ /dev/null @@ -1,66 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/dhcp_proxy.robot -| Resource | resources/libraries/robot/ipv6.robot -| Library | resources.libraries.python.Trace -| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *DHCPv6 proxy test cases* -| ... -| ... | *[Top] Network Topologies:* TG = DUT -| ... | with two links between the nodes. -| ... | *[Cfg] DUT configuration:* DUT is configured with DHCPv6 proxy. -| ... | *[Ver] TG verification:* Test DHCPv6 packets are sent -| ... | on TG on first link to DUT and received on TG on second link. -| ... | On receive TG verifies if DHCPv6 packets are valid -| ... | *[Ref] Applicable standard specifications:* RFC 3315 - - -*** Variables *** -| ${dut_to_tg_if1_ip}= | 3ffe:62::1 -| ${dut_to_tg_if2_ip}= | 3ffe:63::1 -| ${dhcp_server_ip}= | 3ffe:63::2 -| ${prefix_length}= | 64 - - -*** Test Cases *** -| TC01: VPP proxies valid DHCPv6 request to DHCPv6 server -| | [Documentation] | -| | ... | [Top] TG=DUT -| | ... | [Cfg] On DUT setup DHCP proxy. -| | ... | [Ver] Make TG verify matching DHCPv6 packets between client and \ -| | ... | DHCPv6 server through DHCPv6 proxy. -| | ... | [Ref] RFC 3315 -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And Vpp Set If Ipv6 Addr | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} -| | And Vpp Set If Ipv6 Addr | ${dut_node} -| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} -| | And VPP Route Add | ${dut_node} | ff02::1:2 | 128 | ${NONE} | local -| | ... | ${FALSE} | ${NONE} -| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${dhcp_server_ip} -| | ... | ${tg_to_dut_if2_mac} -| | And Vpp All Ra Suppress Link Layer | ${nodes} -| | When DHCP Proxy Config | ${dut_node} | ${dhcp_server_ip} -| | ... | ${dut_to_tg_if1_ip} -| | Then Send DHCPv6 Messages | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} -| | ... | ${dut_to_tg_if1_ip} | ${dut_to_tg_if1_mac} | ${dhcp_server_ip} -| | ... | ${tg_to_dut_if2_mac} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if2_mac} diff --git a/tests/func/fds/eth2p-dot1q-l2bdbasemaclrn-eth-4vhost-2vm-fds-provider-nets-func.robot b/tests/func/fds/eth2p-dot1q-l2bdbasemaclrn-eth-4vhost-2vm-fds-provider-nets-func.robot deleted file mode 100644 index dc1ab41018..0000000000 --- a/tests/func/fds/eth2p-dot1q-l2bdbasemaclrn-eth-4vhost-2vm-fds-provider-nets-func.robot +++ /dev/null @@ -1,341 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/double_qemu_setup.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/fds/default.robot -| Library | resources.libraries.python.Trace -| ... -| Force Tags | HW_ENV | VM_ENV | SKIP_PATCH -| ... -| Test Setup | Set up FDS functional test | ${nodes} -| ... -| Test Teardown | Tear down FDS functional test | ${nodes} -| ... | ${dut1_node} | ${qemu_node1} | ${dut2_node} | ${qemu_node2} -| ... -| Documentation | *Provider network FDS related.* -| ... -| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG -| ... | with one link between nodes. Test packets are sent in both directions -| ... | between namespaces in DUT1 and DUT2 with both positive and negative -| ... | scenarios tested. - -*** Variables *** -| ${bd_id1}= | 1 -| ${bd_id2}= | 2 -| ${shg1}= | 3 -| ${shg2}= | 4 -| ${sock1}= | /tmp/sock1 -| ${sock2}= | /tmp/sock2 -| ${sock3}= | /tmp/sock3 -| ${sock4}= | /tmp/sock4 - -| ${bid_b}= | 23 -| ${bid_r}= | 24 - -| ${vlan_red}= | 50 -| ${vlan_blue}= | 60 - -| ${dut1_if_ip}= | 16.0.0.1 -| ${dut2_if_ip}= | 16.0.0.2 - -| ${dut1_blue1}= | 16.0.10.1 -| ${dut1_blue2}= | 16.0.10.2 -| ${dut1_red1}= | 16.0.10.3 -| ${dut1_red2}= | 16.0.10.4 - -| ${dut2_blue1}= | 16.0.20.1 -| ${dut2_blue2}= | 16.0.20.2 -| ${dut2_red1}= | 16.0.20.3 -| ${dut2_red2}= | 16.0.20.4 - -| ${namespace1}= | nmspace1 -| ${namespace2}= | nmspace2 -| ${namespace3}= | nmspace3 -| ${namespace4}= | nmspace4 - -| ${prefix_length}= | 16 - -*** Test Cases *** -| Provider network test cases with provider physical networks (VLAN) -| | [Documentation] | Ping among all ports inside the same network should pass. -| | ... | a) test l2 connectivity inside every network -| | ... | b) test l2 connectivity between networks -| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO | VPP_VM_ENV -| | Given Configure path in 3-node circular topology | ${nodes['TG']} -| | ... | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if_ip} -| | ... | ${prefix_length} -| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${dut2_if_ip} -| | ... | ${prefix_length} -| | And Set Interface State | ${dut1_node} | ${dut1_to_dut2} | up -| | And Set Interface State | ${dut2_node} | ${dut2_to_dut1} | up -| | ${vhost_if1_DUT1}= | And Vpp Create Vhost User Interface -| | ... | ${dut1_node} | ${sock1} -| | ${vhost_if2_DUT1}= | And Vpp Create Vhost User Interface -| | ... | ${dut1_node} | ${sock2} -| | ${vhost_if3_DUT1}= | And Vpp Create Vhost User Interface -| | ... | ${dut1_node} | ${sock3} -| | ${vhost_if4_DUT1}= | And Vpp Create Vhost User Interface -| | ... | ${dut1_node} | ${sock4} -| | ${dut1_vhosts}= | And Create List | ${vhost_if1_DUT1} | ${vhost_if2_DUT1} -| | ... | ${vhost_if3_DUT1} | ${vhost_if4_DUT1} -| | ${vhost_if1_DUT2}= | And Vpp Create Vhost User Interface -| | ... | ${dut2_node} | ${sock1} -| | ${vhost_if2_DUT2}= | And Vpp Create Vhost User Interface -| | ... | ${dut2_node} | ${sock2} -| | ${vhost_if3_DUT2}= | And Vpp Create Vhost User Interface -| | ... | ${dut2_node} | ${sock3} -| | ${vhost_if4_DUT2}= | And Vpp Create Vhost User Interface -| | ... | ${dut2_node} | ${sock4} -| | ${dut2_vhosts}= | And Create List | ${vhost_if1_DUT2} | ${vhost_if2_DUT2} -| | ... | ${vhost_if3_DUT2} | ${vhost_if4_DUT2} -| | When Configure QEMU vhost and run it | ${dut1_node} -| | ... | ${sock1} -| | ... | ${sock2} -| | ... | ${sock3} -| | ... | ${sock4} -| | ... | ${dut1_blue1} -| | ... | ${dut1_blue2} -| | ... | ${dut1_red1} -| | ... | ${dut1_red2} -| | ... | ${prefix_length} -| | ... | qemu_node1 -| | ... | 04 -| | And Configure QEMU vhost and run it | ${dut2_node} -| | ... | ${sock1} -| | ... | ${sock2} -| | ... | ${sock3} -| | ... | ${sock4} -| | ... | ${dut2_blue1} -| | ... | ${dut2_blue2} -| | ... | ${dut2_red1} -| | ... | ${dut2_red2} -| | ... | ${prefix_length} -| | ... | qemu_node2 -| | ... | 06 -| | And Setup VLAN and BD on Dut | ${dut1_node} | ${dut1_to_dut2} -| | ... | @{dut1_vhosts} -| | And Setup VLAN and BD on Dut | ${dut2_node} | ${dut2_to_dut1} -| | ... | @{dut2_vhosts} -| | Then Positive Scenario Ping From DUT1 - Intra network -| | And Positive Scenario Ping From DUT1 - Inter network -| | And Positive Scenario Ping From DUT2 - Intra network -| | And Positive Scenario Ping From DUT2 - Inter network -| | And Negative Scenario Ping From DUT1 - Intra network -| | And Negative Scenario Ping From DUT1 - Inter network -| | And Negative Scenario Ping From DUT2 - Intra network -| | And Negative Scenario Ping From DUT2 - Inter network - -*** Keywords *** -| Setup VLAN and BD on Dut -| | [Documentation] | Setup VLAN and bridge domain on specific DUT and -| | ... | subsequently interconnect them properly. Also set VLAN tag -| | ... | rewrite on vhosts. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - Node where to setup VLAN and BD. Type: dict -| | ... | - interface - Interface where to create VLAN sub-interface. -| | ... | Type: string -| | ... | - vhosts - List containing vhost interfaces. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Setup VLAN and BD on Dut \| ${dut_node} \| GigabitEthernet0/6/0 \ -| | ... | \| @{vhosts} \| -| | ... -| | [Arguments] | ${dut_node} | ${interface} | @{vhosts} -| | Create bridge domain | ${dut_node} | ${bid_b} | learn=${TRUE} -| | Create bridge domain | ${dut_node} | ${bid_r} | learn=${TRUE} -| | ${interface_name}= | Get interface name | ${dut_node} | ${interface} -| | ${vlan1_name} | ${vlan1_index}= | Create Vlan Subinterface -| | ... | ${dut_node} | ${interface_name} | ${vlan_blue} -| | ${vlan2_name} | ${vlan2_index}= | Create Vlan Subinterface -| | ... | ${dut_node} | ${interface_name} | ${vlan_red} -| | L2 Vlan Tag Rewrite | ${dut_node} | @{vhosts}[0] | push-1 -| | ... | tag1_id=${vlan_blue} -| | L2 Vlan Tag Rewrite | ${dut_node} | @{vhosts}[1] | push-1 -| | ... | tag1_id=${vlan_blue} -| | L2 Vlan Tag Rewrite | ${dut_node} | @{vhosts}[2] | push-1 -| | ... | tag1_id=${vlan_red} -| | L2 Vlan Tag Rewrite | ${dut_node} | @{vhosts}[3] | push-1 -| | ... | tag1_id=${vlan_red} -| | Add interface to bridge domain | ${dut_node} -| | ... | ${vlan1_index} | ${bid_b} | 0 -| | Add interface to bridge domain | ${dut_node} -| | ... | @{vhosts}[0] | ${bid_b} | 0 -| | Add interface to bridge domain | ${dut_node} -| | ... | @{vhosts}[1] | ${bid_b} | 0 -| | Add interface to bridge domain | ${dut_node} -| | ... | ${vlan2_index} | ${bid_r} | 0 -| | Add interface to bridge domain | ${dut_node} -| | ... | @{vhosts}[2] | ${bid_r} | 0 -| | Add interface to bridge domain | ${dut_node} -| | ... | @{vhosts}[3] | ${bid_r} | 0 - -| Positive Scenario Ping From DUT1 - Intra network -| | [Documentation] | Send ping packets from specified namespaces to other in -| | ... | order to test connectivity. -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue2} | ${namespace1} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue1} | ${namespace2} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red2} | ${namespace3} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red1} | ${namespace4} - -| Positive Scenario Ping From DUT1 - Inter network -| | [Documentation] | Send ping packets from specified namespaces to other in -| | ... | order to test connectivity. -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} | ${namespace1} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} | ${namespace1} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} | ${namespace2} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} | ${namespace2} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} | ${namespace3} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} | ${namespace3} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} | ${namespace4} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} | ${namespace4} - -| Positive Scenario Ping From DUT2 - Intra network -| | [Documentation] | Send ping packets from specified namespaces to other in -| | ... | order to test connectivity. -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue2} | ${namespace1} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue1} | ${namespace2} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red2} | ${namespace3} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red1} | ${namespace4} - -| Positive Scenario Ping From DUT2 - Inter network -| | [Documentation] | Send ping packets from specified namespaces to other in -| | ... | order to test connectivity. -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} | ${namespace1} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} | ${namespace1} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} | ${namespace2} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} | ${namespace2} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} | ${namespace3} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} | ${namespace3} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} | ${namespace4} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} | ${namespace4} - -| Negative Scenario Ping From DUT1 - Intra network -| | [Documentation] | Send ping packets from specified namespaces to other in -| | ... | order to test unreachability of namespaces. -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red1} -| | ... | ${namespace1} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red2} -| | ... | ${namespace1} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red1} -| | ... | ${namespace2} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red2} -| | ... | ${namespace2} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue1} -| | ... | ${namespace3} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue2} -| | ... | ${namespace3} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue1} -| | ... | ${namespace4} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue2} -| | ... | ${namespace4} - -| Negative Scenario Ping From DUT1 - Inter network -| | [Documentation] | Send ping packets from specified namespaces to other in -| | ... | order to test unreachability of namespaces. -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} -| | ... | ${namespace1} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} -| | ... | ${namespace1} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} -| | ... | ${namespace2} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} -| | ... | ${namespace2} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} -| | ... | ${namespace3} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} -| | ... | ${namespace3} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} -| | ... | ${namespace4} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} -| | ... | ${namespace4} - -| Negative Scenario Ping From DUT2 - Intra network -| | [Documentation] | Send ping packets from specified namespaces to other in -| | ... | order to test unreachability of namespaces. -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red1} -| | ... | ${namespace1} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red2} -| | ... | ${namespace1} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red1} -| | ... | ${namespace2} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red2} -| | ... | ${namespace2} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue1} -| | ... | ${namespace3} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue2} -| | ... | ${namespace3} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue1} -| | ... | ${namespace4} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue2} -| | ... | ${namespace4} - -| Negative Scenario Ping From DUT2 - Inter network -| | [Documentation] | Send ping packets from specified namespaces to other in -| | ... | order to test unreachability of namespaces. -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} -| | ... | ${namespace1} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} -| | ... | ${namespace1} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} -| | ... | ${namespace2} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} -| | ... | ${namespace2} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} -| | ... | ${namespace3} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} -| | ... | ${namespace3} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} -| | ... | ${namespace4} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} -| | ... | ${namespace4} diff --git a/tests/func/fds/eth2p-ethip4vxlan-l2bdbasemaclrn--eth-4vhost-2vm-fds-tenant-nets-func.robot b/tests/func/fds/eth2p-ethip4vxlan-l2bdbasemaclrn--eth-4vhost-2vm-fds-tenant-nets-func.robot deleted file mode 100644 index 0a2cd0b515..0000000000 --- a/tests/func/fds/eth2p-ethip4vxlan-l2bdbasemaclrn--eth-4vhost-2vm-fds-tenant-nets-func.robot +++ /dev/null @@ -1,333 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/double_qemu_setup.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/fds/default.robot -| Library | resources.libraries.python.Trace -| ... -| Force Tags | HW_ENV | VM_ENV | SKIP_PATCH -| ... -| Test Setup | Set up FDS functional test | ${nodes} -| ... -| Test Teardown | Tear down FDS functional test | ${nodes} -| ... | ${dut1_node} | ${qemu_node1} | ${dut2_node} | ${qemu_node2} -| ... -| Documentation | *Tenant network FDS related.* -| ... -| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG -| ... | with one link between nodes. Test packets are sent in both directions -| ... | between namespaces in DUT1 and DUT2 with both positive and negative -| ... | scenarios tested. - -*** Variables *** -| ${bd_id1}= | 1 -| ${bd_id2}= | 2 -| ${shg1}= | 3 -| ${shg2}= | 4 -| ${sock1}= | /tmp/sock1 -| ${sock2}= | /tmp/sock2 -| ${sock3}= | /tmp/sock3 -| ${sock4}= | /tmp/sock4 - -| ${vni_blue}= | 23 -| ${vni_red}= | 24 - -| ${bid_b}= | 23 -| ${bid_r}= | 24 - -| ${dut1_if_ip}= | 16.0.0.1 -| ${dut2_if_ip}= | 16.0.0.2 - -| ${dut1_blue1}= | 16.0.10.1 -| ${dut1_blue2}= | 16.0.10.2 -| ${dut1_red1}= | 16.0.10.3 -| ${dut1_red2}= | 16.0.10.4 - -| ${dut2_blue1}= | 16.0.20.1 -| ${dut2_blue2}= | 16.0.20.2 -| ${dut2_red1}= | 16.0.20.3 -| ${dut2_red2}= | 16.0.20.4 - -| ${namespace1}= | nmspace1 -| ${namespace2}= | nmspace2 -| ${namespace3}= | nmspace3 -| ${namespace4}= | nmspace4 - -| ${prefix_length}= | 16 - -*** Test Cases *** -| L2 test cases with tenant networks (VXLAN) -| | [Documentation] | Ping among all ports inside the same network should pass. -| | ... | a) test l2 connectivity inside every network -| | ... | b) test l2 connectivity between networks -| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO | VPP_VM_ENV -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set Interface Address -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if_ip} | ${prefix_length} -| | And Set Interface Address -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_if_ip} | ${prefix_length} -| | And Set Interface State | ${dut1_node} | ${dut1_to_dut2} | up -| | And Set Interface State | ${dut2_node} | ${dut2_to_dut1} | up -| | ${vhost_if1_DUT1}= | And Vpp Create Vhost User Interface -| | ... | ${dut1_node} | ${sock1} -| | ${vhost_if2_DUT1}= | And Vpp Create Vhost User Interface -| | ... | ${dut1_node} | ${sock2} -| | ${vhost_if3_DUT1}= | And Vpp Create Vhost User Interface -| | ... | ${dut1_node} | ${sock3} -| | ${vhost_if4_DUT1}= | And Vpp Create Vhost User Interface -| | ... | ${dut1_node} | ${sock4} -| | ${dut1_vhosts}= | And Create List | ${vhost_if1_DUT1} | ${vhost_if2_DUT1} -| | ... | ${vhost_if3_DUT1} | ${vhost_if4_DUT1} -| | ${vhost_if1_DUT2}= | And Vpp Create Vhost User Interface -| | ... | ${dut2_node} | ${sock1} -| | ${vhost_if2_DUT2}= | And Vpp Create Vhost User Interface -| | ... | ${dut2_node} | ${sock2} -| | ${vhost_if3_DUT2}= | And Vpp Create Vhost User Interface -| | ... | ${dut2_node} | ${sock3} -| | ${vhost_if4_DUT2}= | And Vpp Create Vhost User Interface -| | ... | ${dut2_node} | ${sock4} -| | ${dut2_vhosts}= | And Create List | ${vhost_if1_DUT2} | ${vhost_if2_DUT2} -| | ... | ${vhost_if3_DUT2} | ${vhost_if4_DUT2} -| | When Configure QEMU vhost and run it | ${dut1_node} -| | ... | ${sock1} -| | ... | ${sock2} -| | ... | ${sock3} -| | ... | ${sock4} -| | ... | ${dut1_blue1} -| | ... | ${dut1_blue2} -| | ... | ${dut1_red1} -| | ... | ${dut1_red2} -| | ... | ${prefix_length} -| | ... | qemu_node1 -| | ... | 04 -| | And Configure QEMU vhost and run it | ${dut2_node} -| | ... | ${sock1} -| | ... | ${sock2} -| | ... | ${sock3} -| | ... | ${sock4} -| | ... | ${dut2_blue1} -| | ... | ${dut2_blue2} -| | ... | ${dut2_red1} -| | ... | ${dut2_red2} -| | ... | ${prefix_length} -| | ... | qemu_node2 -| | ... | 06 -| | And Setup VXLAN and BD on Dut | ${dut1_node} | ${dut1_if_ip} | ${dut2_if_ip} -| | ... | @{dut1_vhosts} -| | And Setup VXLAN and BD on Dut | ${dut2_node} | ${dut2_if_ip} | ${dut1_if_ip} -| | ... | @{dut2_vhosts} -| | Then Positive Scenario Ping From DUT1 - Intra network -| | And Positive Scenario Ping From DUT1 - Inter network -| | And Positive Scenario Ping From DUT2 - Intra network -| | And Positive Scenario Ping From DUT2 - Inter network -| | And Negative Scenario Ping From DUT1 - Intra network -| | And Negative Scenario Ping From DUT1 - Inter network -| | And Negative Scenario Ping From DUT2 - Intra network -| | And Negative Scenario Ping From DUT2 - Inter network - -*** Keywords *** -| Setup VXLAN and BD on Dut -| | [Documentation] | Setup VXLAN and bridge domain on specific DUT and -| | ... | subsequently interconnect them properly. -| | ... -| | ... | *Arguments:* -| | ... | - dut_node - Node where to setup vxlan and BD. Type: dict -| | ... | - src_ip - Source IP for VXLAN. Type: string -| | ... | - dst_ip - Destination IP for vxlan. Type: string -| | ... | - vhosts - List containing vhost interfaces. -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Setup VXLAN and BD on Dut \| ${dut_node} \| 16.0.0.1 \| 16.0.0.1 \ -| | ... | \| @{vhosts} \| -| | ... -| | [Arguments] | ${dut_node} | ${src_ip} | ${dst_ip} | @{vhosts} -| | Create bridge domain -| | ... | ${dut_node} | ${bid_b} | learn=${TRUE} -| | Create bridge domain -| | ... | ${dut_node} | ${bid_r} | learn=${TRUE} -| | ${vxlan1_if}= | Create VXLAN interface | ${dut_node} | ${vni_blue} -| | ... | ${src_ip} | ${dst_ip} -| | ${vxlan2_if}= | Create VXLAN interface | ${dut_node} | ${vni_red} -| | ... | ${src_ip} | ${dst_ip} -| | Add interface to bridge domain -| | ... | ${dut_node} | ${vxlan1_if} | ${bid_b} | 0 -| | Add interface to bridge domain -| | ... | ${dut_node} | @{vhosts}[0] | ${bid_b} | 0 -| | Add interface to bridge domain -| | ... | ${dut_node} | @{vhosts}[1] | ${bid_b} | 0 -| | Add interface to bridge domain -| | ... | ${dut_node} | ${vxlan2_if} | ${bid_r} | 0 -| | Add interface to bridge domain -| | ... | ${dut_node} | @{vhosts}[2] | ${bid_r} | 0 -| | Add interface to bridge domain -| | ... | ${dut_node} | @{vhosts}[3] | ${bid_r} | 0 - -| Positive Scenario Ping From DUT1 - Intra network -| | [Documentation] | Send ping packets from specified namespaces to other in -| | ... | order to test connectivity. -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue2} | ${namespace1} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue1} | ${namespace2} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red2} | ${namespace3} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red1} | ${namespace4} - -| Positive Scenario Ping From DUT1 - Inter network -| | [Documentation] | Send ping packets from specified namespaces to other in -| | ... | order to test connectivity. -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} | ${namespace1} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} | ${namespace1} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} | ${namespace2} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} | ${namespace2} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} | ${namespace3} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} | ${namespace3} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} | ${namespace4} -| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} | ${namespace4} - -| Positive Scenario Ping From DUT2 - Intra network -| | [Documentation] | Send ping packets from specified namespaces to other in -| | ... | order to test connectivity. -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue2} | ${namespace1} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue1} | ${namespace2} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red2} | ${namespace3} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red1} | ${namespace4} - -| Positive Scenario Ping From DUT2 - Inter network -| | [Documentation] | Send ping packets from specified namespaces to other in -| | ... | order to test connectivity. -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} | ${namespace1} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} | ${namespace1} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} | ${namespace2} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} | ${namespace2} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} | ${namespace3} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} | ${namespace3} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} | ${namespace4} -| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} | ${namespace4} - -| Negative Scenario Ping From DUT1 - Intra network -| | [Documentation] | Send ping packets from specified namespaces to other in -| | ... | order to test unreachability of namespaces. -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red1} -| | ... | ${namespace1} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red2} -| | ... | ${namespace1} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red1} -| | ... | ${namespace2} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red2} -| | ... | ${namespace2} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue1} -| | ... | ${namespace3} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue2} -| | ... | ${namespace3} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue1} -| | ... | ${namespace4} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue2} -| | ... | ${namespace4} - -| Negative Scenario Ping From DUT1 - Inter network -| | [Documentation] | Send ping packets from specified namespaces to other in -| | ... | order to test unreachability of namespaces. -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} -| | ... | ${namespace1} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} -| | ... | ${namespace1} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} -| | ... | ${namespace2} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} -| | ... | ${namespace2} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} -| | ... | ${namespace3} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} -| | ... | ${namespace3} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} -| | ... | ${namespace4} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} -| | ... | ${namespace4} - -| Negative Scenario Ping From DUT2 - Intra network -| | [Documentation] | Send ping packets from specified namespaces to other in -| | ... | order to test unreachability of namespaces. -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red1} -| | ... | ${namespace1} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red2} -| | ... | ${namespace1} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red1} -| | ... | ${namespace2} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red2} -| | ... | ${namespace2} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue1} -| | ... | ${namespace3} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue2} -| | ... | ${namespace3} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue1} -| | ... | ${namespace4} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue2} -| | ... | ${namespace4} - -| Negative Scenario Ping From DUT2 - Inter network -| | [Documentation] | Send ping packets from specified namespaces to other in -| | ... | order to test unreachability of namespaces. -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} -| | ... | ${namespace1} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} -| | ... | ${namespace1} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} -| | ... | ${namespace2} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} -| | ... | ${namespace2} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} -| | ... | ${namespace3} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} -| | ... | ${namespace3} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} -| | ... | ${namespace4} -| | Run keyword and expect error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} -| | ... | ${namespace4} diff --git a/tests/func/gre/eth2p-ethip4gre-ip4base-func.robot b/tests/func/gre/eth2p-ethip4gre-ip4base-func.robot deleted file mode 100644 index 3959e0954f..0000000000 --- a/tests/func/gre/eth2p-ethip4gre-ip4base-func.robot +++ /dev/null @@ -1,306 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/gre.robot -| Resource | resources/libraries/robot/traffic.robot -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.Trace -| Force Tags | VM_ENV | HW_ENV | 3_NODE_DOUBLE_LINK_TOPO | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *GREoIPv4 test cases* -| ... -| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links -| ... | between nodes; TG-DUT1-DUT2-TG 3-node circular topology with single -| ... | links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-GRE-IPv4-ICMPv4 on DUT1-DUT2, -| ... | Eth-IPv4-ICMPv4 on TG-DUTn for routing over GRE tunnel; Eth-IPv4-ICMPv4 -| ... | on TG_if1-DUT, Eth-IPv4-GRE-IPv4-ICMPv4 on TG_if2_DUT for GREoIPv4 -| ... | encapsulation and decapsulation verification. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 routing -| ... | and static routes. GREoIPv4 tunnel is configured between DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets are -| ... | sent in both directions by TG on links to DUT1 and DUT2; GREoIPv4 -| ... | encapsulation and decapsulation are verified separately by TG; on -| ... | receive TG verifies packets for correctness and their IPv4 (IPv6) -| ... | src-addr, dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC2784. - -*** Variables *** -| ${net1_address}= | 192.168.0.0 -| ${net1_host_address}= | 192.168.0.100 -| ${net1_gw_address}= | 192.168.0.1 -| ${net2_address}= | 192.168.2.0 -| ${net2_host_address}= | 192.168.2.100 -| ${net3_address}= | 192.168.3.0 -| ${net3_host_address}= | 192.168.3.100 -| ${net2_gw_address}= | 192.168.2.1 -| ${dut1_ip_address}= | 192.168.1.1 -| ${dut2_ip_address}= | 192.168.1.2 -| ${dut1_gre_ip}= | 172.16.0.1 -| ${dut2_gre_ip}= | 172.16.0.2 -| ${dut_tun0_ip1}= | 172.16.0.1 -| ${dut_tun0_ip2}= | 172.16.0.2 -| ${dut_tun1_ip1}= | 172.16.1.1 -| ${dut_tun1_ip2}= | 172.16.1.2 -| ${dut1_lo_address}= | 10.0.0.1 -| ${tun0_dst}= | 10.0.0.2 -| ${tun1_dst}= | 10.0.0.3 -| ${prefix}= | 24 - -*** Test Cases *** -| TC01: DUT1 and DUT2 route over GREoIPv4 tunnel between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-GRE-IPv4-ICMPv4 on \ -| | ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 and DUT2 -| | ... | configure GREoIPv4 tunnel with IPv4 routes towards each other. -| | ... | [Ver] Make TG send ICMPv4 Echo Req between its interfaces across -| | ... | both DUTs and GRE tunnel between them; verify IPv4 headers on -| | ... | received packets are correct. [Ref] RFC2784. -| | [Tags] | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO -| | Given Configure path in 3-node circular topology | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Configure IP addresses on interfaces -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_ip_address} | ${prefix} -| | ... | ${dut1_node} | ${dut1_to_tg} | ${net1_gw_address} | ${prefix} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_ip_address} | ${prefix} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${net2_gw_address} | ${prefix} -| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${dut2_ip_address} -| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${dut1_ip_address} -| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg} | ${net2_host_address} -| | ... | ${tg_to_dut2_mac} -| | ${dut1_gre_interface} | ${dut1_gre_index}= -| | ... | When Create GRE tunnel interface and set it up -| | ... | ${dut1_node} | ${dut1_ip_address} | ${dut2_ip_address} -| | ${dut2_gre_interface} | ${dut2_gre_index}= -| | ... | And Create GRE tunnel interface and set it up -| | ... | ${dut2_node} | ${dut2_ip_address} | ${dut1_ip_address} -| | And Configure IP addresses on interfaces -| | ... | ${dut1_node} | ${dut1_gre_index} | ${dut1_gre_ip} | ${prefix} -| | ... | ${dut2_node} | ${dut2_gre_index} | ${dut2_gre_ip} | ${prefix} -| | And Vpp Route Add | ${dut1_node} | ${net2_address} | ${prefix} -| | ... | ${dut2_gre_ip} | ${dut1_gre_index} -| | Then Send packet and verify headers | ${tg_node} -| | ... | ${net1_host_address} | ${net2_host_address} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} - -| TC02: DUT encapsulates IPv4 into GREoIPv4 tunnel - GRE header verification -| | [Documentation] -| | ... | [Top] TG=DUT1. [Enc] Eth-IPv4-ICMPv4 on TG_if1-DUT, \ -| | ... | Eth-IPv4-GRE-IPv4-ICMPv4 on TG_if2_DUT. [Cfg] On DUT1 configure -| | ... | GREoIPv4 tunnel with IPv4 route towards TG. [Ver] Make TG send -| | ... | non-encapsulated ICMPv4 Echo Req to DUT; verify TG received -| | ... | GREoIPv4 encapsulated packet is correct. [Ref] RFC2784. -| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut1_ip_address} | ${prefix} -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${net1_gw_address} | ${prefix} -| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if2} | ${dut2_ip_address} -| | ... | ${tg_to_dut_if2_mac} -| | ${dut1_gre_interface} | ${dut1_gre_index}= -| | ... | When Create GRE tunnel interface and set it up -| | ... | ${dut_node} | ${dut1_ip_address} | ${dut2_ip_address} -| | And Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut1_gre_index} | ${dut1_gre_ip} | ${prefix} -| | And Vpp Route Add | ${dut_node} | ${net2_address} | ${prefix} -| | ... | ${dut2_gre_ip} | ${dut1_gre_index} -| | Then Send ICMPv4 and check received GRE header -| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} -| | ... | ${dut_to_tg_if1_mac} | ${tg_to_dut_if2_mac} -| | ... | ${net1_host_address} | ${net2_host_address} -| | ... | ${dut1_ip_address} | ${dut2_ip_address} - -| TC03: DUT decapsulates IPv4 from GREoIPv4 tunnel - IPv4 header verification -| | [Documentation] -| | ... | [Top] TG=DUT1. [Enc] Eth-IPv4-ICMPv4 on TG_if1-DUT, \ -| | ... | Eth-IPv4-GRE-IPv4-ICMPv4 on TG_if2_DUT. [Cfg] On DUT1 configure -| | ... | GREoIPv4 tunnel towards TG. [Ver] Make TG send ICMPv4 Echo Req -| | ... | encapsulated into GREoIPv4 towards VPP; verify TG received IPv4 -| | ... | de-encapsulated packet is correct. [Ref] RFC2784. -| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut1_ip_address} | ${prefix} -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${net1_gw_address} | ${prefix} -| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if1} | ${net1_host_address} -| | ... | ${tg_to_dut_if1_mac} -| | ${dut1_gre_interface} | ${dut1_gre_index}= -| | ... | When Create GRE tunnel interface and set it up -| | ... | ${dut_node} | ${dut1_ip_address} | ${dut2_ip_address} -| | And Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut1_gre_index} | ${dut1_gre_ip} | ${prefix} -| | Then Send GRE and check received ICMPv4 header -| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if1} -| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if1_mac} -| | ... | ${net2_host_address} | ${net1_host_address} -| | ... | ${dut2_ip_address} | ${dut1_ip_address} - -| TC04: DUT encapsulates IPv4 into GREoIPv4 different tunnels - GRE header verification -| | [Documentation] -| | ... | [Top] TG=DUT1. [Enc] Eth-IPv4-ICMPv4 on TG_if1-DUT, \ -| | ... | Eth-IPv4-GRE-IPv4-ICMPv4 on TG_if2_DUT. [Cfg] On DUT1 configure two -| | ... | GRE tunnels with loopback's source address. Destination address of -| | ... | tunnels are routed via next hop address of DUT's to TG if2, where -| | ... | should be only GRE encapsulated packets. Each tunnel has IPv4 address -| | ... | and configured prefix routed through the tunnel. [Ver] Make TG send -| | ... | non-encapsulated ICMPv4 Echo Req to DUT; verify TG received GREoIPv4 -| | ... | encapsulated packet is correct for each tunnel. [Ref] RFC2784. -| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | ${dut1_lo_index}= | And VPP Create loopback | ${dut_node} -| | And Set Interface State | ${dut_node} | ${dut1_lo_index} | up -| | And Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut1_ip_address} | ${prefix} -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${net1_gw_address} | ${prefix} -| | ... | ${dut_node} | ${dut1_lo_index} | ${dut1_lo_address} | ${32} -| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if2} | ${dut2_ip_address} -| | ... | ${tg_to_dut_if2_mac} -| | And Vpp Route Add | ${dut_node} | ${tun0_dst} | ${32} -| | ... | ${dut2_ip_address} | ${dut_to_tg_if2} -| | And Vpp Route Add | ${dut_node} | ${tun1_dst} | ${32} -| | ... | ${dut2_ip_address} | ${dut_to_tg_if2} -| | ${dut1_gre0_interface} | ${dut1_gre0_index}= -| | ... | When Create GRE tunnel interface and set it up -| | ... | ${dut_node} | ${dut1_lo_address} | ${tun0_dst} -| | ${dut1_gre1_interface} | ${dut1_gre1_index}= -| | ... | And Create GRE tunnel interface and set it up -| | ... | ${dut_node} | ${dut1_lo_address} | ${tun1_dst} -| | And Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut1_gre0_index} | ${dut_tun0_ip1} | ${prefix} -| | ... | ${dut_node} | ${dut1_gre1_index} | ${dut_tun1_ip1} | ${prefix} -| | And Vpp Route Add | ${dut_node} | ${net2_address} | ${prefix} -| | ... | ${dut_tun0_ip2} | ${dut1_gre0_index} -| | And Vpp Route Add | ${dut_node} | ${net3_address} | ${prefix} -| | ... | ${dut_tun1_ip2} | ${dut1_gre1_index} -| | Then Send ICMPv4 and check received GRE header -| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} -| | ... | ${dut_to_tg_if1_mac} | ${tg_to_dut_if2_mac} -| | ... | ${net1_host_address} | ${net2_host_address} -| | ... | ${dut1_lo_address} | ${tun0_dst} -| | And Send ICMPv4 and check received GRE header -| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} -| | ... | ${dut_to_tg_if1_mac} | ${tg_to_dut_if2_mac} -| | ... | ${net1_host_address} | ${net3_host_address} -| | ... | ${dut1_lo_address} | ${tun1_dst} - -| TC05: DUT re-encapsulates IPv4 GRE into other GRE tunnel - GRE header verification -| | [Documentation] -| | ... | [Top] TG=DUT1. [Enc] Eth-IPv4-ICMPv4 on TG_if1-DUT, \ -| | ... | Eth-IPv4-GRE-IPv4-ICMPv4 on TG_if2_DUT. [Cfg] On DUT1 configure two -| | ... | GRE tunnels with loopback's source address. Destination address of -| | ... | tunnels are routed via next hop address of DUT's to TG if2, where -| | ... | should be only GRE encapsulated packets. Each tunnel has IPv4 address -| | ... | and configured prefix routed through the tunnel. [Ver] Make TG send -| | ... | encapsulated IPv4 UDP to DUT; Encapsulated IP source is behind -| | ... | configured tunnel same as destination; verify TG received GREoIPv4 -| | ... | encapsulated packet is correct. [Ref] RFC2784. -| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | ${dut1_lo_index}= | And VPP Create loopback | ${dut_node} -| | And Set Interface State | ${dut_node} | ${dut1_lo_index} | up -| | And Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut1_ip_address} | ${prefix} -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${net1_gw_address} | ${prefix} -| | ... | ${dut_node} | ${dut1_lo_index} | ${dut1_lo_address} | ${32} -| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if2} | ${dut2_ip_address} -| | ... | ${tg_to_dut_if2_mac} -| | And Vpp Route Add | ${dut_node} | ${tun0_dst} | ${32} -| | ... | ${dut2_ip_address} | ${dut_to_tg_if2} -| | And Vpp Route Add | ${dut_node} | ${tun1_dst} | ${32} -| | ... | ${dut2_ip_address} | ${dut_to_tg_if2} -| | ${dut1_gre0_interface} | ${dut1_gre0_index}= -| | ... | When Create GRE tunnel interface and set it up -| | ... | ${dut_node} | ${dut1_lo_address} | ${tun0_dst} -| | ${dut1_gre1_interface} | ${dut1_gre1_index}= -| | ... | And Create GRE tunnel interface and set it up -| | ... | ${dut_node} | ${dut1_lo_address} | ${tun1_dst} -| | And Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut1_gre0_index} | ${dut_tun0_ip1} | ${prefix} -| | ... | ${dut_node} | ${dut1_gre1_index} | ${dut_tun1_ip1} | ${prefix} -| | And Vpp Route Add | ${dut_node} | ${net2_address} | ${prefix} -| | ... | ${dut_tun0_ip2} | ${dut1_gre0_index} -| | And Vpp Route Add | ${dut_node} | ${net3_address} | ${prefix} -| | ... | ${dut_tun1_ip2} | ${dut1_gre1_index} -| | Then Send GRE and check received GRE header -| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if2} -| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} -| | ... | ${dut1_lo_address} | ${tun0_dst} -| | ... | ${net3_host_address} | ${net2_host_address} -| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} -| | ... | ${tun1_dst} | ${dut1_lo_address} - -| TC06: DUT do not process GRE with wrong tunnel destination IP -| | [Documentation] -| | ... | [Top] TG=DUT1. [Enc] Eth-IPv4-ICMPv4 on TG_if1-DUT, \ -| | ... | Eth-IPv4-GRE-IPv4-ICMPv4 on TG_if2_DUT. [Cfg] On DUT1 configure two -| | ... | GRE tunnels with loopback's source address. Destination address of -| | ... | tunnels are routed via next hop address of DUT's to TG if2, where -| | ... | should be only GRE encapsulated packets. On DUT's to TG if1 interface -| | ... | is configured test destination host MAC address. [Ver] Make TG send -| | ... | GRE encapsulated ICMPv4 Echo Req to DUT; verify TG received -| | ... | de-capsulated packet is correct, then send packet with wrong tunnel -| | ... | destination address. [Ref] RFC2784. -| | ... | -| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | ${dut1_lo_index}= | And VPP Create loopback | ${dut_node} -| | And Set Interface State | ${dut_node} | ${dut1_lo_index} | up -| | And Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut1_ip_address} | ${prefix} -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${net1_gw_address} | ${prefix} -| | ... | ${dut_node} | ${dut1_lo_index} | ${dut1_lo_address} | ${32} -| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if1} | ${net1_host_address} -| | ... | ${tg_to_dut_if1_mac} -| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if2} | ${dut2_ip_address} -| | ... | ${tg_to_dut_if2_mac} -| | And Vpp Route Add | ${dut_node} | ${tun0_dst} | ${32} -| | ... | ${dut2_ip_address} | ${dut_to_tg_if2} -| | And Vpp Route Add | ${dut_node} | ${tun1_dst} | ${32} -| | ... | ${dut2_ip_address} | ${dut_to_tg_if2} -| | ${dut1_gre0_interface} | ${dut1_gre0_index}= -| | ... | When Create GRE tunnel interface and set it up -| | ... | ${dut_node} | ${dut1_lo_address} | ${tun0_dst} -| | ${dut1_gre1_interface} | ${dut1_gre1_index}= -| | ... | And Create GRE tunnel interface and set it up -| | ... | ${dut_node} | ${dut1_lo_address} | ${tun1_dst} -| | And Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut1_gre0_index} | ${dut_tun0_ip1} | ${prefix} -| | ... | ${dut_node} | ${dut1_gre1_index} | ${dut_tun1_ip1} | ${prefix} -| | Then Send GRE and check received ICMPv4 header -| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if1} -| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if1_mac} -| | ... | ${net2_host_address} | ${net1_host_address} -| | ... | ${tun0_dst} | ${dut1_lo_address} -| | And Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send GRE and check received ICMPv4 header | -| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if1} -| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if1_mac} -| | ... | ${net2_host_address} | ${net1_host_address} -| | ... | ${tun0_dst} | ${dut1_ip_address} diff --git a/tests/func/honeycomb/__init__.robot b/tests/func/honeycomb/__init__.robot deleted file mode 100644 index fff6097d08..0000000000 --- a/tests/func/honeycomb/__init__.robot +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables*** -# Honeycomb node to run tests on. -| ${node}= | ${nodes['DUT1']} - -*** Settings *** -| Library | resources/libraries/python/honeycomb/HcPersistence.py -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| ... -| Suite Setup | Run Keywords | Configure all DUTs before test | AND -| ... | Set Global Variable | ${node} | AND -| ... | Stop Honeycomb service on DUTs | ${node} -| ... -| Suite Teardown | Archive Honeycomb log file | ${node} diff --git a/tests/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot deleted file mode 100644 index f66eef88c4..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot +++ /dev/null @@ -1,169 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -# Interface to run tests on. -| ${interface}= | ${node['interfaces']['port1']['name']} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/access_control_lists.robot -| Variables | resources/test_data/honeycomb/acl.py -| ... -| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Documentation | *Honeycomb access control lists test suite.* -| ... -| Force Tags | HC_FUNC - -*** Test Cases *** -| TC01: Honeycomb can create ACL classify table -| | [Documentation] | Check if Honeycomb API can create an ACL table. -| | ... -| | Given ACL table from Honeycomb should not exist -| | ... | ${node} | ${hc_acl_table['name']} -| | And ACL table from VAT should not exist -| | ... | ${node} | ${table_index} -| | When Honeycomb creates ACL table -| | ... | ${node} | ${hc_acl_table} -| | Then ACL table from Honeycomb should be | ${node} | ${hc_acl_table_oper} -| | And ACL table from VAT should be -| | ... | ${node} | ${table_index} | ${vat_acl_table} - -| TC02: Honeycomb can remove ACL table -| | [Documentation] | Check if Honeycomb API can delete an ACL table. -| | ... -| | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table_oper} -| | And ACL table from VAT should be -| | ... | ${node} | ${table_index} | ${vat_acl_table} -| | When Honeycomb removes ACL table | ${node} | ${hc_acl_table['name']} -| | Then ACL table from Honeycomb should not exist -| | ... | ${node} | ${hc_acl_table['name']} -| | And ACL table from VAT should not exist -| | ... | ${node} | ${table_index} - -| TC03: Honeycomb manages more than one ACL table -| | [Documentation] | Check if Honeycomb API can create another ACL table. -| | ... -| | Given ACL table from Honeycomb should not exist -| | ... | ${node} | ${hc_acl_table['name']} -| | And ACL table from VAT should not exist -| | ... | ${node} | ${table_index} -| | When Honeycomb creates ACL table | ${node} | ${hc_acl_table} -| | And Honeycomb creates ACL table | ${node} | ${hc_acl_table2} -| | Then ACL table from Honeycomb should be | ${node} | ${hc_acl_table_oper} -| | And ACL table from VAT should be -| | ... | ${node} | ${table_index} | ${vat_acl_table} -| | And ACL table from Honeycomb should be | ${node} | ${hc_acl_table2_oper} -| | And ACL table from VAT should be -| | ... | ${node} | ${table_index2} | ${vat_acl_table2} - -| TC04: Honeycomb can add ACL session to table -| | [Documentation] | Check if Honeycomb API can add an ACL session to a table. -| | ... -| | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table_oper} -| | And ACL table from VAT should be -| | ... | ${node} | ${table_index} | ${vat_acl_table} -| | When Honeycomb adds ACL session -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} -| | Then ACL session from Honeycomb should be -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} -| | And ACL session from VAT should be -| | ... | ${node} | ${table_index} | ${session_index} | ${vat_acl_session} - -| TC05: Honeycomb can remove ACL session -| | [Documentation] | Check if Honeycomb API can remove an ACL session. -| | ... -| | Given ACL session from Honeycomb should be -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} -| | And ACL session from VAT should be -| | ... | ${node} | ${table_index} | ${session_index} | ${vat_acl_session} -| | When Honeycomb removes ACL session -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session['match']} -| | Then ACL session from Honeycomb should not exist -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session['match']} -| | And ACL session from VAT should not exist -| | ... | ${node} | ${table_index} | ${session_index} - -| TC06: Honeycomb manages more than one ACL session on one table -| | [Documentation] | Check if Honeycomb API can add another ACL session\ -| | ... | to a table. -| | ... -| | Given ACL session from Honeycomb should not exist -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session['match']} -| | And ACL session from VAT should not exist -| | ... | ${node} | ${table_index} | ${session_index} -| | When Honeycomb adds ACL session -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} -| | And Honeycomb adds ACL session -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session2} -| | Then ACL session from Honeycomb should be -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} -| | And ACL session from VAT should be -| | ... | ${node} | ${table_index} | ${session_index} | ${vat_acl_session} -| | And ACL session from Honeycomb should be -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session2} -| | And ACL session from VAT should be -| | ... | ${node} | ${table_index} | ${session_index2} | ${vat_acl_session2} - -| TC07: Honeycomb enables ACL on interface -| | [Documentation] | Check if Honeycomb API can enable ACL on an interface. -| | ... -| | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table_oper} -| | And ACL table from VAT should be -| | ... | ${node} | ${table_index} | ${vat_acl_table} -| | And ACL session from Honeycomb should be -| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} -| | And ACL session from VAT should be -| | ... | ${node} | ${table_index} | ${session_index} | ${vat_acl_session} -| | When Honeycomb enables ACL on interface -| | ... | ${node} | ${interface} | ${hc_acl_table['name']} -| | Then Interface ACL configuration from Honeycomb should be -| | ... | ${node} | ${interface} | ${hc_acl_table['name']} -| | And Interface ACL configuration from VAT should be -| | ... | ${node} | ${interface} | ${table_index} - -| TC08: Honeycomb disables ACL on interface -| | [Documentation] | Check if Honeycomb API can disable ACL on an interface. -| | ... -| | Given Interface ACL configuration from Honeycomb should be -| | ... | ${node} | ${interface} | ${hc_acl_table['name']} -| | And Interface ACL configuration from VAT should be -| | ... | ${node} | ${interface} | ${table_index} -| | When Honeycomb disables ACL on interface | ${node} | ${interface} -| | Then Interface ACL configuration from Honeycomb should be empty -| | ... | ${node} | ${interface} -| | And Interface ACL configuration from VAT should be empty -| | ... | ${node} | ${interface} - -| TC09: Honeycomb can remove one out of multiple ACL tables -| | [Documentation] | Check if Honeycomb API can delete an ACL table if more\ -| | ... | than one table exists. -| | ... -| | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table_oper} -| | And ACL table from VAT should be -| | ... | ${node} | ${table_index} | ${vat_acl_table} -| | And ACL table from Honeycomb should be | ${node} | ${hc_acl_table2_oper} -| | And ACL table from VAT should be -| | ... | ${node} | ${table_index2} | ${vat_acl_table2} -| | When Honeycomb removes ACL table | ${node} | ${hc_acl_table2['name']} -| | Then ACL table from Honeycomb should be | ${node} | ${hc_acl_table_oper} -| | And ACL table from VAT should be -| | ... | ${node} | ${table_index} | ${vat_acl_table} -| | And ACL table from Honeycomb should not exist -| | ... | ${node} | ${hc_acl_table2['name']} -| | And ACL table from VAT should not exist -| | ... | ${node} | ${table_index2} diff --git a/tests/func/honeycomb/mgmt-cfg-dhcp-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-dhcp-apihc-apivat-func.robot deleted file mode 100644 index d73334eabd..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-dhcp-apihc-apivat-func.robot +++ /dev/null @@ -1,131 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/dhcp_proxy.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/dhcp.robot -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPv4Setup -| Library | resources.libraries.python.IPv6Setup -| Library | resources.libraries.python.IPv6Util -| Library | resources.libraries.python.Routing -| Variables | resources/test_data/honeycomb/dhcp_relay.py -| ... -| ... -| Documentation | *Honeycomb DHCP relay test suite.* -| ... -| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Force Tags | HC_FUNC - -*** Test Cases *** -| TC01: Honeycomb can configure DHCP relay entry -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-DHCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 configure IP addresses\ -| | ... | neighbors and configure DHCP relay. -| | ... | [Ver] Send DHCP packets from TG interface to DUT. Receive all packets\ -| | ... | on the second TG interface and verify required fields. -| | ... -| | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes} -| | ... | AND | Log DHCP relay configuration from VAT | ${node} | ipv4 -| | ... -| | Given DHCP relay Operational Data From Honeycomb Should Be empty | ${node} -| | When Honeycomb configures DHCP relay | ${node} | ${relay1} | ipv4 | ${0} -| | Then DHCP relay configuration from Honeycomb should contain -| | ... | ${node} | ${relay1_oper} -| | When DHCP relay test setup -| | Then Send DHCP messages and check answer | ${tg_node} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if2} | ${dhcp_server1_ip} | ${tg_to_dut_if2_mac} -| | ... | ${client_ip} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_ip} - -| TC02: Honeycomb can remove DHCP relay entry -| | [Documentation] | Remove DHCP relay configuration, and verify that\ -| | ... | it was removed. -| | ... -| | Given DHCP relay configuration from Honeycomb should contain -| | ... | ${node} | ${relay1_oper} -| | When Honeycomb clears DHCP relay configuration | ${node} -| | Then DHCP relay Operational Data From Honeycomb Should Be empty | ${node} - -| TC03: Honeycomb can configure multiple DHCP relay servers. -| | [Documentation] | Configure multiple DHCP relay servers and verify\ -| | ... | their configuration using operational data. -| | ... -| | [Teardown] | Honeycomb clears DHCP relay configuration | ${node} -| | ... -| | Given DHCP relay Operational Data From Honeycomb Should Be empty | ${node} -| | And Honeycomb configures DHCP relay | ${node} | ${relay2} | ipv4 | ${0} -| | Then DHCP relay configuration from Honeycomb should contain -| | ... | ${node} | ${relay2_oper} - -| TC04: Honeycomb can configure DHCP relay entry with ipv6 -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv6-DHCPv6. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 configure IP addresses\ -| | ... | neighbors and configure DHCP relay. -| | ... | [Ver] Send DHCPv6 packets from TG interface to DUT. Receive all\ -| | ... | packets on the second TG interface and verify required fields. -| | ... -| | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes} -| | ... | AND | Log DHCP relay configuration from VAT | ${node} | ipv6 -| | ... | AND | Honeycomb clears DHCP relay configuration | ${node} -| | ... -| | Given DHCP relay Operational Data From Honeycomb Should Be empty | ${node} -| | When Honeycomb configures DHCP relay | ${node} | ${relay_v6} | ipv6 | ${0} -| | Then DHCP relay configuration from Honeycomb should contain -| | ... | ${node} | ${relay_v6_oper} -| | When DHCP relay test setup IPv6 -| | Then Send DHCPv6 Messages | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} -| | ... | ${dut_to_tg_if1_ip6} | ${dut_to_tg_if1_mac} | ${dhcp_server_ip6} -| | ... | ${tg_to_dut_if2_mac} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if2_mac} - -*** Keywords *** -| DHCP relay test setup -| | Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up -| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up -| | Honeycomb sets interface IPv4 address with prefix | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} -| | Honeycomb sets interface IPv4 address with prefix | ${dut_node} -| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} -| | Add ARP on DUT | ${dut_node} | ${dut_to_tg_if2} | ${dhcp_server1_ip} -| | ... | ${tg_to_dut_if2_mac} -| | Add ARP on DUT | ${dut_node} | ${dut_to_tg_if2} | ${dhcp_server2_ip} -| | ... | ${tg_to_dut_if2_mac} -| | And VPP Route Add | ${dut_node} | 255.255.255.255 | 32 | ${NONE} | local -| | ... | ${FALSE} | ${NONE} - -| DHCP relay test setup IPv6 -| | Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up -| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up -| | And Vpp All Ra Suppress Link Layer | ${nodes} -| | Honeycomb sets interface IPv6 address | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip6} | ${prefix_length_v6} -| | Honeycomb sets interface IPv6 address | ${dut_node} -| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip6} | ${prefix_length_v6} -| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${dhcp_server_ip6} -| | ... | ${tg_to_dut_if2_mac} -| | And VPP Route Add | ${dut_node} | ff02::1:2 | 128 | ${NONE} | local -| | ... | ${FALSE} | ${NONE} diff --git a/tests/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot b/tests/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot deleted file mode 100644 index 6989d356c7..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/netconf.robot -| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot -| Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords -| ... | WITH NAME | InterfaceAPI -| Variables | resources/test_data/honeycomb/netconf/triggers.py -| ... -| Documentation | *Netconf test suite. Contains test cases that need to bypass\ -| ... | REST API.* -| ... -| Force Tags | HC_FUNC | HC_REST_ONLY -| ... -| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... - -*** Variables *** -| ${interface}= | ${node['interfaces']['port1']['name']} -| &{bd_settings}= | flood=${True} | forward=${True} | learn=${True} -| ... | unknown-unicast-flood=${True} | arp-termination=${True} - -*** Test Cases *** -| TC01: Honeycomb can create and delete interfaces -| | [Documentation] | Repeatedly create and delete an interface through Netconf\ -| | ... | and check the reply for any errors. -| | ... -| | Given Netconf session should be established | ${node} -| | And Honeycomb creates first L2 bridge domain -| | ... | ${node} | bd_netconf | ${bd_settings} -| | :FOR | ${index} | IN RANGE | 20 -| | | When Error trigger is sent | ${trigger_105} -| | | Then Replies should not contain RPC errors - -| TC02: Transaction revert test case 1 -| | [Documentation] | Configure two conflicting VxLAN tunnels, then verify\ -| | ... | that neither tunnel exists. -| | ... -| | Given Netconf session should be established | ${node} -| | ${if_data}= | And InterfaceAPI.Get all interfaces oper data | ${node} -| | When Error trigger is sent | ${trigger_revert1} -| | ${if_data_new}= | And InterfaceAPI.Get all interfaces oper data | ${node} -| | Then Should be equal | ${if_data} | ${if_data_new} - -| TC03: Transaction revert test case 2 -| | [Documentation] | Configure two conflicting TAP interfaces, then verify\ -| | ... | that neither interface exists. -| | ... -| | Given Netconf session should be established | ${node} -| | ${if_data}= | And InterfaceAPI.Get all interfaces oper data | ${node} -| | When Error trigger is sent | ${trigger_revert1} -| | ${if_data_new}= | And InterfaceAPI.Get all interfaces oper data | ${node} -| | Then Should be equal | ${if_data} | ${if_data_new} - -| TC04: Vlan subinterface creation -| | [Documentation] | Configure a Vlan sub-interface under a physical interface. -| | ... -| | Given Netconf session should be established | ${node} -| | When Error Trigger Is Sent -| | ... | ${trigger_vlan} | interface=${interface} -| | Then Replies should not contain RPC errors diff --git a/tests/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot deleted file mode 100644 index 45ffd93af6..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot +++ /dev/null @@ -1,609 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/sub_interface.robot -| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Variables | resources/test_data/honeycomb/sub_interfaces.py -| ... -| Suite Setup | Run Keywords -| ... | Set Up Honeycomb Functional Test Suite | ${node} | AND -| ... | Add Interface local0 To Topology | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Force Tags | HC_FUNC -| ... -| Documentation | *Honeycomb sub-interface management test suite.* - -*** Variables *** -# Test interfaces and their sub-interface parameters: -| ${super_if}= | ${node['interfaces']['port1']['name']} -| ${super_if2}= | ${node['interfaces']['port3']['name']} -| ${sub_if_id}= | ${sub_if_1_settings['identifier']} -| ${sub_if_name}= | ${super_if}.${sub_if_id} -| ${sub_if2_name}= | ${super_if2}.${sub_if_id} - -*** Test Cases *** -| TC01: Honeycomb creates sub-interface -| | [Documentation] | Check if Honeycomb creates a sub-interface. -| | ... -| | Given Honeycomb configures interface state | ${node} | ${super_if} | down -| | And sub-interface Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And interface Operational Data From VAT Should Be empty -| | ... | ${node} | ${sub_if_name} -| | When Honeycomb creates sub-interface | ${node} | ${super_if} -| | ... | ${sub_if_1_match} | ${sub_if_1_tags} | ${sub_if_1_settings} -| | Then Sub-interface Operational Data From Honeycomb Should Be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper} -| | And Sub-interface Operational Data From VAT Should Be -| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} -| | And sub-interface indices from Honeycomb and VAT should correspond -| | ... | ${node} | ${super_if} | ${sub_if_id} - -| TC02: Honeycomb sets interface and sub-interface up -| | [Documentation] | Honeycomb changes the state of interface\ -| | ... | and of its sub-interface to up. -| | ... -| | Given interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | down -| | And interface state from VAT should be -| | ... | ${node} | ${super_if} | down -| | Sub-interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down -| | Sub-interface state from VAT should be -| | ... | ${node} | ${sub_if_name} | down | down -| | When Honeycomb configures interface state -| | ... | ${node} | ${super_if} | up -| | Then interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | up -| | And interface state from VAT should be -| | ... | ${node} | ${super_if} | up -| | When Honeycomb sets the sub-interface up -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | Then Sub-interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | up | up -| | And sub-interface state from VAT should be -| | ... | ${node} | ${sub_if_name} | up | up - -| TC03: Honeycomb sets sub-interface down while its super-interface is up -| | [Documentation] | Honeycomb sets the sub-interface down while its \ -| | ... | super-interface is up. It must be possible. -| | ... -| | [Teardown] | Set super and sub interfaces up -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given sub-interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | up | up -| | And sub-interface state from VAT should be -| | ... | ${node} | ${sub_if_name} | up | up -| | And interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | up -| | And interface state from VAT should be -| | ... | ${node} | ${super_if} | up -| | When Honeycomb sets the sub-interface down -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | Then interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | up -| | And interface state from VAT should be -| | ... | ${node} | ${super_if} | up -| | And sub-interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | down | up -| | And sub-interface state from VAT should be -| | ... | ${node} | ${sub_if_name} | down | up - -| TC04: Honeycomb sets interface and sub-interface down -| | [Documentation] | Honeycomb changes the state of interface down and then \ -| | ... | changes the state of its sub-interface down, in this order. -| | ... -| | [Teardown] | Set super and sub interfaces down -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | up -| | And interface state from VAT should be -| | ... | ${node} | ${super_if} | up -| | When Honeycomb configures interface state -| | ... | ${node} | ${super_if} | down -| | Then interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | down -| | And interface state from VAT should be -| | ... | ${node} | ${super_if} | down -| | Given sub-interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | up | down -| | And sub-interface state from VAT should be -| | ... | ${node} | ${sub_if_name} | up | down -| | When Honeycomb sets the sub-interface down -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | Then sub-interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down -| | And sub-interface state from VAT should be -| | ... | ${node} | ${sub_if_name} | down | down - -| TC05: Honeycomb fails to set sub-interface up while its super-interface is down -| | [Documentation] | Honeycomb tries to set the sub-interface up while its \ -| | ... | super-interface is down. It must not be possible. -| | ... -| | Given interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | down -| | And interface state from VAT should be -| | ... | ${node} | ${super_if} | down -| | And sub-interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down -| | And sub-interface state from VAT should be -| | ... | ${node} | ${sub_if_name} | down | down -| | When Honeycomb fails to set sub-interface up -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | Then interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | down -| | And interface state from VAT should be -| | ... | ${node} | ${super_if} | down -| | And sub-interface state from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down -| | And sub-interface state from VAT should be -| | ... | ${node} | ${sub_if_name} | down | down - -| TC06: Honeycomb fails to delete sub-interface -| | [Documentation] | Check if Honeycomb can delete an existing sub-interface. -| | ... -| | [Setup] | Set super and sub interfaces down -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given sub-interface Operational Data From Honeycomb Should Be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper} -| | And sub-interface Operational Data From VAT Should Be -| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} -| | When Honeycomb fails to remove all sub-interfaces -| | ... | ${node} | ${super_if} -| | Then sub-interface Operational Data From Honeycomb Should Be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper} -| | And sub-interface Operational Data From VAT Should Be -| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} - -| TC07: Honeycomb adds sub-interface to new bridge domain -| | [Documentation] | Check if Honeycomb adds a sub-interface to bridge domain. -| | ... -| | [Setup] | Set super and sub interfaces down -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given sub-interface Operational Data From Honeycomb Should Be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper} -| | And sub-interface Operational Data From VAT Should Be -| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} -| | When Honeycomb creates first L2 bridge domain -| | ... | ${node} | ${bd_name} | ${bd_settings} -| | Then bridge domain Operational Data From Honeycomb Should Be -| | ... | ${node} | ${bd_name} | ${bd_settings} -| | When Honeycomb adds sub-interface to bridge domain -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_bd_settings} -| | Then sub-interface bridge domain Operational Data From Honeycomb Should Be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_bd_settings} -| | And sub-interface bridge domain Operational Data From VAT Should Be -| | ... | ${node} | ${sub_if_name} | ${sub_bd_settings} -| | And sub-interface Operational Data From VAT Should Be -| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} - -| TC08: Honeycomb enables tag-rewrite pop 1 -| | [Documentation] | Check if Honeycomb enables tag-rewrite and sets its \ -| | ... | parameters correctly. Case: pop 1. -| | ... -| | [Teardown] | Honeycomb disables tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given rewrite tag from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1} -| | Then rewrite tag from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_pop_1_VAT} - -| TC09: Honeycomb enables tag-rewrite push -| | [Documentation] | Check if Honeycomb enables tag-rewrite and sets its \ -| | ... | parameters correctly. Case: push. -| | ... -| | [Teardown] | Honeycomb disables tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given rewrite tag from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push} -| | Then rewrite tag from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push_oper} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_push_VAT} - -| TC10: Honeycomb enables tag-rewrite translate 1-2 -| | [Documentation] | Check if Honeycomb enables tag-rewrite and sets its \ -| | ... | parameters correctly. Case: translate 1-2. -| | ... -| | [Teardown] | Honeycomb disables tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given rewrite tag from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_translate_1_2} -| | Then rewrite tag from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${tag_rewrite_translate_1_2_oper} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_translate_1_2_VAT} - -| TC11: Honeycomb disables tag-rewrite -| | [Documentation] | Check if Honeycomb disables the tag-rewrite. -| | ... -| | [Teardown] | Honeycomb disables tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1} -| | Then rewrite tag from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper} -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_disabled} -| | Then rewrite tag from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_disabled_VAT} - -| TC12: Honeycomb enables tag-rewrite pop 1 again -| | [Documentation] | Check if Honeycomb can enable tag-rewrite again, once it \ -| | ... | was disabled by Honeycomb. -| | ... -| | [Teardown] | Honeycomb disables tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given rewrite tag from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1} -| | Then rewrite tag from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_pop_1_VAT} - -| TC13: Honeycomb modifies the tag-rewrite -| | [Documentation] | Honeycomb sets the tag-rewrite: -| | ... | 1. pop 1, then -| | ... | 2. push, then -| | ... | 3. translate 1 - 2 -| | ... | Then Honeycomb disables the tag-rewrite. -| | ... -| | [Teardown] | Honeycomb disables tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given rewrite tag from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1} -| | Then rewrite tag from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_pop_1_VAT} -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push} -| | Then rewrite tag from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push_oper} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_push_VAT} -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_translate_1_2} -| | Then rewrite tag from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${tag_rewrite_translate_1_2_oper} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_translate_1_2_VAT} -| | When Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_disabled} -| | Then rewrite tag from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_disabled_VAT} - -| TC14: Honeycomb fails to set wrong vlan-type in tag-rewrite -| | [Documentation] | Check that Honeycomb does not accept wrong values of \ -| | ... | vlan-type in tag-rewrite. -| | ... -| | Given rewrite tag from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | When Honeycomb fails to set wrong rewrite tag -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${tag_rewrite_translate_1_2_wrong} -| | Then rewrite tag from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And rewrite tag from VAT should be -| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_disabled_VAT} - -| TC15: Honeycomb configures sub-interface ipv4 address -| | [Documentation] | Check if Honeycomb can configure an ipv4 address on the\ -| | ... | sub-interface. -| | ... -| | Given sub-interface ipv4 address from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And sub-interface ipv4 address from VAT should be empty -| | ... | ${node} | ${sub_if_name} -| | When Honeycomb sets sub-interface ipv4 address -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} -| | Then sub-interface ipv4 address from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} -| | And sub-interface ipv4 address from VAT should be -| | ... | ${node} | ${sub_if_name} -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} - -| TC16: Honeycomb removes sub-interface ipv4 address -| | [Documentation] | Check if Honeycomb can remove configured ipv4 addresses\ -| | ... | from the sub-interface. -| | ... -| | Given sub-interface ipv4 address from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} -| | Run Keyword And Continue On Failure -| | ... | And sub-interface ipv4 address from VAT should be -| | ... | ${node} | ${sub_if_name} -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} -| | When Honeycomb removes all sub-interface ipv4 addresses -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | Then sub-interface ipv4 address from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And sub-interface ipv4 address from VAT should be empty -| | ... | ${node} | ${sub_if_name} - -| TC17: Honeycomb modifies existing sub-interface ipv4 address -| | [Documentation] | Check if Honeycomb can modify an ipv4 address already\ -| | ... | configured on the sub-interface. -| | ... -| | [Teardown] | Honeycomb removes all sub-interface ipv4 addresses -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given sub-interface ipv4 address from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And sub-interface ipv4 address from VAT should be empty -| | ... | ${node} | ${sub_if_name} -| | When Honeycomb sets sub-interface ipv4 address -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} -| | And Honeycomb sets sub-interface ipv4 address -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv4_2['address']} | ${ipv4_2['prefix-length']} -| | Then sub-interface ipv4 address from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv4_2['address']} | ${ipv4_2['prefix-length']} -| | And sub-interface ipv4 address from VAT should be -| | ... | ${node} | ${sub_if_name} -| | ... | ${ipv4_2['address']} | ${ipv4_2['prefix-length']} - -| TC18: Honeycomb modifies sub-interface exact tag match -| | [Documentation] | Check if Honeycomb can modify a sub-interface with exact\ -| | ... | tag match. -| | ... -| | Given Honeycomb configures interface state | ${node} | ${super_if2} | down -| | And sub-interface Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${super_if2} | ${sub_if_id} -| | And interface Operational Data From VAT Should Be empty -| | ... | ${node} | ${sub_if2_name} -| | When Honeycomb creates sub-interface | ${node} | ${super_if2} -| | ... | ${sub_if_2_match} | ${sub_if_2_tags} | ${sub_if_2_settings} -| | Then Sub-interface Operational Data From Honeycomb Should Be -| | ... | ${node} | ${super_if2} | ${sub_if_id} | ${sub_if_2_oper} -| | And Sub-interface Operational Data From VAT Should Be -| | ... | ${node} | ${sub_if2_name} | ${sub_if_2_oper} -| | And sub-interface indices from Honeycomb and VAT should correspond -| | ... | ${node} | ${super_if2} | ${sub_if_id} - -| TC19: Honeycomb configures sub-interface ipv6 address -| | [Documentation] | Check if Honeycomb can configure an ipv6 address on the\ -| | ... | sub-interface. -| | ... -| | Given sub-interface ipv6 address from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And sub-interface ipv6 address from VAT should be empty -| | ... | ${node} | ${sub_if_name} -| | When Honeycomb sets sub-interface ipv6 address -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv6['address']} | ${ipv6['prefix-length']} -| | Then sub-interface IPv6 address from Honeycomb should contain -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv6['address']} | ${ipv6['prefix-length']} -| | And sub-interface IPv6 address from VAT should contain -| | ... | ${node} | ${sub_if_name} -| | ... | ${ipv6['address']} | ${ipv6['prefix-length']} - -| TC20: Honeycomb removes sub-interface ipv6 address -| | [Documentation] | Check if Honeycomb can remove configured ipv6 addresses\ -| | ... | from the sub-interface. -| | ... -| | Given sub-interface IPv6 address from Honeycomb should contain -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv6['address']} | ${ipv6['prefix-length']} -| | Run Keyword And Continue On Failure -| | ... | And sub-interface IPv6 address from VAT should contain -| | ... | ${node} | ${sub_if_name} -| | ... | ${ipv6['address']} | ${ipv6['prefix-length']} -| | When Honeycomb removes all sub-interface ipv6 addresses -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | Then sub-interface ipv6 address from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And sub-interface ipv6 address from VAT should be empty -| | ... | ${node} | ${sub_if_name} - -| TC21: Honeycomb modifies existing sub-interface ipv6 address -| | [Documentation] | Check if Honeycomb can modify an ipv6 address already\ -| | ... | configured on the sub-interface. -| | ... -| | [Teardown] | Honeycomb removes all sub-interface ipv6 addresses -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Given sub-interface ipv6 address from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And sub-interface ipv6 address from VAT should be empty -| | ... | ${node} | ${sub_if_name} -| | When Honeycomb sets sub-interface ipv6 address -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv6['address']} | ${ipv6['prefix-length']} -| | And Honeycomb sets sub-interface ipv6 address -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv6_2['address']} | ${ipv6_2['prefix-length']} -| | Then sub-interface IPv6 address from Honeycomb should contain -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv6_2['address']} | ${ipv6_2['prefix-length']} -| | And sub-interface IPv6 address from VAT should contain -| | ... | ${node} | ${sub_if_name} -| | ... | ${ipv6_2['address']} | ${ipv6_2['prefix-length']} - -| TC22: Honeycomb can configure unnumbered sub-interface -| | [Documentation] | Check if Honeycomb can configure an unnumbered interface\ -| | ... | on a sub-interface, borrowing the IP address of 'local0'. -| | ... -| | Given sub-interface ipv4 address from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And sub-interface ipv4 address from VAT should be empty -| | ... | ${node} | ${sub_if_name} -| | And Honeycomb sets interface IPv4 address | ${node} -| | ... | local0 | ${ipv4['address']} | ${ipv4['prefix-length']} -| | When Honeycomb adds unnumbered configuration to interface -| | ... | ${node} | ${super_if}.${sub_if_id} | local0 -| | Then IPv4 address from Honeycomb should be -| | ... | ${node} | local0 | ${ipv4['address']} | ${ipv4['prefix-length']} -| | And IPv4 address from VAT should be -| | ... | ${node} | local0 -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} | ${ipv4['netmask']} -| | And sub-interface ipv4 address from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} -| | And sub-interface ipv4 address from VAT should be -| | ... | ${node} | ${sub_if_name} -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} - -| TC23: Honeycomb removes sub-interface unnumbered configuration -| | [Documentation] | Check if Honeycomb can remove unnumbered configuration\ -| | ... | from a sub-interface. -| | ... -| | [Teardown] | Honeycomb removes interface IPv4 addresses | ${node} -| | ... | local0 -| | ... -| | Given IPv4 address from Honeycomb should be -| | ... | ${node} | local0 | ${ipv4['address']} | ${ipv4['prefix-length']} -| | And IPv4 address from VAT should be -| | ... | ${node} | local0 -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} | ${ipv4['netmask']} -| | And sub-interface ipv4 address from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} -| | And sub-interface ipv4 address from VAT should be -| | ... | ${node} | ${sub_if_name} -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} -| | When Honeycomb removes unnumbered configuration from interface -| | ... | ${node} | ${super_if}.${sub_if_id} -| | Then IPv4 address from Honeycomb should be -| | ... | ${node} | local0 | ${ipv4['address']} | ${ipv4['prefix-length']} -| | And IPv4 address from VAT should be -| | ... | ${node} | local0 -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} | ${ipv4['netmask']} -| | And sub-interface ipv4 address from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And sub-interface ipv4 address from VAT should be empty -| | ... | ${node} | ${sub_if_name} - -| TC24: Honeycomb can configure unnumbered interface using a sub-interface -| | [Documentation] | Check if Honeycomb can configure an unnumbered interface\ -| | ... | on an interface, borrowing the IP address of a sub-interface. -| | ... -| | Given IPv4 address from Honeycomb should be empty | ${node} | local0 -| | And ipv4 address from VAT should be empty | ${node} | local0 -| | And sub-interface ipv4 address from Honeycomb should be empty -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | And sub-interface ipv4 address from VAT should be empty -| | ... | ${node} | ${sub_if_name} -| | And Honeycomb sets sub-interface ipv4 address -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} -| | When Honeycomb adds unnumbered configuration to interface -| | ... | ${node} | local0 | ${super_if}.${sub_if_id} -| | Then IPv4 address from Honeycomb should be -| | ... | ${node} | local0 | ${ipv4['address']} | ${ipv4['prefix-length']} -| | And IPv4 address from VAT should be -| | ... | ${node} | local0 -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} | ${ipv4['netmask']} -| | And sub-interface ipv4 address from Honeycomb should be -| | ... | ${node} | ${super_if} | ${sub_if_id} -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} -| | And sub-interface ipv4 address from VAT should be -| | ... | ${node} | ${sub_if_name} -| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} - -*** Keywords *** -| Set super and sub interfaces up -| | [Documentation] | Honeycomb sets super-interface and sub-interface up, in \ -| | ... | this order. -| | ... -| | ... | *Arguments:* -| | ... | - node - Information about a DUT node. Type: dictionary -| | ... | - super_interface - Super interface. Type: string -| | ... | - identifier - Sub-interface identifier. Type: integer or string -| | ... -| | ... | *Example:* -| | ... | \| Set super and sub interfaces up\ -| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \| -| | ... -| | [Arguments] | ${node} | ${super_interface} | ${identifier} -| | ... -| | Honeycomb configures interface state -| | ... | ${node} | ${super_interface} | up -| | Honeycomb sets the sub-interface up -| | ... | ${node} | ${super_interface} | ${identifier} - -| Set super and sub interfaces down -| | [Documentation] | Honeycomb sets super-interface and sub-interface down, in\ -| | ... | this order. -| | ... -| | ... | *Arguments:* -| | ... | - node - Information about a DUT node. Type: dictionary -| | ... | - super_interface - Super interface. Type: string -| | ... | - identifier - Sub-interface identifier. Type: integer or string -| | ... -| | ... | *Example:* -| | ... | \| Set super and sub interfaces down\ -| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \| -| | ... -| | [Arguments] | ${node} | ${super_interface} | ${identifier} -| | ... -| | Honeycomb configures interface state -| | ... | ${node} | ${super_interface} | down -| | Honeycomb sets the sub-interface down -| | ... | ${node} | ${super_interface} | ${identifier} - -| Honeycomb disables tag rewrite -| | [Documentation] | -| | ... -| | ... | *Arguments:* -| | ... | - node - Information about a DUT node. Type: dictionary -| | ... | - super_if - Super-interface. Type: string -| | ... | - identifier - Sub-interface ID. Type: integer or string -| | ... -| | ... | *Example:* -| | ... | \| Honeycomb disables tag rewrite \ -| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \| -| | ... -| | [Arguments] | ${node} | ${super_if} | ${sub_if_id} -| | ... -| | Honeycomb configures tag rewrite -| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_disabled} diff --git a/tests/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot deleted file mode 100644 index 804c067a8a..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot +++ /dev/null @@ -1,293 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -# Interface to run tests on. -| ${interface}= | ${node['interfaces']['port1']['name']} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv6.robot -| Variables | resources/test_data/honeycomb/interface_ip.py -| ... -| Force Tags | HC_FUNC -| ... -| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Documentation | *Honeycomb interface management test suite.* - -*** Test Cases *** -| TC01: Honeycomb configures and reads interface state -| | [Documentation] | Check if Honeycomb API can modify the admin state of\ -| | ... | VPP interfaces. -| | ... -| | Given Interface state from Honeycomb should be -| | ... | ${node} | ${interface} | down -| | And Interface state from VAT should be | ${node} | ${interface} | down -| | When Honeycomb configures interface state | ${node} | ${interface} | up -| | Then Interface state from Honeycomb should be -| | ... | ${node} | ${interface} | up -| | And Interface state from VAT should be | ${node} | ${interface} | up -| | When Honeycomb configures interface state | ${node} | ${interface} | down -| | Then Interface state from Honeycomb should be -| | ... | ${node} | ${interface} | down -| | And Interface state from VAT should be | ${node} | ${interface} | down - -| TC02: Honeycomb modifies interface IPv4 address with netmask -| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv4\ -| | ... | with address and netmask provided. -| | ... -| | Given IPv4 address from Honeycomb should be empty | ${node} | ${interface} -| | And ipv4 address from VAT should be empty | ${node} | ${interface} -| | When Honeycomb sets interface IPv4 address | ${node} | ${interface} -| | ... | ${ipv4_address} | ${ipv4_mask} -| | Then IPv4 address from Honeycomb should be -| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} -| | And IPv4 address from VAT should be -| | ... | ${node} | ${interface} | ${ipv4_address} -| | ... | ${ipv4_prefix} | ${ipv4_mask} - -| TC03: Honeycomb removes IPv4 address from interface -| | [Documentation] | Check if Honeycomb API can remove configured ipv4\ -| | ... | addresses from interface. -| | ... -| | Given IPv4 address from Honeycomb should be -| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} -| | And IPv4 address from VAT should be -| | ... | ${node} | ${interface} | ${ipv4_address} -| | ... | ${ipv4_prefix} | ${ipv4_mask} -| | When Honeycomb removes interface IPv4 addresses | ${node} | ${interface} -| | Then IPv4 address from Honeycomb should be empty | ${node} | ${interface} -| | And ipv4 address from VAT should be empty | ${node} | ${interface} - -| TC04: Honeycomb modifies interface IPv4 address with prefix -| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv4\ -| | ... | with address and prefix provided. -| | ... -| | [Teardown] | Honeycomb removes interface IPv4 addresses | ${node} -| | ... | ${interface} -| | ... -| | Given IPv4 address from Honeycomb should be empty | ${node} | ${interface} -| | And ipv4 address from VAT should be empty | ${node} | ${interface} -| | When Honeycomb sets interface IPv4 address with prefix -| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_prefix} -| | Then IPv4 address from Honeycomb should be -| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_prefix} -| | And IPv4 address from VAT should be -| | ... | ${node} | ${interface} | ${ipv4_address2} -| | ... | ${ipv4_prefix} | ${ipv4_mask} - -| TC05: Honeycomb modifies IPv4 neighbor table -| | [Documentation] | Check if Honeycomb API can add and remove ARP entries. -| | ... -| | [Teardown] | Honeycomb clears all interface IPv4 neighbors -| | ... | ${node} | ${interface} -| | ... -| | Given IPv4 neighbor from Honeycomb should be empty -| | ... | ${node} | ${interface} -| | When Honeycomb adds interface IPv4 neighbor -| | ... | ${node} | ${interface} | ${ipv4_neighbor} | ${neighbor_mac} -| | Then IPv4 neighbor from Honeycomb should be -| | ... | ${node} | ${interface} | ${ipv4_neighbor} | ${neighbor_mac} - -| TC06: Honeycomb modifies interface configuration - IPv6 -| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv6. -| | ... -| | [Teardown] | Honeycomb removes interface IPv6 addresses | ${node} -| | ... | ${interface} -| | ... -| | Given IPv6 address from Honeycomb should be empty -| | ... | ${node} | ${interface} -| | And IPv6 address from VAT should be empty -| | ... | ${node} | ${interface} -| | When Honeycomb sets interface IPv6 address -| | ... | ${node} | ${interface} | ${ipv6_address} | ${ipv6_prefix} -| | Then IPv6 address from Honeycomb should contain -| | ... | ${node} | ${interface} | ${ipv6_address} | ${ipv6_prefix} -| | And IPv6 address from VAT should contain -| | ... | ${node} | ${interface} | ${ipv6_address} | ${ipv6_prefix} - -| TC07: Honeycomb modifies IPv6 neighbor table -| | [Documentation] | Check if Honeycomb API can add and remove ARP entries. -| | ... -| | [Teardown] | Honeycomb clears all interface IPv6 neighbors -| | ... | ${node} | ${interface} -| | ... -| | Given IPv6 neighbor from Honeycomb should be empty -| | ... | ${node} | ${interface} -| | When Honeycomb adds interface IPv6 neighbor -| | ... | ${node} | ${interface} | ${ipv6_neighbor} | ${neighbor_mac} -| | Then IPv6 neighbor from Honeycomb should be -| | ... | ${node} | ${interface} | ${ipv6_neighbor} | ${neighbor_mac} - -| TC08: Honeycomb modifies interface configuration - MTU -| | [Documentation] | Check if Honeycomb API can configure interface\ -| | ... | MTU value. -| | ... -| | When Honeycomb sets interface ethernet configuration -| | ... | ${node} | ${interface} | ${ethernet} -| | Then Interface ethernet Operational Data From Honeycomb Should Be -| | ... | ${node} | ${interface} | ${ethernet} -| | And Interface ethernet Operational Data From VAT Should Be -| | ... | ${node} | ${interface} | ${ethernet['mtu']} - -| TC09: Honeycomb modifies interface configuration - vrf -| | [Documentation] | Check if Honeycomb API can configure interface\ -| | ... | vrf ID. -| | ... -| | [Teardown] | Honeycomb sets interface VRF ID -| | ... | ${node} | ${interface} | ${0} | ipv4 -| | ... -| | When Honeycomb sets interface VRF ID -| | ... | ${node} | ${interface} | ${1} | ipv4 -| | Then Interface VRF ID from Honeycomb should be -| | ... | ${node} | ${interface} | ${1} | ipv4 -| | And Interface VRF ID from VAT should be -| | ... | ${node} | ${interface} | ${1} - -| TC10: Honeycomb can configure multiple IP addresses on one interface -| | [Documentation] | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-ICMP; Eth-IPv6-ICMPv6 -| | ... | [Cfg] (Using Honeycomb API) On DUT1 set two IPv4 addresses\ -| | ... | and two IPv6 addresses on first interfaces to TG and add ARP entries\ -| | ... | for each address. -| | ... | [Ver] Send ICMP packets from TG to DUT, using different sets\ -| | ... | of source and destination IP addresses. Receive an ICMP reply\ -| | ... | for every packet sent. -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | When Honeycomb sets interface IPv4 address with prefix -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv4_address} | ${ipv4_prefix} -| | And Honeycomb adds interface IPv4 address -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv4_address2} | ${ipv4_prefix} -| | And Honeycomb sets interface IPv6 address -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv6_address} | ${ipv6_prefix} -| | And Honeycomb adds interface IPv6 address -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv6_address2} | ${ipv6_prefix} -| | Then IPv4 address from Honeycomb should be -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv4_address} | ${ipv4_prefix} -| | And IPv4 address from VAT should be -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv4_address} -| | ... | ${ipv4_prefix} | ${ipv4_mask} -| | And IPv6 address from Honeycomb should contain -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv6_address} | ${ipv6_prefix} -| | And IPv6 address from VAT should contain -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv6_address} | ${ipv6_prefix} -| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up -| | And Honeycomb adds interface IPv4 neighbor | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${ipv4_neighbor} | ${neighbor_mac} -| | And Honeycomb adds interface IPv4 neighbor | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${ipv4_neighbor2} | ${neighbor_mac2} -| | And Honeycomb adds interface IPv6 neighbor | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${ipv6_neighbor} | ${neighbor_mac} -| | And Honeycomb adds interface IPv6 neighbor | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${ipv6_neighbor2} | ${neighbor_mac2} -| | And Suppress ICMPv6 router advertisement message | ${nodes} -| | Then Ping and Verify IP address | ${nodes['TG']} -| | ... | ${ipv4_neighbor} | ${ipv4_address} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} -| | And Ping and Verify IP address | ${nodes['TG']} -| | ... | ${ipv4_neighbor2} | ${ipv4_address2} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} -| | And Ping and Verify IP address | ${nodes['TG']} -| | ... | ${ipv6_neighbor} | ${ipv6_address} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} -| | And Ping and Verify IP address | ${nodes['TG']} -| | ... | ${ipv6_neighbor2} | ${ipv6_address2} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} - -| TC11: Honeycomb can configure unnumbered interface -| | [Documentation] | Check if Honeycomb can configure an unnumbered interface\ -| | ... | on a physical interface, borrowing the IP address of 'local0'. -| | ... -| | Given Honeycomb sets interface IPv4 address | ${node} -| | ... | local0 | ${ipv4_address} | ${ipv4_prefix} -| | When Honeycomb adds unnumbered configuration to interface -| | ... | ${node} | ${interface} | local0 -| | Then IPv4 address from Honeycomb should be -| | ... | ${node} | local0 | ${ipv4_address} | ${ipv4_prefix} -| | And IPv4 address from VAT should be -| | ... | ${node} | local0 | ${ipv4_address} -| | ... | ${ipv4_prefix} | ${ipv4_mask} -| | And IPv4 address from Honeycomb should be -| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} -| | And IPv4 address from VAT should be -| | ... | ${node} | ${interface} | ${ipv4_address} -| | ... | ${ipv4_prefix} | ${ipv4_mask} - -| TC12: Honeycomb removes interface unnumbered configuration -| | [Documentation] | Check if Honeycomb can remove unnumbered configuration\ -| | ... | from an interface. -| | ... -| | Given IPv4 address from Honeycomb should be -| | ... | ${node} | local0 | ${ipv4_address} | ${ipv4_prefix} -| | And IPv4 address from VAT should be -| | ... | ${node} | local0 | ${ipv4_address} -| | ... | ${ipv4_prefix} | ${ipv4_mask} -| | And IPv4 address from Honeycomb should be -| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} -| | And IPv4 address from VAT should be -| | ... | ${node} | ${interface} | ${ipv4_address} -| | ... | ${ipv4_prefix} | ${ipv4_mask} -| | When Honeycomb removes unnumbered configuration from interface -| | ... | ${node} | ${interface} -| | Then IPv4 address from Honeycomb should be -| | ... | ${node} | local0 | ${ipv4_address} | ${ipv4_prefix} -| | And IPv4 address from VAT should be -| | ... | ${node} | local0 | ${ipv4_address} -| | ... | ${ipv4_prefix} | ${ipv4_mask} -| | And IPv4 address from Honeycomb should be empty | ${node} | ${interface} -| | And ipv4 address from VAT should be empty | ${node} | ${interface} - -| TC13: Honeycomb fails to configure two IPv4 addresses from the same subnet -| | [Documentation] | Check if Honeycomb can configure two IPv4 addresses in\ -| | ... | the same subnet onto a single interface. It should not be possible. -| | ... -| | [Teardown] | Honeycomb removes interface IPv4 addresses | ${node} -| | ... | ${interface} -| | ... -| | [Tags] | EXPECTED_FAILING -| | ... -# VPP API does not configure the second address, but returns success. VPP-649 -| | When Honeycomb sets interface IPv4 address with prefix -| | ... | ${node} | ${interface} | 192.168.0.1 | ${9} -| | Then Honeycomb fails to add interface IPv4 address -| | ... | ${node} | ${interface} | 192.168.0.2 | ${9} -| | And Honeycomb fails to add interface IPv4 address -| | ... | ${node} | ${interface} | 192.232.0.2 | ${9} - -| TC14: Honeycomb fails to configure two IPv6 addresses from the same subnet -| | [Documentation] | Check if Honeycomb can configure two IPv6 addresses in\ -| | ... | the same subnet onto a single interface. It should not be possible. -| | ... -| | [Tags] | EXPECTED_FAILING -| | ... -# VPP API does not configure the second address, but returns success. VPP-649 -| | [Teardown] | Honeycomb removes interface IPv6 addresses | ${node} -| | ... | ${interface} -| | When Honeycomb sets interface IPv6 address -| | ... | ${node} | ${interface} | 10::FF10 | ${64} -| | Then Honeycomb fails to add interface IPv6 address -| | ... | ${node} | ${interface} | 10::FF11 | ${64} -| | And Honeycomb fails to add interface IPv6 address -| | ... | ${node} | ${interface} | 10::FFFF | ${64} diff --git a/tests/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot deleted file mode 100644 index f35384c473..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot +++ /dev/null @@ -1,79 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -# Interfaces to run tests on. -| ${interface}= | ${node['interfaces']['port1']['name']} -| ${tap_interface}= | tap_test -# Configuration which will be set and verified during tests. -| &{tap_settings}= | tap-name=tap_test | mac=08:00:27:c0:5d:37 -| ... | device-instance=${1} -| &{tap_settings2}= | tap-name=tap_test | mac=08:00:27:60:26:ab -| ... | device-instance=${2} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/tap.robot -| ... -| Force Tags | HC_FUNC -| ... -| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Documentation | *Honeycomb TAP management test suite.* - -*** Test Cases *** -| TC01: Honeycomb configures TAP interface -| | [Documentation] | Check if Honeycomb API can configure a TAP interface. -| | ... -| | Given TAP Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${tap_interface} -| | And TAP Operational Data From VAT Should Be empty -| | ... | ${node} | ${tap_interface} -| | When Honeycomb creates TAP interface -| | ... | ${node} | ${tap_interface} | ${tap_settings} -| | Then TAP Operational Data From Honeycomb Should Be -| | ... | ${node} | ${tap_interface} | ${tap_settings} -| | And TAP Operational Data From VAT Should Be -| | ... | ${node} | ${tap_interface} | ${tap_settings} - -| TC02: Honeycomb modifies existing TAP interface configuration -| | [Documentation] | Check if Honeycomb API can re-configure and existing TAP\ -| | ... | interface with new settings. -| | ... -| | Given TAP Operational Data From Honeycomb Should Be -| | ... | ${node} | ${tap_interface} | ${tap_settings} -| | And TAP Operational Data From VAT Should Be -| | ... | ${node} | ${tap_interface} | ${tap_settings} -| | When Honeycomb configures TAP interface -| | ... | ${node} | ${tap_interface} | ${tap_settings2} -| | Then TAP Operational Data From Honeycomb Should Be -| | ... | ${node} | ${tap_interface} | ${tap_settings2} -| | And TAP Operational Data From VAT Should Be -| | ... | ${node} | ${tap_interface} | ${tap_settings2} - -| TC03: Honeycomb removes TAP interface -| | [Documentation] | Check if Honeycomb API can remove TAP interface. -| | ... -| | Given TAP Operational Data From Honeycomb Should Be -| | ... | ${node} | ${tap_interface} | ${tap_settings2} -| | And TAP Operational Data From VAT Should Be -| | ... | ${node} | ${tap_interface} | ${tap_settings2} -| | When Honeycomb removes TAP interface | ${node} | ${tap_interface} -| | Then TAP Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${tap_interface} -| | And TAP Operational Data From VAT Should Be empty -| | ... | ${node} | ${tap_interface} diff --git a/tests/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot deleted file mode 100644 index 4a2a763523..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot +++ /dev/null @@ -1,163 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -| ${interface}= | ${node['interfaces']['port1']['name']} -| ${vhost_interface}= | test_vhost -| &{vhost_user_server}= | socket=/tmp/soc1 | role=server -| &{vhost_user_server_edit_1}= | socket=/tmp/soc12 | role=server -| &{vhost_user_server_edit_2}= | socket=/tmp/soc12 | role=client -| &{vhost_user_client}= | socket=/tmp/soc2 | role=client -| &{vhost_user_client_edit_1}= | socket=/tmp/soc22 | role=client -| &{vhost_user_client_edit_2}= | socket=/tmp/soc22 | role=server -| &{vhost_user_wrong}= | socket=/tmp/soc2 | role=wrong - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/vhost_user.robot -| ... -| Force Tags | HC_FUNC -| ... -| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Documentation | *Honeycomb vhost-user interface management test suite.* - -*** Test Cases *** -| TC01: Honeycomb creates vhost-user interface - server -| | [Documentation] | Check if Honeycomb creates a vhost-user interface, role:\ -| | ... | server. -| | ... -| | Given vhost-user Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vhost_interface} -| | When Honeycomb creates vhost-user interface -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} -| | Then vhost-user Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} -| | And vhost-user Operational Data From VAT Should Be -| | ... | ${node} | ${vhost_user_server} - -| TC02: Honeycomb modifies vhost-user interface - server -| | [Documentation] | Check if Honeycomb can modify properties of existing\ -| | ... | vhost-user interface, role: server. -| | ... -| | Given vhost-user Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} -| | When Honeycomb configures vhost-user interface -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_1} -| | Then vhost-user Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_1} -| | And vhost-user Operational Data From VAT Should Be -| | ... | ${node} | ${vhost_user_server_edit_1} -| | When Honeycomb configures vhost-user interface -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_2} -| | Then vhost-user Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_2} -| | And vhost-user Operational Data From VAT Should Be -| | ... | ${node} | ${vhost_user_server_edit_2} -| | When Honeycomb configures vhost-user interface -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} -| | Then vhost-user Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} -| | And vhost-user Operational Data From VAT Should Be -| | ... | ${node} | ${vhost_user_server} - -| TC03: Honeycomb deletes vhost-user interface - server -| | [Documentation] | Check if Honeycomb can delete an existing vhost-user\ -| | ... | interface, role: server. -| | ... -| | Given vhost-user Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} -| | When Honeycomb removes vhost-user interface -| | ... | ${node} | ${vhost_interface} -| | Then vhost-user Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vhost_interface} -| | And vhost-user Operational Data From VAT Should Be empty -| | ... | ${node} - -| TC04: Honeycomb creates vhost-user interface - client -| | [Documentation] | Check if Honeycomb creates a vhost-user interface, role:\ -| | ... | client. -| | ... -| | Given vhost-user Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vhost_interface} -| | When Honeycomb creates vhost-user interface -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} -| | Then vhost-user Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} -| | And vhost-user Operational Data From VAT Should Be -| | ... | ${node} | ${vhost_user_client} - -| TC05: Honeycomb modifies vhost-user interface - client -| | [Documentation] | Check if Honeycomb can modify properties of existing\ -| | ... | vhost-user interface, role: client. -| | ... -| | Given vhost-user Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} -| | When Honeycomb configures vhost-user interface -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_1} -| | Then vhost-user Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_1} -| | And vhost-user Operational Data From VAT Should Be -| | ... | ${node} | ${vhost_user_client_edit_1} -| | When Honeycomb configures vhost-user interface -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_2} -| | Then vhost-user Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_2} -| | And vhost-user Operational Data From VAT Should Be -| | ... | ${node} | ${vhost_user_client_edit_2} -| | When Honeycomb configures vhost-user interface -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} -| | Then vhost-user Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} -| | And vhost-user Operational Data From VAT Should Be -| | ... | ${node} | ${vhost_user_client} - -| TC06: Honeycomb deletes vhost-user interface - client -| | [Documentation] | Check if Honeycomb can delete an existing vhost-user\ -| | ... | interface, role: client. -| | ... -| | Given vhost-user Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} -| | When Honeycomb removes vhost-user interface -| | ... | ${node} | ${vhost_interface} -| | Then vhost-user Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vhost_interface} -| | And vhost-user Operational Data From VAT Should Be empty -| | ... | ${node} - -| TC07: Honeycomb does not set vhost-user configuration on another interface type -| | [Documentation] | Check if Honeycomb refuses to set vhost-user\ -| | ... | configuration for interface which is not v3po:vhost-user type. -| | ... -| | When Honeycomb fails setting vhost-user on different interface type -| | ... | ${node} | ${interface} | ${vhost_user_server} -| | Then vhost-user Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${interface} -| | And vhost-user Operational Data From VAT Should Be empty -| | ... | ${node} - -| TC08: Honeycomb does not set invalid vhost-user configuration -| | [Documentation] | Check if Honeycomb refuses to set invalid parameters to\ -| | ... | vhost-user interface. -| | ... -| | Given vhost-user Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vhost_interface} -| | When Honeycomb fails setting invalid vhost-user configuration -| | ... | ${node} | ${vhost_interface} | ${vhost_user_wrong} -| | Then vhost-user Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vhost_interface} -| | And vhost-user Operational Data From VAT Should Be empty -| | ... | ${node} diff --git a/tests/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot deleted file mode 100644 index 6955167cb4..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot +++ /dev/null @@ -1,116 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -# Interfaces to run tests on. -| @{interfaces}= | ${node['interfaces']['port1']['name']} -| ... | ${node['interfaces']['port3']['name']} -# Configuration which will be set and verified during tests. -| ${bd1_name}= | bd-01 -| ${bd2_name}= | bd-02 -| &{bd_settings}= | flood=${True} | forward=${True} | learn=${True} -| ... | unknown-unicast-flood=${True} | arp-termination=${True} -| &{if_settings}= | split_horizon_group=${1} | bvi=${False} -| &{if_settings2}= | split_horizon_group=${2} | bvi=${True} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot -| ... -| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Force Tags | HC_FUNC -| ... -| Documentation | *Honeycomb bridge domain management test suite.* - -*** Test Cases *** -| TC01: Honeycomb sets up l2 bridge domain -| | [Documentation] | Check if Honeycomb can create bridge domains on VPP node. -| | ... -| | When Honeycomb creates first l2 bridge domain -| | ... | ${node} | ${bd1_name} | ${bd_settings} -| | Then Bridge domain Operational Data From Honeycomb Should Be -| | ... | ${node} | ${bd1_name} | ${bd_settings} -| | And Bridge domain Operational Data From VAT Should Be -| | ... | ${node} | ${0} | ${bd_settings} - -| TC02: Honeycomb manages multiple bridge domains on node -| | [Documentation] | Check if Honeycomb can manage multiple bridge domains on\ -| | ... | a single node. -| | ... -| | Given Bridge domain Operational Data From Honeycomb Should Be -| | ... | ${node} | ${bd1_name} | ${bd_settings} -| | When Honeycomb creates l2 bridge domain -| | ... | ${node} | ${bd2_name} | ${bd_settings} -| | Then Bridge domain Operational Data From Honeycomb Should Be -| | ... | ${node} | ${bd1_name} | ${bd_settings} -| | And Bridge domain Operational Data From Honeycomb Should Be -| | ... | ${node} | ${bd2_name} | ${bd_settings} -| | And Bridge domain Operational Data From VAT Should Be -| | ... | ${node} | ${0} | ${bd_settings} -| | And Bridge domain Operational Data From VAT Should Be -| | ... | ${node} | ${1} | ${bd_settings} - -| TC03: Honeycomb removes bridge domains -| | [Documentation] | Check if Honeycomb can remove bridge domains from a VPP\ -| | ... | node. -| | ... -| | Given Bridge domain Operational Data From Honeycomb Should Be -| | ... | ${node} | ${bd1_name} | ${bd_settings} -| | When Honeycomb removes all bridge domains | ${node} -| | Then Honeycomb should show no bridge domains | ${node} -| | And VAT should show no bridge domains | ${node} - -| TC04: Honeycomb assigns interfaces to bridge domain -| | [Documentation] | Check if Honeycomb can assign VPP interfaces to an\ -| | ... | existing bridge domain. -| | ... -| | Given Honeycomb creates first l2 bridge domain -| | ... | ${node} | ${bd1_name} | ${bd_settings} -| | When Honeycomb adds interfaces to bridge domain -| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings} -| | Then Bridge domain Operational Data From Honeycomb Should Be -| | ... | ${node} | ${bd1_name} | ${bd_settings} -| | And Bridge domain Operational Data From VAT Should Be -| | ... | ${node} | ${0} | ${bd_settings} -| | And Honeycomb should show interfaces assigned to bridge domain -| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings} -| | And VAT should show interfaces assigned to bridge domain -| | ... | ${node} | ${0} | @{interfaces} | ${if_settings} - -| TC05: Honeycomb cannot remove bridge domain with an interface assigned -| | [Documentation] | Check if Honeycomb can remove a bridge domain that has an\ -| | ... | interface assigned to it. Expect to fail with code 500. -| | ... -| | Given Bridge domain Operational Data From Honeycomb Should Be -| | ... | ${node} | ${bd1_name} | ${bd_settings} -| | And Bridge domain Operational Data From VAT Should Be -| | ... | ${node} | ${0} | ${bd_settings} -| | And Honeycomb should show interfaces assigned to bridge domain -| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings} -| | And VAT should show interfaces assigned to bridge domain -| | ... | ${node} | ${0} | @{interfaces} | ${if_settings} -| | When Run keyword and expect error | HoneycombError* Status code: 500. -| | ... | Honeycomb removes all bridge domains | ${node} -| | Then Bridge domain Operational Data From Honeycomb Should Be -| | ... | ${node} | ${bd1_name} | ${bd_settings} -| | And Bridge domain Operational Data From VAT Should Be -| | ... | ${node} | ${0} | ${bd_settings} -| | And Honeycomb should show interfaces assigned to bridge domain -| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings} -| | And VAT should show interfaces assigned to bridge domain -| | ... | ${node} | ${0} | @{interfaces} | ${if_settings} diff --git a/tests/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot deleted file mode 100644 index 2073b9b24b..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot +++ /dev/null @@ -1,232 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot -| Resource | resources/libraries/robot/honeycomb/l2_fib.robot -| Variables | resources/test_data/honeycomb/l2_fib.py | ${node} | ${interface} -| ... | ${interface2} -| ... -| Documentation | *Honeycomb L2 FIB management test suite.* -| ... -| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Force tags | HC_FUNC - -*** Variables *** -# Interface to run tests on. -| ${interface}= | ${node['interfaces']['port1']['name']} -| ${interface2}= | ${node['interfaces']['port3']['name']} - -*** Test Cases *** -| TC01: Honeycomb adds L2 FIB entry (forward) -| | [Documentation] | Honeycomb creates a bridge domain and assignes an \ -| | ... | interface to it. Then adds an L2 FIB entry (forward) to the bridge \ -| | ... | domain. -| | ... -| | [Teardown] | Honeycomb removes L2 FIB entry -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper['phys-address']} -| | ... -| | Given Interface state from Honeycomb should be -| | ... | ${node} | ${interface} | down -| | When Honeycomb configures interface state -| | ... | ${node} | ${interface} | up -| | Then Interface state from Honeycomb should be -| | ... | ${node} | ${interface} | up -| | When Honeycomb creates first l2 bridge domain -| | ... | ${node} | ${bd_name} | ${bd_settings} -| | Then Bridge domain Operational Data From Honeycomb Should Be -| | ... | ${node} | ${bd_name} | ${bd_settings} -| | Given Bridge domain Operational Interface Assignment should be empty -| | ... | ${node} | ${interface} -| | When Honeycomb adds interface to bridge domain -| | ... | ${node} | ${interface} | ${bd_name} | ${if_bd_settings} -| | Then Bridge domain Operational Interface Assignment should be -| | ... | ${node} | ${interface} | ${if_bd_settings} -| | Given L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} -| | When Honeycomb adds L2 FIB entry to bridge domain -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg} -| | Then L2 FIB Entry from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} -| | And L2 FIB entry from VAT should be -| | ... | ${node} | ${bd_index} | ${l2_fib_forward_vat} - -| TC02: Honeycomb adds L2 FIB entry (static, forward) -| | [Documentation] | Honeycomb adds an L2 FIB entry (static, forward) to the \ -| | ... | bridge domain. -| | ... -| | [Teardown] | Honeycomb removes L2 FIB entry -| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_oper['phys-address']} -| | ... -| | Given Bridge domain Operational Interface Assignment should be -| | ... | ${node} | ${interface} | ${if_bd_settings} -| | And L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} -| | When Honeycomb adds L2 FIB entry to bridge domain -| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_cfg} -| | Then L2 FIB Entry from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_oper} -| | And L2 FIB entry from VAT should be -| | ... | ${node} | ${bd_index} | ${l2_fib_static_forward_vat} - -| TC03: Honeycomb adds L2 FIB entry (static, filter) -| | [Documentation] | Honeycomb adds an L2 FIB entry (static, filter) to the \ -| | ... | bridge domain. -| | ... -| | [Teardown] | Honeycomb removes L2 FIB entry -| | ... | ${node} | ${bd_name} | ${l2_fib_filter_oper['phys-address']} -| | ... -| | Given Bridge domain Operational Interface Assignment should be -| | ... | ${node} | ${interface} | ${if_bd_settings} -| | And L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} -| | When Honeycomb adds L2 FIB entry to bridge domain -| | ... | ${node} | ${bd_name} | ${l2_fib_filter_cfg} -| | Then L2 FIB Entry from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${l2_fib_filter_oper} -| | And L2 FIB entry from VAT should be -| | ... | ${node} | ${bd_index} | ${l2_fib_filter_vat} - -| TC04: Honeycomb adds and removes L2 FIB entry (forward) -| | [Documentation] | Honeycomb adds an L2 FIB entry (forward) to the bridge \ -| | ... | domain and then Honeycomb removes it from the bridge domain. -| | ... -| | [Teardown] | Honeycomb removes L2 FIB entry -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper['phys-address']} -| | ... -| | Given Bridge domain Operational Interface Assignment should be -| | ... | ${node} | ${interface} | ${if_bd_settings} -| | And L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} -| | When Honeycomb adds L2 FIB entry to bridge domain -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg} -| | Then L2 FIB Entry from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} -| | And L2 FIB entry from VAT should be -| | ... | ${node} | ${bd_index} | ${l2_fib_forward_vat} -| | When Honeycomb removes L2 FIB entry -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper['phys-address']} -| | Then L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} - -| TC05: Honeycomb adds more than one L2 FIB entry -| | [Documentation] | Honeycomb adds three L2 FIB entries to the bridge domain. -| | ... -| | [Teardown] | Honeycomb removes all L2 FIB entries -| | ... | ${node} | ${bd_name} -| | ... -| | Given Bridge domain Operational Interface Assignment should be -| | ... | ${node} | ${interface} | ${if_bd_settings} -| | And L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} -| | When Honeycomb adds L2 FIB entry to bridge domain -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg} -| | And Honeycomb adds L2 FIB entry to bridge domain -| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_cfg} -| | And Honeycomb adds L2 FIB entry to bridge domain -| | ... | ${node} | ${bd_name} | ${l2_fib_filter_cfg} -| | Then L2 FIB Entry from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} -| | And L2 FIB Entry from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_oper} -| | And L2 FIB Entry from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${l2_fib_filter_oper} -| | And L2 FIB entry from VAT should be -| | ... | ${node} | ${bd_index} | ${l2_fib_forward_vat} -| | And L2 FIB entry from VAT should be -| | ... | ${node} | ${bd_index} | ${l2_fib_static_forward_vat} -| | And L2 FIB entry from VAT should be -| | ... | ${node} | ${bd_index} | ${l2_fib_filter_vat} - -| TC06: Honeycomb fails to set wrong L2 FIB entry -| | [Documentation] | Honeycomb tries to add an L2 FIB entry with wrong \ -| | ... | parameters to the bridge domain. It must fail. -| | ... -| | [Teardown] | Honeycomb removes all L2 FIB entries -| | ... | ${node} | ${bd_name} -| | ... -| | Given Bridge domain Operational Interface Assignment should be -| | ... | ${node} | ${interface} | ${if_bd_settings} -| | And L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} -| | When Honeycomb fails to add wrong L2 FIB entry -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg_wrong_mac} -| | Then L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} -| | When Honeycomb fails to add wrong L2 FIB entry -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg_wrong_if} -| | Then L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} -| | When Honeycomb fails to add wrong L2 FIB entry -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg_wrong_action} -| | Then L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} - -| TC07: Honeycomb fails to modify existing L2 FIB entry -| | [Documentation] | Honeycomb tries to modify an existing L2 FIB entry. It \ -| | ... | must fail. -| | ... -| | [Teardown] | Honeycomb removes all L2 FIB entries -| | ... | ${node} | ${bd_name} -| | ... -| | Given Bridge domain Operational Interface Assignment should be -| | ... | ${node} | ${interface} | ${if_bd_settings} -| | And L2 FIB Table from Honeycomb should be empty -| | ... | ${node} | ${bd_name} -| | And L2 FIB Table from VAT should be empty -| | ... | ${node} | ${bd_index} -| | When Honeycomb adds L2 FIB entry to bridge domain -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg} -| | Then L2 FIB Entry from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} -| | When Honeycomb fails to modify L2 FIB entry -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper['phys-address']} -| | ... | outgoing-interface -| | ... | ${l2_fib_forward_modified_cfg['outgoing-interface']} -| | Then L2 FIB Entry from Honeycomb should be -| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} -| | And L2 FIB entry from VAT should be -| | ... | ${node} | ${bd_index} | ${l2_fib_forward_vat} - -*** Keywords *** -| Set test interface down -| | [Documentation] | Set the interface used in tests down. -| | ... -| | Honeycomb configures interface state -| | ... | ${node} | ${interface} | down diff --git a/tests/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.robot deleted file mode 100644 index 83634bf79b..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.robot +++ /dev/null @@ -1,224 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables*** -| ${ip_address}= | 192.168.0.4 -| @{ip_addresses}= | 192.168.0.4 | 192.168.0.5 | 192.168.0.6 | 192.168.0.7 -| ${state}= | enabled -| ${interface}= | ${node['interfaces']['port1']['name']} -| ${bd_name}= | bd_lisp -| ${bd2_name}= | bd2_lisp -| &{bd_settings}= | flood=${True} | forward=${True} | learn=${True} -| ... | unknown-unicast-flood=${True} | arp-termination=${True} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/lisp.robot -| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot -| Variables | resources/test_data/honeycomb/lisp.py -| ... -| Documentation | *Honeycomb Lisp test suite.* -| ... -| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Force Tags | HC_FUNC - -*** Test Cases *** -| TC01: Honeycomb enables LISP feature -| | [Documentation] | Check if Honeycomb can enable the Lisp feature. -| | ... -| | Given Lisp Should Not Be Configured | ${node} -| | When Honeycomb enables LISP | ${node} -| | Then LISP state from Honeycomb should be | ${node} | ${state} -| | And LISP state from VAT should be | ${node} | ${state} - -| TC02: Honeycomb adds locator set and locator -| | [Documentation] | Check if Honeycomb can configure a locator set. -| | ... -| | Given LISP state from Honeycomb should be | ${node} | ${state} -| | When Honeycomb adds locator set | ${node} | ${interface} | ${locator_set} -| | Then Locator Set From Honeycomb Should Be -| | ... | ${node} | ${interface} | ${locator_set} - -| TC03: Honeycomb configures Lisp - remote mapping - Bridge Domain -| | [Documentation] | Check if Honeycomb can configure a remote Lisp mapping\ -| | ... | with a bridge domain. -| | ... -| | Given LISP state from Honeycomb should be | ${node} | ${state} -| | And Honeycomb creates first l2 bridge domain -| | ... | ${node} | ${bd_name} | ${bd_settings} -| | When Honeycomb adds LISP mapping | ${node} | ${lisp_settings_remote_bd} -| | Then LISP mapping from Honeycomb should be -| | ... | ${node} | ${remote_bd_subtable} -| | And LISP mapping from VAT should be -| | ... | ${node} | ${vat_remote_bd} - -| TC04: Honeycomb can remove Lisp mapping -| | [Documentation] | Check if Honeycomb can remove a configured Lisp mapping. -| | ... -| | Given LISP mapping from Honeycomb should be -| | ... | ${node} | ${remote_bd_subtable} -| | And LISP mapping from VAT should be -| | ... | ${node} | ${vat_remote_bd} -| | When Honeycomb removes all lisp mappings | ${node} -| | Then LISP mappings from Honeycomb should not exist -| | ... | ${node} -| | And LISP mappings from VAT should not exist -| | ... | ${node} - -| TC05: Honeycomb configures Lisp - remote mapping - VRF -| | [Documentation] | Check if Honeycomb can configure a remote Lisp mapping\ -| | ... | with VRF. -| | ... -| | [Teardown] | Honeycomb removes all lisp mappings | ${node} -| | ... -| | Given LISP mappings from Honeycomb should not exist -| | ... | ${node} -| | And LISP mappings from VAT should not exist -| | ... | ${node} -| | When Honeycomb adds LISP mapping | ${node} | ${lisp_settings_remote_vrf} -| | Then LISP mapping from Honeycomb should be -| | ... | ${node} | ${remote_vrf_subtable} -| | And LISP mapping from VAT should be | ${node} | ${vat_remote_vrf} - -| TC06: Honeycomb configures Lisp - local mapping - Bridge Domain -| | [Documentation] | Check if Honeycomb can configure a local Lisp mapping\ -| | ... | with a bridge domain. -| | ... -| | [Teardown] | Honeycomb removes all lisp mappings | ${node} -| | ... -| | Given Locator Set From Honeycomb Should Be -| | ... | ${node} | ${interface} | ${locator_set} -| | And LISP mappings from Honeycomb should not exist -| | ... | ${node} -| | And LISP mappings from VAT should not exist -| | ... | ${node} -| | And Honeycomb creates first l2 bridge domain -| | ... | ${node} | ${bd2_name} | ${bd_settings} -| | When Honeycomb adds LISP mapping | ${node} | ${lisp_settings_local_bd} -| | Then LISP mapping from Honeycomb should be | ${node} | ${local_bd_subtable} -| | And LISP mapping from VAT should be | ${node} | ${vat_local_bd} - -| TC07: Honeycomb configures Lisp - local mapping - VRF -| | [Documentation] | Check if Honeycomb can configure a local Lisp mapping\ -| | ... | with VRF. -| | ... -| | [Teardown] | Honeycomb removes all lisp mappings | ${node} -| | ... -| | Given Locator Set From Honeycomb Should Be -| | ... | ${node} | ${interface} | ${locator_set} -| | And LISP mappings from Honeycomb should not exist -| | ... | ${node} -| | And LISP mappings from VAT should not exist -| | ... | ${node} -| | When Honeycomb adds LISP mapping | ${node} | ${lisp_settings_local_vrf} -| | Then LISP mapping from Honeycomb should be | ${node} | ${local_vrf_subtable} -| | And LISP mapping from VAT should be | ${node} | ${vat_local_vrf} - -| TC08: Honeycomb configures Lisp mapping with adjacency -| | [Documentation] | Check if Honeycomb can configure local and remote Lisp\ -| | ... | mappings with VRF, and configure adjacency. -| | ... -| | [Teardown] | Honeycomb removes all lisp mappings | ${node} -| | ... -| | Given Locator Set From Honeycomb Should Be -| | ... | ${node} | ${interface} | ${locator_set} -| | And Honeycomb creates first l2 bridge domain -| | ... | ${node} | ${bd2_name} | ${bd_settings} -| | And LISP mappings from Honeycomb should not exist -| | ... | ${node} -| | And LISP mappings from VAT should not exist -| | ... | ${node} -| | And Honeycomb adds LISP mapping | ${node} | ${lisp_settings_both_vrf} -| | When Honeycomb adds LISP adjacency | ${node} | ${7} | remote_map_vrf -| | ... | adj01 | ${vrf_adjacency} -| | Then Lisp mapping from Honeycomb should be -| | ... | ${node} | ${adj_subtable} - -| TC09: Honeycomb configures Lisp Map Resolver -| | [Documentation] | Check if Honeycomb can configure a Lisp Map Resolver. -| | ... -| | Given LISP state from Honeycomb should be | ${node} | ${state} -| | And LISP state from VAT should be | ${node} | ${state} -| | When Honeycomb adds Lisp Map Resolver | ${node} | ${ip_address} -| | Then Map Resolver from Honeycomb should be | ${node} | ${ip_address} -| | And Map Resolver from VAT should be | ${node} | ${ip_address} - -| TC10: Honeycomb configures Lisp Map Server -| | [Documentation] | Check if Honeycomb can configure a Lisp Map Server. -| | ... -| | Given LISP state from Honeycomb should be | ${node} | ${state} -| | And LISP state from VAT should be | ${node} | ${state} -| | When Honeycomb adds Lisp Map Server | ${node} | @{ip_addresses} -| | Then Map Server from Honeycomb should be | ${node} | @{ip_addresses} -| | And Map Server from VAT should be | ${node} | @{ip_addresses} - -| TC11: Honeycomb configures Lisp PETR configuration -| | [Documentation] | Check if Honeycomb can configure Lisp -| | ... | PETR configuration. -| | ... -| | Given LISP state from Honeycomb should be | ${node} | ${state} -| | And LISP state from VAT should be | ${node} | ${state} -| | When Honeycomb enables LISP PETR feature | ${node} | ${ip_address} -| | Then PETR configuration from Honeycomb should be | ${node} | ${ip_address} -| | And PETR configuration from VAT should be | ${node} | enabled - -| TC12: Honeycomb configures Lisp RLOC Probing -| | [Documentation] | Check if Honeycomb can configure Lisp RLOC Probing. -| | ... -| | Given LISP state from Honeycomb should be | ${node} | ${state} -| | And LISP state from VAT should be | ${node} | ${state} -| | When Honeycomb enables LISP RLOC feature | ${node} -| | Then RLOC Probing from Honeycomb should be | ${node} | ${True} -| | And RLOC Probing from VAT should be | ${node} | enabled - -| TC13: Honeycomb configures Lisp Map Register -| | [Documentation] | Check if Honeycomb can configure a Lisp Map Register. -| | ... -| | Given LISP state from Honeycomb should be | ${node} | ${state} -| | And LISP state from VAT should be | ${node} | ${state} -| | When Honeycomb adds Lisp Map Register | ${node} | ${True} -| | Then Map Register from Honeycomb should be | ${node} | ${True} -| | And Map Register from VAT should be | ${node} | enabled - -| TC14: Honeycomb enabled Lisp PITR feature -| | [Documentation] | Check if Honeycomb can configure the Lisp PITR feature. -| | ... -| | Given Locator Set From Honeycomb Should Be -| | ... | ${node} | ${interface} | ${locator_set} -| | When Honeycomb enables LISP PITR feature | ${node} | ${locator_set} -| | Then PITR config from Honeycomb should be | ${node} | ${locator_set} -| | And PITR config from VAT should be | ${node} | ${locator_set} - -| TC15: Honeycomb can remove configuration of Lisp features -| | [Documentation] | Check if Honeycomb can disable all Lisp features. -| | ... -| | Given Map resolver from Honeycomb should be | ${node} | ${ip_address} -| | And PITR config from Honeycomb should be | ${node} | ${locator_set} -| | When Honeycomb disables all LISP features | ${node} -| | Then Lisp Should Not Be Configured | ${node} - -| TC16: Honeycomb configures Lisp Map Request Mode -| | [Documentation] | Check if Honeycomb can configure Lisp Map Request mode. -| | ... | Note: Map Request Mode cannot be removed once configured. -| | ... -| | [Teardown] | Honeycomb disables LISP | ${node} -| | ... -| | Given Honeycomb enables LISP | ${node} -| | When Honeycomb sets Lisp Map Request Mode | ${node} | ${True} -| | Then Map Request Mode from Honeycomb should be -| | ... | ${node} | source-destination -| | And Map Request Mode from VAT should be | ${node} | src-dst diff --git a/tests/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot deleted file mode 100644 index 9270b98156..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot +++ /dev/null @@ -1,147 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables*** -| ${super_if}= | ${node['interfaces']['port1']['name']} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/nsh.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/vxlan_gpe.robot -| Variables | resources/test_data/honeycomb/nsh.py -| Variables | resources/test_data/honeycomb/vxlan_gpe.py -| ... -| Documentation | *Honeycomb NSH test suite.* -| ... -| Suite Setup | Run Keywords -| ... | Enable Honeycomb Feature | ${node} | NSH | AND -| ... | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Run Keywords -| ... | Tear Down Honeycomb Functional Test Suite | ${node} | AND -| ... | Disable Honeycomb Feature | ${node} | NSH -| ... -| Force Tags | honeycomb_sanity | honeycomb_odl - -*** Test Cases *** -| TC01: Honeycomb can configure NSH entry -| | [Documentation] | Check if Honeycomb can configure an NSH entry. -| | ... -| | Given NSH Operational Data From Honeycomb Should Be empty | ${node} -| | When Honeycomb adds NSH entry | ${node} | entry1 | ${nsh_entry1} -| | Then NSH entry from Honeycomb should be -| | ... | ${node} | entry1 | ${nsh_entry1_oper} - -| TC02: Honeycomb can remove NSH entry -| | [Documentation] | Check if Honeycomb can remove an existing NSH entry. -| | ... -| | Given NSH entry from Honeycomb should be -| | ... | ${node} | entry1 | ${nsh_entry1_oper} -| | When Honeycomb removes NSH entry | ${node} | entry1 -| | Then NSH Operational Data From Honeycomb Should Be empty | ${node} - -| TC03: Honeycomb can configure new NSH entry -| | [Documentation] | Check if Honeycomb can configure an NSH antry after one\ -| | ... | has been deleted. -| | ... -| | [Teardown] | Honeycomb removes NSH entry | ${node} | entry2 -| | ... -| | Given NSH Operational Data From Honeycomb Should Be empty | ${node} -| | When Honeycomb adds NSH entry | ${node} | entry2 | ${nsh_entry2} -| | Then NSH entry from Honeycomb should be -| | ... | ${node} | entry2 | ${nsh_entry2_oper} - -| TC04: Honeycomb can configure multiple NSH entries at the same time -| | [Documentation] | Check if Honeycomb can configure an NSH entry when one\ -| | ... | already exists. -| | ... -| | [Teardown] | Honeycomb clears NSH configuration | ${node} -| | ... -| | Given NSH Operational Data From Honeycomb Should Be empty | ${node} -| | When Honeycomb adds NSH entry | ${node} | entry1 | ${nsh_entry1} -| | And Honeycomb adds NSH entry | ${node} | entry2 | ${nsh_entry2} -| | Then NSH entry from Honeycomb should be -| | ... | ${node} | entry1 | ${nsh_entry1_oper} -| | And NSH entry from Honeycomb should be -| | ... | ${node} | entry2 | ${nsh_entry2_oper} - -| TC05: Honeycomb can configure NSH map -| | [Documentation] | Check if Honeycomb can configure an NSH map. -| | ... -| | Given NSH Operational Data From Honeycomb Should Be empty | ${node} -| | And Honeycomb creates VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if1} -| | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1} -| | When Honeycomb adds NSH entry | ${node} | entry1 | ${nsh_entry1} -| | And Honeycomb adds NSH map | ${node} | map1 | ${nsh_map1} -| | Then NSH map from Honeycomb should be | ${node} | map1 | ${nsh_map1_oper} - -| TC06: Honeycomb can remove NSH map -| | [Documentation] | Check if Honeycomb can remove an existing NSH map. -| | ... -| | Given NSH entry from Honeycomb should be -| | ... | ${node} | entry1 | ${nsh_entry1_oper} -| | And VxLAN GPE Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vxlan_gpe_if1} -| | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1} -| | And NSH map from Honeycomb should be | ${node} | map1 | ${nsh_map1_oper} -| | When Honeycomb removes NSH map | ${node} | map1 -| | Then NSH map from Honeycomb should not exist | ${node} | map1 -| | And NSH entry from Honeycomb should be -| | ... | ${node} | entry1 | ${nsh_entry1_oper} - -| TC07: Honeycomb can modify existing NSH map -| | [Documentation] | Check if Honeycomb can configure an NSH map after one\ -| | ... | has been deleted. -| | ... -| | [Teardown] | Honeycomb removes NSH map | ${node} | map1_edit -| | ... -| | Given NSH map from Honeycomb should not exist | ${node} | map1_edit -| | And NSH entry from Honeycomb should be -| | ... | ${node} | entry1 | ${nsh_entry1_oper} -| | And VxLAN GPE Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vxlan_gpe_if1} -| | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1} -| | When Honeycomb adds NSH map | ${node} | map1_edit | ${nsh_map1_edit} -| | Then NSH map from Honeycomb should be -| | ... | ${node} | map1_edit | ${nsh_map1_edit_oper} -| | And NSH entry from Honeycomb should be -| | ... | ${node} | entry1 | ${nsh_entry1_oper} - -| TC08: Honeycomb can configure multiple NSH maps at the same time -| | [Documentation] | Check if Honeycomb can configure and NSH map when one\ -| | ... | already exists. -| | ... -| | [Teardown] | Run Keywords -| | ... | Honeycomb clears NSH configuration | ${node} | AND -| | ... | Honeycomb removes VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if1} | AND -| | ... | Honeycomb removes VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if2} -| | ... -| | Given NSH map from Honeycomb should not exist | ${node} | map2 -| | And NSH entry from Honeycomb should be -| | ... | ${node} | entry1 | ${nsh_entry1_oper} -| | And VxLAN GPE Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vxlan_gpe_if1} -| | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1} -| | And Honeycomb creates VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if2} -| | ... | ${vxlan_gpe_base_settings2} | ${vxlan_gpe_settings2} -| | When Honeycomb adds NSH map | ${node} | map1 | ${nsh_map1} -| | And Honeycomb adds NSH map | ${node} | map2 | ${nsh_map2} -| | Then NSH map from Honeycomb should be -| | ... | ${node} | map1 | ${nsh_map1_oper} -| | And NSH map from Honeycomb should be -| | ... | ${node} | map2 | ${nsh_map2_oper} diff --git a/tests/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot deleted file mode 100644 index fb9e49e059..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot +++ /dev/null @@ -1,86 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables*** -| ${super_if}= | ${node['interfaces']['port1']['name']} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/provider_backbone_bridge.robot -| Variables | resources/test_data/honeycomb/pbb/pbb.py -| ... -| Documentation | *Honeycomb provider backbone bridge test suite.* -| ... -| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Force Tags | HC_FUNC - -*** Test Cases *** -# TODO: add verifications once operational data or VPP dump is available. -| TC01: Honeycomb sets PBB sub-interface -| | [Documentation] | Honeycomb creates a new PBB sub-interface. -| | ... -| | Honeycomb creates PBB sub-interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_1} - -| TC02: Honeycomb modifies existing PBB sub-interface -| | [Documentation] | Honeycomb modifies an existing PBB sub-interface. -| | ... -| | Honeycomb creates PBB sub-interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_1_mod} - -| TC03: Honeycomb deletes existing PBB sub-interface -| | [Documentation] | Honeycomb deletes an existing PBB sub-interface. -| | ... -| | Honeycomb removes PBB sub-interface -| | ... | ${node} | ${super_if} - -| TC04: Honeycomb fails to set wrong destination-address for new PBB sub-interface -| | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ -| | ... | wrong value of parameter destination-address, type yang:mac-address. -| | ... -| | Honeycomb fails to create PBB sub-interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_wrong_dst_addr} - -| TC05: Honeycomb fails to set wrong source-address for new PBB sub-interface -| | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ -| | ... | wrong value of parameter source-address, type yang:mac-address. -| | ... -| | Honeycomb fails to create PBB sub-interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_wrong_src_addr} - -| TC06: Honeycomb fails to set wrong b-vlan-tag-vlan-id for new PBB sub-interface -| | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ -| | ... | wrong value of parameter b-vlan-tag-vlan-id, type uint16, 12 bit\ -| | ... | range, range 1..4095. -| | ... -| | Honeycomb fails to create PBB sub-interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_wrong_vlan_tag} - -| TC07: Honeycomb fails to set wrong i-tag-isid for new PBB sub-interface -| | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ -| | ... | wrong value of parameter i-tag-isid, type uint32, 24 bit range,\ -| | ... | range 1..16777215. -| | ... -| | Honeycomb fails to create PBB sub-interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_wrong_i_tag} - -| TC08: Honeycomb fails to create new PBB sub-interface without vlan tag -| | [Documentation] | Honeycomb fails to create a new PBB sub-interface without\ -| | ... | parameter b-vlan-tag-vlan-id. -| | ... -| | Honeycomb fails to create PBB sub-interface | ${node} | ${super_if} -| | ... | ${cfg_pbb_sub_if_no_vlan_tag} diff --git a/tests/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot deleted file mode 100644 index d9a3933578..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot +++ /dev/null @@ -1,742 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -| &{if_settings}= | enabled=True -# Bridge domain settings -| ${bd_name}= | bd1 -| &{bd_settings}= | flood=${True} | forward=${True} | learn=${True} -| ... | unknown-unicast-flood=${True} | arp-termination=${False} -| &{bd_if_settings}= | split_horizon_group=${0} | bvi=${False} -# Names for AC lists -| ${acl_name_macip}= | macip -| ${acl_name_l3_ip4}= | acl_l3_ip4 -| ${acl_name_l3_ip6}= | acl_l3_ip6 -| ${acl_name_l4}= | acl_l4 -| ${acl_name_mixed}= | acl_mixed -| ${acl_name_icmp}= | acl_icmp -| ${acl_name_icmpv6}= | acl_icmpv6 -| ${acl_name_reflex}= | acl_reflex - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot -| Resource | resources/libraries/robot/honeycomb/access_control_lists.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/traffic.robot -| Library | resources.libraries.python.honeycomb.HcAPIKwACL.ACLKeywords -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPv4Setup -| Library | resources.libraries.python.IPv4Util -| Library | resources.libraries.python.IPv6Util -| Library | resources.libraries.python.Routing -| ... -| Test Setup | Clear Packet Trace on All DUTs | ${nodes} -| ... -| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Documentation | *Honeycomb access control lists test suite for ACL plugin.* -| ... -# Failing due to HC2VPP-173: cannot clean up ACLs in test teardown -| Force Tags | HC_FUNC | EXPECTED_FAILING - -*** Test Cases *** -| TC01: ACL MAC filtering through plugin-acl node - bridged -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ -| | ... | and configure L2 MAC ACL on ingress interface. -| | ... | [Ver] Send simple TCP packets from one TG interface to the other,\ -| | ... | using different MACs. Receive all packets except those with\ -| | ... | MACs in the filtered ranges. -| | ... -| | [Teardown] | Bridged ACL test teardown -| | ... -| | Given Setup Interfaces And Bridge Domain For plugin-acl Test -| | ... | macip | ${acl_name_macip} -| | When Honeycomb Creates ACL Chain Through ACL plugin -| | ... | ${dut_node} | ${acl_name_macip} | ${acl_settings} | macip=${True} -| | And Honeycomb Assigns plugin-acl Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_macip} -| | ... | ingress | macip=${True} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${classify_src} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${classify_src2} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} - -| TC02: ACL IPv4 filtering through plugin-acl node - bridged -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ -| | ... | and configure L3 IPv4 ACL on ingress interface with src/dst IP -| | ... | and protocol number. -| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ -| | ... | to the other, using different IPv4 IPs. Receive all packets except\ -| | ... | those with IPs in the filtered ranges and UDP protocol payload. -| | ... -| | [Teardown] | Bridged ACL test teardown -| | ... -| | Given Setup Interfaces And Bridge Domain For plugin-acl Test -| | ... | l3_ip4 | ${acl_name_l3_ip4} -| | When Honeycomb Creates ACL Chain Through ACL plugin -| | ... | ${dut_node} | ${acl_name_l3_ip4} | ${acl_settings} -| | And Honeycomb Assigns plugin-acl Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_l3_ip4} | ingress -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | UDP | ${src_port} | ${dst_port} -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${classify_src} | ${classify_dst} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${classify_src} | ${classify_dst} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | UDP | ${src_port} | ${dst_port} - -| TC03: ACL IPv6 filtering through plugin-acl node - bridged -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv6-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ -| | ... | and configure L3 IPv6 ACL on ingress interface with src/dst IP -| | ... | and protocol number. -| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ -| | ... | to the other, using different IPv6 IPs. Receive all packets except\ -| | ... | those with IPs in the filtered ranges and UDP protocol payload. -| | ... -| | [Teardown] | Bridged ACL test teardown -| | ... -| | Given Setup interfaces and bridge domain for plugin-acl test -| | ... | l3_ip6 | ${acl_name_l3_ip6} -| | When Honeycomb Creates ACL Chain Through ACL plugin -| | ... | ${dut_node} | ${acl_name_l3_ip6} | ${acl_settings} -| | And Honeycomb Assigns plugin-acl Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_l3_ip6} | ingress -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | UDP | ${src_port} | ${dst_port} -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${classify_src} | ${classify_dst} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${classify_src} | ${classify_dst} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | UDP | ${src_port} | ${dst_port} - -| TC04: ACL port filtering through plugin-acl node - bridged -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ -| | ... | and and configure L4 port ACL on ingress interface -| | ... | with src/dst port ranges. -| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ -| | ... | to the other, using different ports. Receive all packets except\ -| | ... | those with ports in the filtered ranges. -| | ... -| | [Teardown] | Bridged ACL test teardown -| | ... -| | Given Setup interfaces and bridge domain for plugin-acl test -| | ... | L4 | ${acl_name_l4} -| | When Honeycomb Creates ACL Chain Through ACL plugin -| | ... | ${dut_node} | ${acl_name_l4} | ${acl_settings} -| | And Honeycomb Assigns plugin-acl Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_l4} | ingress -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${classify_src} | ${classify_dst} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${classify_src+5} | ${classify_dst+5} - -| TC05: ACL filtering with IPv4 address and TCP port in one rule - bridged -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ -| | ... | and configure a mixed rule with src/dst IP, TCP protocol -| | ... | and port ranges. -| | ... | [Ver] Send simple TCP packets from one TG interface to the other,\ -| | ... | using IPs and ports. Receive all packets except those with\ -| | ... | both IPs and ports in the filtered ranges. -| | ... -| | [Teardown] | Bridged ACL test teardown -| | ... -| | Given Setup Interfaces And Bridge Domain For plugin-acl Test -| | ... | mixed | ${acl_name_mixed} -| | When Honeycomb Creates ACL Chain Through ACL plugin -| | ... | ${dut_node} | ${acl_name_mixed} | ${acl_settings} -| | And Honeycomb Assigns plugin-acl Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_mixed} | ingress -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${classify_src_ip} | ${classify_dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${classify_src_ip} | ${classify_dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${classify_src_port} | ${classify_dst_port} - -| TC06: ACL ICMP packet filtering - bridged -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-ICMP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ -| | ... | and configure a ICMP protocol filtering by ICMP type and code. -| | ... | [Ver] Send ICMP packets from one TG interface\ -| | ... | to the other, using different codes and types. Receive all packets\ -| | ... | except those with types and codes in the filtered ranges. -| | ... -| | [Teardown] | Bridged ACL test teardown -| | ... -| | Given Setup interfaces and bridge domain for plugin-acl test -| | ... | icmp | ${acl_name_icmp} -| | When Honeycomb Creates ACL Chain Through ACL plugin -| | ... | ${dut_node} | ${acl_name_icmp} | ${acl_settings} -| | And Honeycomb Assigns plugin-acl Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_icmp} | ingress -| | Then Send ICMP packet with type and code and verify received packet -| | ... | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | ${icmp_type} | ${icmp_code} -| | Then Send ICMP packet with type and code and verify received packet -| | ... | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | ${classify_type} | ${icmp_code} -| | And Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet with type and code and verify received packet -| | ... | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | ${classify_type} | ${classify_code} - -| TC07: ACL ICMPv6 packet filtering - bridged -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv6-ICMP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ -| | ... | and configure a ICMPv6 protocol filtering by ICMPv6 type and code. -| | ... | [Ver] Send ICMPv6 packets from one TG interface\ -| | ... | to the other, using different codes and types. Receive all packets\ -| | ... | except those with the filtered type and code. -| | ... -| | [Teardown] | Bridged ACL test teardown -| | ... -| | Given Setup interfaces and bridge domain for plugin-acl test -| | ... | icmpv6 | ${acl_name_icmpv6} -| | When Honeycomb Creates ACL Chain Through ACL plugin -| | ... | ${dut_node} | ${acl_name_icmpv6} | ${acl_settings} -| | And Honeycomb Assigns plugin-acl Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_icmpv6} | ingress -| | Then Send ICMP packet with type and code and verify received packet -| | ... | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | ${icmp_type} | ${icmp_code} -| | Then Send ICMP packet with type and code and verify received packet -| | ... | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | ${classify_type} | ${icmp_code} -| | And Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet with type and code and verify received packet -| | ... | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | ${classify_type} | ${classify_code} - -| TC08: ACL reflexive IPv4 filtering through plugin-acl node - bridged -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG,\ -| | ... | configure a "drop all" ACL on ingress and reflexive ACL on egress. -| | ... | [Ver] Send a simple TCP packet to VPP interface 1 and do not receive\ -| | ... | it back. Then send the packet with reversed src/dst IP address\ -| | ... | to VPP interface 2 and receive it from interface 1(this should create\ -| | ... | a reflexive "permit" rule) Finally, send the original packet again\ -| | ... | and receive it from interface 2. -| | ... -| | [Teardown] | Bridged ACL test teardown -| | ... -| | Given Setup Interfaces And Bridge Domain For plugin-acl Test -| | ... | reflex | ${acl_name_reflex} -| | When Honeycomb Creates ACL Chain Through ACL plugin -| | ... | ${dut_node} | ${acl_name_reflex} | ${acl_settings} -| | And Honeycomb Assigns plugin-acl Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_reflex} | egress -| | And Import Variables | resources/test_data/honeycomb/plugin_acl.py -| | ... | block_all | block_all -| | When Honeycomb Creates ACL Chain Through ACL plugin -| | ... | ${dut_node} | block_all | ${acl_settings} -| | And Honeycomb Assigns plugin-acl Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | block_all | ingress -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${classify_src} | ${classify_dst} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${classify_dst} | ${classify_src} -| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if2_mac} -| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if2_mac} -| | ... | TCP | ${dst_port} | ${src_port} -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${classify_src} | ${classify_dst} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} - -# Routing section -# =============== - -| TC09: ACL IPv4 filtering through plugin-acl node - routed -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv4 addresses on both\ -| | ... | interfaces to TG, add ARP entry and routes, and configure L3 IPv4 ACL\ -| | ... | on ingress interface with src/dst IP and protocol. -| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ -| | ... | to the other, using different IPv4 IPs. Receive all packets except\ -| | ... | those with IPs in the filtered ranges and UDP protocol payload. -| | ... -| | [Teardown] | Routed ACL test teardown - ipv4 -| | ... -| | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test -| | ... | l3_ip4 | ${acl_name_l3_ip4} -| | When Honeycomb Creates ACL Chain Through ACL plugin -| | ... | ${dut_node} | ${acl_name_l3_ip4} | ${acl_settings} -| | And Honeycomb Assigns plugin-acl Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_l3_ip4} | ingress -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | UDP | ${src_port} | ${dst_port} -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${classify_src} | ${classify_dst} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${classify_src} | ${classify_dst} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | UDP | ${src_port} | ${dst_port} - -| TC10: ACL IPv6 filtering through plugin-acl node - routed -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv6-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv6 addresses on both\ -| | ... | interfaces to TG, add IP neighbor entry and routes, and configure\ -| | ... | L3 IPv6 ACL on ingress interface with src/dst IP and next-header. -| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ -| | ... | to the other, using different IPv6 IPs. Receive all packets except\ -| | ... | those with IPs in the filtered ranges and UDP protocol payload. -| | ... -| | [Teardown] | Routed ACL test teardown - ipv6 -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Import Variables | resources/test_data/honeycomb/plugin_acl.py -| | ... | L3_IP6 | ${acl_name_l3_ip6} -| | And Honeycomb configures interface state -| | ... | ${dut_node} | ${dut_to_tg_if1} | up -| | And Honeycomb configures interface state -| | ... | ${dut_node} | ${dut_to_tg_if2} | up -| | And Honeycomb sets interface IPv6 address | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} -| | And Honeycomb sets interface IPv6 address | ${dut_node} -| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} -| | And VPP RA suppress link layer | ${dut_node} | ${dut_to_tg_if2} -| | And Honeycomb adds interface IPv6 neighbor -| | ... | ${node} | ${dut_to_tg_if2} | ${gateway} | ${tg_to_dut_if2_mac} -| | And VPP Route Add | ${node} | ${dst_net} | ${prefix_length} -| | ... | ${gateway} | interface=${dut_to_tg_if2} | use_sw_index=False -| | And VPP Route Add | ${node} | ${classify_dst_net} | ${prefix_length} -| | ... | ${gateway} | interface=${dut_to_tg_if2} | use_sw_index=False -| | When Honeycomb Creates ACL Chain Through ACL plugin -| | ... | ${dut_node} | ${acl_name_l3_ip6} | ${acl_settings} -| | And Honeycomb Assigns plugin-acl Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_l3_ip6} | ingress -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | UDP | ${src_port} | ${dst_port} -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${classify_src} | ${classify_dst} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${classify_src} | ${classify_dst} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | UDP | ${src_port} | ${dst_port} - -| TC11: ACL port filtering through plugin-acl node - routed -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv4 addresses on both\ -| | ... | interfaces to TG, add ARP entry and routes, and configure L4 port ACL\ -| | ... | on ingress interface with src/dst port ranges. -| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ -| | ... | to the other, using different ports. Receive all packets except\ -| | ... | those with ports in the filtered ranges. -| | ... -| | [Teardown] | Routed ACL test teardown - ipv4 -| | ... -| | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test -| | ... | L4 | ${acl_name_l4} -| | When Honeycomb Creates ACL Chain Through ACL plugin -| | ... | ${dut_node} | ${acl_name_l4} | ${acl_settings} -| | And Honeycomb Assigns plugin-acl Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_l4} | ingress -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${classify_src} | ${classify_dst} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${classify_src+5} | ${classify_dst+5} - -| TC12: ACL filtering with IPv4 address and TCP port in one rule - routed -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv4 addresses on both\ -| | ... | interfaces to TG, add ARP entry and routes and configure a mixed -| | ... | rule with src/dst IP, TCP protocol and port ranges. -| | ... | [Ver] Send simple TCP packets from one TG interface to the other,\ -| | ... | using IPs and ports. Receive all packets except those with\ -| | ... | both IPs and ports in the filtered ranges. -| | ... -| | [Teardown] | Routed ACL test teardown - ipv4 -| | ... -| | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test -| | ... | mixed | ${acl_name_mixed} -| | When Honeycomb Creates ACL Chain Through ACL plugin -| | ... | ${dut_node} | ${acl_name_mixed} | ${acl_settings} -| | And Honeycomb Assigns plugin-acl Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_mixed} | ingress -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${classify_src_ip} | ${classify_dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${classify_src_ip} | ${classify_dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dst_mac} -| | ... | TCP | ${classify_src_port} | ${classify_dst_port} - -| TC13: ACL ICMP packet filtering - routed -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv4 addresses on both\ -| | ... | interfaces to TG, add ARP entry and routes, and configure ICMP ACL\ -| | ... | on ingress interface with ICMP type and code. -| | ... | [Ver] Send ICMP packets from one TG interface\ -| | ... | to the other, using different codes and types. Receive all packets\ -| | ... | except those with the filtered type and code. -| | ... -| | [Teardown] | Routed ACL test teardown - ipv4 -| | ... -| | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test -| | ... | icmp | ${acl_name_icmp} -| | When Honeycomb Creates ACL Chain Through ACL plugin -| | ... | ${dut_node} | ${acl_name_icmp} | ${acl_settings} -| | And Honeycomb Assigns plugin-acl Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_icmp} | ingress -| | Then Send ICMP packet with type and code and verify received packet -| | ... | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | ${icmp_type} | ${icmp_code} -| | Then Send ICMP packet with type and code and verify received packet -| | ... | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | ${classify_type} | ${icmp_code} -| | And Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet with type and code and verify received packet -| | ... | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | ${classify_type} | ${classify_code} - -| TC14: ACL ICMPv6 packet filtering - routed -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv6 addresses on both\ -| | ... | interfaces to TG, add ARP entry and routes, and configure ICMP ACL\ -| | ... | on ingress interface with ICMPv6 type and code. -| | ... | [Ver] Send ICMPv6 packets from one TG interface\ -| | ... | to the other, using different codes and types. Receive all packets\ -| | ... | except those with the filtered type and code. -| | ... -| | [Teardown] | Routed ACL test teardown - ipv6 -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Import Variables | resources/test_data/honeycomb/plugin_acl.py -| | ... | icmpv6 | ${acl_name_icmpv6} -| | And Honeycomb configures interface state -| | ... | ${dut_node} | ${dut_to_tg_if1} | up -| | And Honeycomb configures interface state -| | ... | ${dut_node} | ${dut_to_tg_if2} | up -| | And Honeycomb sets interface IPv6 address | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} -| | And Honeycomb sets interface IPv6 address | ${dut_node} -| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} -| | And Honeycomb adds interface IPv6 neighbor -| | ... | ${node} | ${dut_to_tg_if2} | ${gateway} | ${tg_to_dut_if2_mac} -| | And VPP RA suppress link layer | ${dut_node} | ${dut_to_tg_if2} -| | And VPP Route Add | ${node} | ${dst_net} | ${prefix_length} -| | ... | ${gateway} | interface=${dut_to_tg_if2} | use_sw_index=False -| | And VPP Route Add | ${node} | ${classify_dst_net} | ${prefix_length} -| | ... | ${gateway} | interface=${dut_to_tg_if2} | use_sw_index=False -| | When Honeycomb Creates ACL Chain Through ACL plugin -| | ... | ${dut_node} | ${acl_name_icmpv6} | ${acl_settings} -| | And Honeycomb Assigns plugin-acl Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_icmpv6} | ingress -| | Then Send ICMP packet with type and code and verify received packet -| | ... | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | ${icmp_type} | ${icmp_code} -| | Then Send ICMP packet with type and code and verify received packet -| | ... | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | ${classify_type} | ${icmp_code} -| | And Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet with type and code and verify received packet -| | ... | ${tg_node} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | ${classify_type} | ${classify_code} - -| TC15: ACL reflexive IPv4 filtering through plugin-acl node - routed -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-TCP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv4 addresses on both\ -| | ... | interfaces to TG, add ARP entries and routes,\ -| | ... | configure a "drop all" ACL on ingress and reflexive ACL on egress. -| | ... | [Ver] Send a simple TCP packet to VPP interface 1 and do not receive\ -| | ... | it back. Then send the packet with reversed src/dst IP address\ -| | ... | to VPP interface 2 and receive it from interface 1(this should create\ -| | ... | a reflexive "permit" rule) Finally, send the original packet again\ -| | ... | and receive it from interface 2. -| | ... -| | [Teardown] | Routed ACL test teardown - ipv4 -| | ... -| | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test -| | ... | reflex | ${acl_name_reflex} -| | And Add ARP on DUT -| | ... | ${node} | ${dut_to_tg_if1} | ${gateway2} | ${tg_to_dut_if1_mac} -| | And VPP Route Add -| | ... | ${node} | ${src_net} | ${prefix_length} | ${gateway2} -| | ... | interface=${dut_to_tg_if1} | use_sw_index=False -| | And VPP Route Add -| | ... | ${node} | ${classify_src_net} | ${prefix_length} | ${gateway2} -| | ... | interface=${dut_to_tg_if1} | use_sw_index=False -| | When Honeycomb Creates ACL Chain Through ACL plugin -| | ... | ${dut_node} | ${acl_name_reflex} | ${acl_settings} -| | And Honeycomb Assigns plugin-acl Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_reflex} | egress -| | And Import Variables | resources/test_data/honeycomb/plugin_acl.py -| | ... | block_all | block_all -| | When Honeycomb Creates ACL Chain Through ACL plugin -| | ... | ${dut_node} | block_all | ${acl_settings} -| | And Honeycomb Assigns plugin-acl Chain To Interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | block_all | ingress -| | And Run Keyword And Expect Error | TCP/UDP Rx timeout -| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${classify_src} | ${classify_dst} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${classify_dst} | ${classify_src} -| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if2_mac} -| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if2_mac} -| | ... | TCP | ${dst_port} | ${src_port} -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${classify_src} | ${classify_dst} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | TCP | ${src_port} | ${dst_port} - -*** Keywords *** -| Setup interface IPs and routes for IPv4 plugin-acl test -| | [Documentation] | Import test variables, set interfaces up, -| | ... | configure IPv4 addresses, add neighbor entry and routes. -| | ... -| | [Arguments] | ${test_data_id} | ${acl_name} -| | ... -| | Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | Import Variables | resources/test_data/honeycomb/plugin_acl.py -| | ... | ${test_data_id} | ${acl_name} -| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up -| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up -| | Honeycomb sets interface IPv4 address with prefix | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} -| | Honeycomb sets interface IPv4 address with prefix | ${dut_node} -| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} -| | And Honeycomb adds interface IPv4 neighbor -| | ... | ${node} | ${dut_to_tg_if2} | ${gateway} | ${tg_to_dut_if2_mac} -| | VPP Route Add -| | ... | ${node} | ${dst_net} | ${prefix_length} | ${gateway} -| | ... | interface=${dut_to_tg_if2} | use_sw_index=False -| | VPP Route Add -| | ... | ${node} | ${classify_dst_net} | ${prefix_length} | ${gateway} -| | ... | interface=${dut_to_tg_if2} | use_sw_index=False - -| Setup interfaces and bridge domain for plugin-acl test -| | [Documentation] | Import test variables, set interfaces up and bridge them. -| | ... -| | [Arguments] | ${test_data_id} | ${acl_name} -| | ... -| | Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | Import Variables | resources/test_data/honeycomb/plugin_acl.py -| | ... | ${test_data_id} | ${acl_name} -| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up -| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up -| | Honeycomb Creates first L2 Bridge Domain -| | ... | ${dut_node} | ${bd_name} | ${bd_settings} -| | Honeycomb Adds Interfaces To Bridge Domain -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} -| | ... | ${bd_name} | ${bd_if_settings} - -| Bridged ACL test teardown -| | [Documentation] | Log packet trace and ACL settings, -| | ... | then clean up bridge domains. -| | ... -| | Show Packet Trace on All DUTs | ${nodes} -| | Read plugin-ACL configuration from VAT | ${node} -| | Clear plugin-ACL configuration | ${node} | ${dut_to_tg_if1} -| | Honeycomb Removes All Bridge Domains -| | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} - -| Routed ACL test teardown - ipv4 -| | [Documentation] | Log packet trace and ACL settings, -| | ... | then clean up IPv4 addresses and neighbors. -| | ... -| | Show Packet Trace on All DUTs | ${nodes} -| | Read plugin-ACL configuration from VAT | ${node} -| | Clear plugin-ACL configuration | ${node} | ${dut_to_tg_if1} -| | Honeycomb removes interface IPv4 addresses | ${node} | ${dut_to_tg_if1} -| | Honeycomb clears all interface IPv4 neighbors | ${node} | ${dut_to_tg_if1} - -| Routed ACL test teardown - ipv6 -| | [Documentation] | Log packet trace and ACL settings, -| | ... | then clean up IPv6 addresses and neighbors. -| | ... -| | Show Packet Trace on All DUTs | ${nodes} -| | Clear plugin-ACL configuration | ${node} | ${dut_to_tg_if1} -| | Read plugin-ACL configuration from VAT | ${node} -| | Honeycomb removes interface IPv6 addresses | ${node} | ${dut_to_tg_if1} -| | Honeycomb clears all interface IPv6 neighbors | ${node} | ${dut_to_tg_if1} diff --git a/tests/func/honeycomb/mgmt-cfg-policer-apihc-func.robot b/tests/func/honeycomb/mgmt-cfg-policer-apihc-func.robot deleted file mode 100644 index 7afffad4d8..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-policer-apihc-func.robot +++ /dev/null @@ -1,144 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -| ${interface}= | ${node['interfaces']['port1']['name']} -| ${tg_to_dut_if1_ip}= | 192.168.122.1 -| ${dut_to_tg_if1_ip}= | 192.168.122.2 -| ${dut_to_tg_if2_ip}= | 192.168.123.1 -| ${tg_to_dut_if2_ip}= | 192.168.123.2 -| ${prefix_length}= | ${24} -| ${dscp_number}= | ${20} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/policer.robot -| Resource | resources/libraries/robot/honeycomb/access_control_lists.robot -| Resource | resources/libraries/robot/testing_path.robot -| Library | resources.libraries.python.Trace -| Variables | resources/test_data/honeycomb/policer_variables.py -| ... -| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Force Tags | HC_FUNC -| ... -| Documentation | *Honeycomb Policer management test suite.* - -*** Test Cases *** -| TC01: Honeycomb can configure Policer -| | [Documentation] | Checks if Honeycomb can configure Policer. -| | ... -| | Given Policer Operational Data From Honeycomb Should Be empty | ${node} -| | When Honeycomb configures Policer | ${node} | ${policer_data} -| | Then Policer Operational Data From Honeycomb Should Be | ${node} -| | ... | ${policer_data_oper} - -| TC02: Honeycomb can disable Policer -| | [Documentation] | Checks if Honeycomb can disable Policer. -| | ... -| | Given Policer Operational Data From Honeycomb Should Be | ${node} -| | ... | ${policer_data_oper} -| | When Honeycomb removes Policer configuration | ${node} -| | Then Policer Operational Data From Honeycomb Should Be empty | ${node} - -| TC03: Honeycomb can configure Policer with increased values of CIR (900kbps) -| | [Documentation] | Checks if Honeycomb can configure Policer\ -| | ... | with increased values of CIR. -| | ... -| | [Teardown] | Tear down policer test | ${node} -| | ... -| | Given Policer Operational Data From Honeycomb Should Be empty | ${node} -| | When Honeycomb configures Policer | ${node} | ${policer_data_2} -| | Then Policer Operational Data From Honeycomb Should Be | ${node} -| | ... | ${policer_data_oper_2} - -| TC04: Honeycomb can configure Packets-Per-Second Based Policer -| | [Documentation] | Checks if Honeycomb can configure Policer\ -| | ... | based on rate-type measured in pps. -| | ... -| | [Teardown] | Tear down policer test | ${node} -| | ... -| | Given Policer Operational Data From Honeycomb Should Be empty | ${node} -| | When Honeycomb configures Policer | ${node} | ${policer_data_3} -| | Then Policer Operational Data From Honeycomb Should Be | ${node} -| | ... | ${policer_data_oper_3} - -| TC05: Configure Policer on Interface -| | [Documentation] | Honeycomb can configure Policer on a given interface. -| | ... -| | [Teardown] | Run Keywords -| | ... | Honeycomb disables Policer on interface | ${node} | ${interface} | AND -| | ... | Honeycomb removes ACL session | ${node} -| | ... | ${acl_tables['hc_acl_table']['name']} -| | ... | ${acl_tables['hc_acl_session']['match']} | AND -| | ... | Honeycomb removes ACL table | ${node} -| | ... | ${acl_tables['hc_acl_table']['name']} | AND -| | ... | Tear down policer test | ${node} -| | ... -| | Given Honeycomb configures Policer | ${node} | ${policer_data} -| | And ACL table from Honeycomb should not exist -| | ... | ${node} | ${acl_tables['hc_acl_table']['name']} -| | When Honeycomb creates ACL table -| | ... | ${node} | ${acl_tables['hc_acl_table']} -| | And Honeycomb adds ACL session -| | ... | ${node} | ${acl_tables['hc_acl_table']['name']} -| | ... | ${acl_tables['hc_acl_session']} -| | Then Honeycomb enables policer on interface -| | ... | ${node} | ${interface} | ${acl_tables['hc_acl_table']['name']} - -| TC06: VPP policer 2R3C Color-aware marks packet -# Pending rework -| | [Tags] | EXPECTED_FAILING -| | [Documentation] -| | ... | [Top] TG=DUT1. -| | ... | [Ref] RFC2474, RFC2698. -| | ... | [Cfg] Configure 2R3C color-aware policer on DUT1 on the first\ -| | ... | interface. -| | ... | [Ver] TG sends IPv4 TCP packet on the first link to DUT1.\ -| | ... | Packet on DUT1 is marked with DSCP tag. Verifies if DUT1 sends\ -| | ... | correct IPv4 TCP packet with correct DSCP on the second link to TG. -| | ... -| | [Teardown] | Show Packet Trace on All DUTs | ${nodes} -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Honeycomb configures Policer | ${dut_node} | ${policer_data_3} -| | And ACL table from Honeycomb should not exist -| | ... | ${dut_node} | ${acl_tables['hc_acl_table']['name']} -| | When Honeycomb creates ACL table -| | ... | ${dut_node} | ${acl_tables['hc_acl_table']} -| | And Honeycomb adds ACL session -| | ... | ${dut_node} | ${acl_tables['hc_acl_table']['name']} -| | ... | ${acl_tables['hc_acl_session']} -| | And Honeycomb enables policer on interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_tables['hc_acl_table']['name']} -| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} -| | ... | up -| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} -| | ... | up -| | And Honeycomb sets interface IPv4 address with prefix | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} -| | And Honeycomb sets interface IPv4 address with prefix | ${dut_node} -| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} -| | And Honeycomb adds interface IPv4 neighbor -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${tg_to_dut_if2_ip} -| | ... | ${tg_to_dut_if2_mac} -| | And VPP Node Interfaces Ready Wait | ${dut_node} -| | Then Honeycomb Send packet and verify marking | ${tg_node} -| | ... | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} -| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if2_ip} | ${dscp_number} diff --git a/tests/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot b/tests/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot deleted file mode 100644 index 5e162a3e4e..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot +++ /dev/null @@ -1,89 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -# Interface to run tests on. -| ${interface}= | ${node['interfaces']['port1']['name']} -| &{proxyarp_settings_ipv4}= | vrf-id=${0} -| ... | low-addr=192.168.1.2 | high-addr=192.168.1.10 -| ${tg_to_dut_ip}= | 10.0.0.100 -| ${dut_to_tg_ip}= | 10.0.0.1 -| ${prefix_length}= | ${24} -| ${test_ip}= | 192.168.1.5 - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/proxyarp.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/traffic.robot -| Library | resources.libraries.python.Trace -| ... -| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Force Tags | HC_FUNC -| ... -| Documentation | *Honeycomb proxyARP management test suite.* - -*** Test Cases *** -# TODO: Add operational data and VAT dump verification if/when avaliable -| TC01: Honeycomb can configure ipv4 proxyARP -| | [Documentation] | Check if Honeycomb can configure the proxyARP feature. -| | ... -| | [Teardown] | Honeycomb removes proxyARP configuration | ${node} -| | ... -| | Honeycomb configures proxyARP | ${node} | ${proxyarp_settings_ipv4} - -| TC02: Honeycomb can enable proxyarp on an interface -| | [Documentation] | Check if Honeycomb can enable the proxyARP feature\ -| | ... | on an interface. -| | ... -| | [Teardown] | Honeycomb disables proxyARP on interface -| | ... | ${node} | ${interface} -| | ... -| | Honeycomb enables proxyARP on interface | ${node} | ${interface} - -| TC03: DUT sends ARP reply on behalf of another machine from the IP range -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC1027. -| | ... | [Cfg] On DUT1 configure interface IPv4 address and proxy ARP -| | ... | for IP range, using Honeycomb API. -| | ... | [Ver] Make TG send ARP request to DUT1 interface, -| | ... | verify if DUT1 sends correct ARP reply on behalf of machine whose -| | ... | IP is in the configured range. -| | ... -| | [Teardown] | Run Keywords -| | ... | Show Packet Trace on all DUTs | ${nodes} -| | ... | AND | Honeycomb removes proxyARP configuration | ${node} -| | ... | AND | Honeycomb configures interface state -| | ... | ${dut_node} | ${dut_to_tg_if1} | down -| | ... | AND | Honeycomb removes interface IPv4 addresses -| | ... | ${node} | ${interface} -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | ${dut_to_tg_name}= | Get interface name | ${dut_node} | ${dut_to_tg_if1} -| | ${tg_to_dut_name}= | Get interface name | ${tg_node} | ${tg_to_dut_if1} -| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up -| | And Honeycomb sets interface IPv4 address with prefix | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${dut_to_tg_ip} | ${prefix_length} -| | When Honeycomb configures proxyARP | ${dut_node} | ${proxyarp_settings_ipv4} -| | And Honeycomb enables proxyARP on interface | ${node} | ${dut_to_tg_name} -| | Then Send ARP Request | ${tg_node} | ${tg_to_dut_name} -| | ... | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} -| | ... | ${tg_to_dut_ip} | ${test_ip} diff --git a/tests/func/honeycomb/mgmt-cfg-proxynd6-apihc-func.robot b/tests/func/honeycomb/mgmt-cfg-proxynd6-apihc-func.robot deleted file mode 100644 index 6b69f5b170..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-proxynd6-apihc-func.robot +++ /dev/null @@ -1,117 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -# Interface to run configuration tests on. -| ${interface}= | ${node['interfaces']['port1']['name']} -# IPv6 addresses to configure on DUT. -| ${dut_to_tg_if1_ip}= | 10::1 -| ${dut_to_tg_if2_ip}= | 11::1 -# IPv6 addresses used for TG interfaces. -| ${test_src_ip}= | 10::2 -| ${test_dst_ip}= | 11::2 -| ${test_dst_ip2}= | 11::3 -# IPv6 subnet prefix length -| ${prefix_length}= | 64 - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/proxyarp.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/dhcp_proxy.robot -| Library | resources.libraries.python.Trace -| ... -| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Force Tags | HC_FUNC -| ... -| Documentation | *Honeycomb IPv6 neighbor discovery proxy test suite.* - -*** Test Cases *** -| TC01: Honeycomb can configure IPv6 ND proxy on an interface -| | [Documentation] | Check if Honeycomb can configure the IPv6 ND proxy\ -| | ... | feature on an interface. -| | ... -| | Given IPv6 ND proxy from Honeycomb should be empty | ${node} | ${interface} -| | And Honeycomb configures interface state | ${node} | ${interface} | up -| | When Honeycomb configures IPv6 ND proxy on interface -| | ... | ${node} | ${interface} | ${test_dst_ip} -| | Then IPv6 ND proxy from Honeycomb should be -| | ... | ${node} | ${interface} | ${test_dst_ip} - -| TC02: Honeycomb can disable IPv6 ND proxy on an interface -| | [Documentation] | Check if Honeycomb can remove IPv6 ND proxy feature\ -| | ... | configuration from an interface. -| | ... -| | Given IPv6 ND proxy from Honeycomb should be -| | ... | ${node} | ${interface} | ${test_dst_ip} -| | When Honeycomb disables IPv6 ND proxy on interface | ${node} | ${interface} -| | Then IPv6 ND proxy from Honeycomb should be empty | ${node} | ${interface} - -| TC03: Honeycomb can configure multiple IPv6 ND proxies on an interface -| | [Documentation] | Check if Honeycomb can configure two ND proxies\ -| | ... | on one interface. -| | ... -| | [Teardown] | Honeycomb disables IPv6 ND proxy on interface -| | ... | ${node} | ${interface} -| | ... -| | Given IPv6 ND proxy from Honeycomb should be empty | ${node} | ${interface} -| | And Honeycomb configures interface state | ${node} | ${interface} | up -| | When Honeycomb configures IPv6 ND proxy on interface -| | ... | ${node} | ${interface} | ${test_dst_ip} | ${test_dst_ip2} -| | Then IPv6 ND proxy from Honeycomb should be -| | ... | ${node} | ${interface} | ${test_dst_ip} | ${test_dst_ip2} - -| TC04: VPP proxies valid ICMPv6 Neighbor Discovery request -| | [Documentation] | -| | ... | [Top] TG=DUT -| | ... | [Cfg] On DUT configure IPv6 addresses and neighbors, supress router\ -| | ... | advertisement and configure IPv6 Neighbor Discovery proxy. -| | ... | [Ver] Make TG send a neighbor solicitation packet to it's other\ -| | ... | interface through DUT, verify DUT responds to the packet instead\ -| | ... | of forwarding it. Then exchange ICMPv6 Echo request/reply to verify\ -| | ... | connectivity between interfaces. -| | ... | [Ref] RFC 4389 -| | ... -| | [Teardown] | Run Keywords -| | ... | Show Packet Trace on All DUTs | ${nodes} | AND -| | ... | Honeycomb disables IPv6 ND proxy on interface -| | ... | ${dut_node} | ${dut_to_tg_if2} -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up -| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up -| | Honeycomb sets interface IPv6 address | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} -| | Honeycomb sets interface IPv6 address | ${dut_node} -| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} -| | And Vpp Ra Suppress Link Layer | ${dut_node} | ${dut_to_tg_if1} -| | And Vpp Ra Suppress Link Layer | ${dut_node} | ${dut_to_tg_if2} -| | And Honeycomb adds interface IPv6 neighbor | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${test_src_ip} | ${tg_to_dut_if1_mac} -| | And Honeycomb adds interface IPv6 neighbor | ${dut_node} | ${dut_to_tg_if2} -| | ... | ${test_dst_ip} | ${tg_to_dut_if2_mac} -| | When Honeycomb configures IPv6 ND proxy on interface -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${test_dst_ip} -| | Then Verify IPv6ND proxy | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2} -| | ... | ${test_src_ip} | ${test_dst_ip} -| | ... | ${tg_to_dut_if1_mac} | ${tg_to_dut_if2_mac} -| | ... | ${dut_to_tg_if1_mac} | ${dut_to_tg_if2_mac} diff --git a/tests/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot deleted file mode 100644 index acf203b796..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot +++ /dev/null @@ -1,231 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.honeycomb.Routing.RoutingKeywords -| Library | resources.libraries.python.Trace.Trace -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/routing.robot -| ... -| Test Setup | Clear Packet Trace on All DUTs | ${nodes} -| ... -| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Test Teardown | Honeycomb routing test teardown | ${node} | ${table} -| ... -| Documentation | *Honeycomb routing test suite.* -| ... -| Force Tags | HC_FUNC - -*** Test Cases *** -| TC01: Single hop IPv4 route -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-ICMP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 add ARP entries to both TG\ -| | ... | interfaces and configure route with TG-if2 as next-hop. -| | ... | [Ver] Send ICMP packet from first TG interface to configured route -| | ... | destination. Receive packet on the second TG interface. -| | ... -| | ${table}= | Set Variable | table1 -| | Given Setup interfaces and neighbors for IPv4 routing test -| | When Honeycomb configures routing table -| | ... | ${node} | table1 | ipv4 | ${table1} | ${1} -| | Then Routing data from Honeycomb should contain -| | ... | ${node} | table1 | ipv4 | ${table1_oper} -| | And Verify route IPv4 | ${nodes['TG']} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} - -| TC02: Multi hop IPv4 route -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-ICMP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 add ARP entries to both TG\ -| | ... | interfaces and configure two routes through the second DUT interface. -| | ... | [Ver] Send 100 ICMP packets from first TG interface to configured -| | ... | route destination. Receive all packets on the second TG interface and\ -| | ... | verify that each destination MAC was used by exactly 50 packets. -| | ... | Receive packet on the second TG interface. -| | ... -| | ${table}= | Set Variable | table2 -| | Given Setup interfaces and neighbors for IPv4 routing test -| | And Honeycomb adds interface IPv4 neighbor | ${dut_node} | ${dut_to_tg_if2} -| | ... | ${next_hop1} | ${next_hop_mac1} -| | And Honeycomb adds interface IPv4 neighbor | ${dut_node} | ${dut_to_tg_if2} -| | ... | ${next_hop2} | ${next_hop_mac2} -| | When Honeycomb configures routing table -| | ... | ${node} | table2 | ipv4 | ${table2} | ${1} -| | Then Routing data from Honeycomb should contain -| | ... | ${node} | table2 | ipv4 | ${table2_oper} -| | And Verify multipath Route | ${nodes['TG']} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | ${dut_to_tg_if2_mac} | ${next_hop_mac1} | ${next_hop_mac2} - -| TC03: Special hop - blackhole IPv4 route -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv4-ICMP. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 add ARP entries to both TG\ -| | ... | interfaces and configure route with special rule blackhole. -| | ... | [Ver] Send ICMP packet from first TG interface to configured route -| | ... | destination. Make sure no packet is received on the second TG\ -| | ... | interface. -| | ... -| | ${table}= | Set Variable | table3 -| | Given Setup interfaces and neighbors for IPv4 routing test -| | When Honeycomb configures routing table -| | ... | ${node} | table3 | ipv4 | ${table3} | ${1} | special=${TRUE} -| | Then Routing data from Honeycomb should contain -| | ... | ${node} | table3 | ipv4 | ${table3_oper} -| | And Run keyword and Expect Error | ICMP echo Rx timeout -| | ... | Verify route IPv4 | ${nodes['TG']} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} - -| TC04: Single hop IPv6 route -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv6-ICMPv6. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 add ARP entries to both TG\ -| | ... | interfaces and configure route with TG-if2 as next-hop. -| | ... | [Ver] Send ICMP packet from first TG interface to configured route -| | ... | destination. Receive packet on the second TG interface. -| | ... -| | ${table}= | Set Variable | table4 -| | Given Setup interfaces and neighbors for IPv6 routing test -| | When Honeycomb configures routing table -| | ... | ${node} | table4 | ipv6 | ${table4} | ${1} -| | Then Routing data from Honeycomb should contain -| | ... | ${node} | table4 | ipv6 | ${table4_oper} -| | And Verify route IPv6 | ${nodes['TG']} -| | ... | ${src_ip} | ${next_hop} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} - -| TC05: Multi hop IPv6 route -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv6-ICMPv6. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 add ARP entries to both TG\ -| | ... | interfaces and configure two routes through the second DUT interface. -| | ... | [Ver] Send 100 ICMP packets from first TG interface to configured -| | ... | route destination. Receive all packets on the second TG interface and\ -| | ... | verify that each destination MAC was used by exactly 50 packets. -| | ... | Receive packet on the second TG interface. -| | ... -| | ${table}= | Set Variable | table5 -| | Given Setup interfaces and neighbors for IPv6 routing test -| | And Honeycomb adds interface IPv6 neighbor | ${dut_node} | ${dut_to_tg_if2} -| | ... | ${next_hop1} | ${next_hop_mac1} -| | And Honeycomb adds interface IPv6 neighbor | ${dut_node} | ${dut_to_tg_if2} -| | ... | ${next_hop2} | ${next_hop_mac2} -| | When Honeycomb configures routing table -| | ... | ${node} | table5 | ipv6 | ${table5} | ${1} -| | Then Routing data from Honeycomb should contain -| | ... | ${node} | table5 | ipv6 | ${table5_oper} -| | And Verify multipath Route | ${nodes['TG']} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} -| | ... | ${dut_to_tg_if2_mac} | ${next_hop_mac1} | ${next_hop_mac2} - -| TC06: Special hop - blackhole IPv6 route -| | [Documentation] -| | ... | [Top] TG=DUT1=TG. -| | ... | [Enc] Eth-IPv6-ICMPv6. -| | ... | [Cfg] (Using Honeycomb API) On DUT1 add ARP entries to both TG\ -| | ... | interfaces and configure route with special rule blackhole. -| | ... | [Ver] Send ICMP packet from first TG interface to configured route -| | ... | destination. Make sure no packet is received on the second TG\ -| | ... | interface. -| | ... -| | ${table}= | Set Variable | table6 -| | Given Setup interfaces and neighbors for IPv6 routing test -| | When Honeycomb configures routing table -| | ... | ${node} | table6 | ipv6 | ${table6} | ${1} | special=${TRUE} -| | Then Routing data from Honeycomb should contain -| | ... | ${node} | table6 | ipv6 | ${table6_oper} -| | And Run keyword and Expect Error | ICMP echo Rx timeout -| | ... | Verify route IPv6 | ${nodes['TG']} -| | ... | ${src_ip} | ${dst_ip} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} - -*** Keywords *** -| Setup interfaces and neighbors for IPv4 routing test -| | Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | Import Variables | resources/test_data/honeycomb/routing.py -| | ... | ${nodes['DUT1']} | ipv4 | ${dut_to_tg_if2} -| | Setup vrf IDs | ${dut_node} | ${dut_to_tg_if1} | ${1} -| | Setup vrf IDs | ${dut_node} | ${dut_to_tg_if2} | ${1} -| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up -| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up -| | Honeycomb sets interface IPv4 address with prefix | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_len} -| | Honeycomb sets interface IPv4 address with prefix | ${dut_node} -| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_len} -| | Honeycomb adds interface IPv4 neighbor | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${src_ip} | ${tg_to_dut_if1_mac} -| | Honeycomb adds interface IPv4 neighbor | ${dut_node} | ${dut_to_tg_if2} -| | ... | ${next_hop} | ${tg_to_dut_if2_mac} - -| Setup interfaces and neighbors for IPv6 routing test -| | Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | Import Variables | resources/test_data/honeycomb/routing.py -| | ... | ${nodes['DUT1']} | ipv6 | ${dut_to_tg_if2} -| | Honeycomb sets interface VRF ID -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${1} | ipv6 -| | Honeycomb sets interface VRF ID -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${1} | ipv6 -| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up -| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up -| | Honeycomb sets interface IPv6 address | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_len} -| | Honeycomb sets interface IPv6 address | ${dut_node} -| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_len} -| | Honeycomb adds interface IPv6 neighbor | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${src_ip} | ${tg_to_dut_if1_mac} -| | Honeycomb adds interface IPv6 neighbor | ${dut_node} | ${dut_to_tg_if2} -| | ... | ${next_hop} | ${tg_to_dut_if2_mac} -| | Vpp all ra suppress link layer | ${nodes} - -| Honeycomb routing test teardown -| | ... -| | [arguments] | ${node} | ${routing_table} -| | ... -| | Show Packet Trace on All DUTs | ${nodes} -| | Log routing configuration from VAT | ${node} -| | Honeycomb removes routing configuration | ${node} | ${routing_table} - -| Setup vrf IDs -| | ... -| | [Arguments] | ${node} | ${interface} | ${vrf} -| | ... -| | Honeycomb sets interface VRF ID -| | ... | ${node} | ${interface} | ${vrf} | ipv4 -| | Honeycomb sets interface VRF ID -| | ... | ${node} | ${interface} | ${vrf} | ipv6 \ No newline at end of file diff --git a/tests/func/honeycomb/mgmt-cfg-slaac-apihc-func.robot b/tests/func/honeycomb/mgmt-cfg-slaac-apihc-func.robot deleted file mode 100644 index b621e17cb1..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-slaac-apihc-func.robot +++ /dev/null @@ -1,138 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -# Interface to run tests on. -| ${interface}= | ${node['interfaces']['port1']['name']} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/slaac.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/traffic.robot -| ... -| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Force Tags | HC_FUNC -| ... -| Documentation | *Honeycomb SLAAC management test suite.* -| ... -| Variables | resources/test_data/honeycomb/slaac_variables.py - -*** Test Cases *** -| TC01: Honeycomb can configure SLAAC -| | [Documentation] | Checks if Honeycomb can congigure SLAAC. -| | ... -| | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node} -| | ... | ${interface} -| | And Honeycomb Configures Interface State | ${node} | ${interface} | up -| | And Honeycomb sets interface IPv6 address | ${node} | ${interface} -| | ... | ${address} | ${prefix} -| | When Honeycomb configures SLAAC | ${node} | ${interface} | ${slaac_data} -| | Then SLAAC Operational Data From Honeycomb Should Be | ${node} -| | ... | ${interface} | ${slaac_data} - -| TC02: Honeycomb can disable SLAAC -| | [Documentation] | Checks if Honeycomb can disable SLAAC. -| | ... -| | Given SLAAC Operational Data From Honeycomb Should Be | ${node} -| | ... | ${interface} | ${slaac_data} -| | When Honeycomb removes SLAAC configuration | ${node} | ${interface} -| | Then SLAAC Operational Data From Honeycomb Should Be empty | ${node} -| | ... | ${interface} - -| TC03: Honeycomb can configure SLAAC with suppress link layer disabled -| | [Documentation] | Checks if Honeycomb can congigure SLAAC. -| | ... -| | [Teardown] | SLAAC test teardown | ${node} | ${interface} -| | ... -| | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node} -| | ... | ${interface} -| | And Honeycomb Configures Interface State | ${node} | ${interface} | up -| | And Honeycomb sets interface IPv6 address | ${node} | ${interface} -| | ... | ${address} | ${prefix} -| | When Honeycomb configures SLAAC | ${node} | ${interface} | ${slaac_data} -| | Then SLAAC Operational Data From Honeycomb Should Be | ${node} -| | ... | ${interface} | ${slaac_data} - -| TC04: Honeycomb can configure SLAAC with sending RA packets disabled -| | [Documentation] | Checks if Honeycomb can configure SLAAC\ -| | ... | with given settings. -| | ... -| | [Teardown] | SLAAC test teardown | ${node} | ${interface} -| | ... -| | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node} -| | ... | ${interface} -| | And Honeycomb Configures Interface State | ${node} | ${interface} | up -| | And Honeycomb sets interface IPv6 address | ${node} | ${interface} -| | ... | ${address} | ${prefix} -| | When Honeycomb configures SLAAC | ${node} | ${interface} | ${slaac_data_01} -| | Then SLAAC Operational Data From Honeycomb Should Be | ${node} -| | ... | ${interface} | ${slaac_data_01} - -| TC05: Honeycomb can configure SLAAC with min interval values -| | [Documentation] | Checks if Honeycomb can configure SLAAC\ -| | ... | with given settings. -| | ... -| | [Teardown] | SLAAC test teardown | ${node} | ${interface} -| | ... -| | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node} -| | ... | ${interface} -| | And Honeycomb Configures Interface State | ${node} | ${interface} | up -| | And Honeycomb sets interface IPv6 address | ${node} | ${interface} -| | ... | ${address} | ${prefix} -| | When Honeycomb configures SLAAC | ${node} | ${interface} | ${slaac_data_02} -| | Then SLAAC Operational Data From Honeycomb Should Be | ${node} -| | ... | ${interface} | ${slaac_data_02} - -| TC06: Honeycomb can configure SLAAC with max interval values -| | [Documentation] | Checks if Honeycomb can configure SLAAC\ -| | ... | with given settings. -| | ... -| | [Teardown] | SLAAC test teardown | ${node} | ${interface} -| | ... -| | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node} -| | ... | ${interface} -| | And Honeycomb Configures Interface State | ${node} | ${interface} | up -| | And Honeycomb sets interface IPv6 address | ${node} | ${interface} -| | ... | ${address} | ${prefix} -| | When Honeycomb configures SLAAC | ${node} | ${interface} | ${slaac_data_03} -| | Then SLAAC Operational Data From Honeycomb Should Be | ${node} -| | ... | ${interface} | ${slaac_data_03} - -| TC07: DUT retransmits RA on IPv6 enabled interface after a set interval -# Traffic test failing in VIRL -| | [Tags] | EXPECTED_FAILING -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Cfg] On DUT1 configure IPv6 interface on the link to TG. -| | ... | [Ver] Make TG wait for two IPv6 Router Advertisement packets\ -| | ... | to be sent by DUT1 and verify the received RA packets are correct. -| | ... -| | [Teardown] | SLAAC test teardown | ${dut_node} | ${dut_to_tg_if1} -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Honeycomb sets interface IPv6 address -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${address} | ${prefix} -| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} -| | ... | up -| | When Honeycomb configures SLAAC | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${slaac_data} -| | :FOR | ${n} | IN RANGE | ${2} -| | | Then Receive and verify router advertisement packet -| | | ... | ${tg_node} | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} | ${20} diff --git a/tests/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot deleted file mode 100644 index c281d95819..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot +++ /dev/null @@ -1,105 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables*** -| ${interface}= | ${node['interfaces']['port1']['name']} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/nat.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Variables | resources/test_data/honeycomb/nat.py | ${node} | ${interface} -| ... -| Documentation | *Honeycomb NAT test suite.* -| ... -| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Force Tags | HC_FUNC - -*** Test Cases *** -| TC01: Honeycomb configures NAT entry -| | [Documentation] | Honeycomb configures a static NAT entry. -| | ... -| | Given NAT Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${nat_empty} -| | When Honeycomb Configures NAT Entry | ${node} | ${entry1} -| | Then NAT Entries From Honeycomb Should Be | ${node} | ${entry1} - -| TC02: Honeycomb removes NAT entry -| | [Documentation] | Honeycomb removes a configured static NAT entry. -| | ... -| | Given NAT Entries From Honeycomb Should Be | ${node} | ${entry1} -| | When Honeycomb Configures NAT Entry | ${node} | ${NONE} -| | Then NAT Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${nat_empty} - -| TC03: Honeycomb configures multiple NAT entries -| | [Documentation] | Honeycomb configures two static NAT entries. -| | ... -| | [Teardown] | Honeycomb Configures NAT Entry | ${node} | ${NONE} -| | ... -| | Given NAT Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${nat_empty} -| | When Honeycomb Configures NAT Entry | ${node} | ${entry1} | ${0} | ${1} -| | And Honeycomb Configures NAT Entry | ${node} | ${entry2} | ${0} | ${2} -| | Then NAT Entries From Honeycomb Should Be -| | ... | ${node} | ${entry1_2_oper} | ${0} - -| TC04: Honeycomb enables NAT on interface - inbound -| | [Documentation] | Honeycomb configures NAT on an interface\ -| | ... | in inbound direction. -| | ... -| | Given NAT Interface Operational Data From Honeycomb Should Be Empty -| | ... | ${node} | ${interface} | inbound -| | And NAT Interface Operational Data From Honeycomb Should Be Empty -| | ... | ${node} | ${interface} | outbound -| | When Honeycomb Configures NAT On Interface -| | ... | ${node} | ${interface} | inbound -| | Then NAT Interface Operational Data From Honeycomb Should Be -| | ... | ${node} | ${interface} | inbound -| | And NAT Interface Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${interface} | outbound - -| TC05: Honeycomb removes NAT interface configuration -| | [Documentation] | Honeycomb removes NAT configuration from an interface. -| | ... -| | Given NAT Interface Operational Data From Honeycomb Should Be -| | ... | ${node} | ${interface} | inbound -| | And NAT Interface Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${interface} | outbound -| | When Honeycomb removes NAT interface configuration -| | ... | ${node} | ${interface} | inbound -| | Then NAT Interface Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${interface} | inbound -| | And NAT Interface Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${interface} | outbound - -| TC06: Honeycomb enables NAT on interface - outbound -| | [Documentation] | Honeycomb configures NAT on an interface\ -| | ... | in outbound direction. -| | ... -| | [Teardown] | Honeycomb removes NAT interface configuration -| | ... | ${node} | ${interface} | outbound -| | ... -| | Given NAT Interface Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${interface} | inbound -| | And NAT Interface Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${interface} | outbound -| | When Honeycomb Configures NAT on Interface -| | ... | ${node} | ${interface} | outbound -| | Then NAT Interface Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${interface} | inbound -| | And NAT Interface Operational Data From Honeycomb Should Be -| | ... | ${node} | ${interface} | outbound diff --git a/tests/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot deleted file mode 100644 index a24d355382..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot +++ /dev/null @@ -1,260 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/port_mirroring.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/sub_interface.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/telemetry/span.robot -| Variables | resources/test_data/honeycomb/span.py -| ... | ${node['interfaces']['port1']['name']} -| ... | ${node['interfaces']['port3']['name']} -| ... | local0 -| Variables | resources/test_data/honeycomb/sub_interfaces.py -| ... -| Force Tags | HC_FUNC -| ... -| Suite Setup | Run Keywords -| ... | Set Up Honeycomb Functional Test Suite | ${node} | AND -| ... | Add Interface local0 To Topology | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Documentation | *Honeycomb port mirroring test suite.* - -*** Test Cases *** -| TC01: Honeycomb can configure SPAN on an interface - receive -| | [Documentation] | Honeycomb configures SPAN on interface and verifies -| | ... | against VPP SPAN dump in state receive. -| | ... -| | When Honeycomb configures SPAN on interface -| | ... | ${node} | ${interface1} | ${settings_receive} -| | Then Interface SPAN Operational Data from Honeycomb should be -| | ... | ${node} | ${interface1} | ${settings_receive} - -| TC02: Honeycomb can configure SPAN on an interface - transmit -| | [Documentation] | Honeycomb configures SPAN on interface and verifies -| | ... | against VPP SPAN dump in state transmit. -| | ... -| | When Honeycomb configures SPAN on interface -| | ... | ${node} | ${interface1} | ${settings_transmit} -| | Then Interface SPAN Operational Data from Honeycomb should be -| | ... | ${node} | ${interface1} | ${settings_transmit} - -| TC03: Honeycomb can configure SPAN on an interface - both -| | [Documentation] | Honeycomb configures SPAN on interface and verifies -| | ... | against VPP SPAN dump in state both. -| | ... -| | When Honeycomb configures SPAN on interface -| | ... | ${node} | ${interface1} | ${settings_both} -| | Then Interface SPAN Operational Data from Honeycomb should be -| | ... | ${node} | ${interface1} | ${settings_both} - -| TC04: Honeycomb can configure SPAN on an interface with two source interfaces -| | [Documentation] | Honeycomb configures SPAN on interface and verifies -| | ... | against VPP SPAN dump in state both. -| | ... -| | When Honeycomb configures SPAN on interface -| | ... | ${node} | ${interface1} | ${settings_both} | ${settings_if2} -| | Then Interface SPAN Operational Data from Honeycomb should be -| | ... | ${node} | ${interface1} | ${settings_both} | ${settings_if2} - -| TC05: Honeycomb can disable SPAN on interface -| | [Documentation] | Honeycomb removes existing SPAN configuration -| | ... | from interface. -| | ... -| | Given Interface SPAN Operational Data from Honeycomb should be -| | ... | ${node} | ${interface1} | ${settings_both} | ${settings_if2} -| | When Honeycomb removes interface SPAN configuration -| | ... | ${node} | ${interface1} -| | Then Interface SPAN Operational Data from Honeycomb should be empty -| | ... | ${node} | ${interface1} - -| TC06: Honeycomb can configure SPAN with two destination interfaces from the same source -| | [Documentation] | Honeycomb configures SPAN on two interfaces and verifies -| | ... | against VPP SPAN dump. -| | ... -| | [Teardown] | Run Keywords -| | ... | Honeycomb removes interface SPAN configuration -| | ... | ${node} | ${interface1} | AND -| | ... | Honeycomb removes interface SPAN configuration -| | ... | ${node} | ${interface2} -| | ... -| | When Honeycomb configures SPAN on interface -| | ... | ${node} | ${interface1} | ${settings_if2} -| | And Honeycomb configures SPAN on interface -| | ... | ${node} | ${interface2} | ${settings_if2} -| | Then Interface SPAN Operational Data from Honeycomb should be -| | ... | ${node} | ${interface1} | ${settings_if2} -| | Then Interface SPAN Operational Data from Honeycomb should be -| | ... | ${node} | ${interface2} | ${settings_if2} - -| TC07: DUT mirrors IPv4 packets from one interface to another -# Pending rework -| | [Tags] | EXPECTED_FAILING -| | [Documentation] -| | ... | [Top] TG=DUT1 -| | ... | [Cfg] (using Honeycomb) On DUT1 configure IPv4 address and set SPAN\ -| | ... | mirroring from one DUT interface to the other. -| | ... | [Ver] Make TG send an ARP packet to DUT through one interface,\ -| | ... | then receive a copy of sent packet and of DUT's ARP reply\ -| | ... | on the second interface. -| | ... -| | [Teardown] | Run Keywords -| | ... | Show Packet Trace on All DUTs | ${nodes} | AND -| | ... | Honeycomb clears all interface IPv4 neighbors -| | ... | ${dut_node} | ${dut_to_tg_if1} | AND -| | ... | Honeycomb removes interface IPv4 addresses -| | ... | ${dut_node} | ${dut_to_tg_if1} | AND -| | ... | Honeycomb removes interface SPAN configuration -| | ... | ${node} | ${dut_to_tg_if2} -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} -| | ... | up -| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} -| | ... | up -| | And Honeycomb sets interface IPv4 address with prefix | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix} -| | And Honeycomb adds interface IPv4 neighbor | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if1_mac} -| | ${settings_5}= | create dictionary | state=both -| | ... | iface-ref=${dut_to_tg_if1} -| | And All Vpp Interfaces Ready Wait | ${nodes} -| | When Honeycomb configures SPAN on interface -| | ... | ${node} | ${dut_to_tg_if2} | ${settings_5} -| | Then Send Packet And Check Received Copies | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${dut_to_tg_if1_mac} | ${tg_to_dut_if2} -| | ... | ${tg_to_dut_if1_ip} | ${dut_to_tg_if1_ip} | ICMP - -| TC08: Honeycomb can configure SPAN on a sub-interface - receive -| | [Documentation] | Honeycomb configures SPAN on sub-interface and verifies -| | ... | against VPP SPAN dump in state receive. -| | ... -| | Given Honeycomb creates sub-interface | ${node} | ${interface1} -| | ... | ${sub_if_1_match} | ${sub_if_1_tags} | ${sub_if_1_settings} -| | When Honeycomb Configures SPAN on sub-interface -| | ... | ${node} | ${interface1} | ${1} | ${settings_receive} -| | Then sub-Interface SPAN Operational Data from Honeycomb should be -| | ... | ${node} | ${interface1} | ${1} | ${settings_receive} - -| TC09: Honeycomb can configure SPAN on a sub-interface - transmit -| | [Documentation] | Honeycomb configures SPAN on sub-interface and verifies -| | ... | against VPP SPAN dump in state transmit. -| | ... -| | Given Sub-interface state from Honeycomb should be -| | ... | ${node} | ${interface1} | ${1} | down | up -| | When Honeycomb Configures SPAN on sub-interface -| | ... | ${node} | ${interface1} | ${1} | ${settings_transmit} -| | Then sub-Interface SPAN Operational Data from Honeycomb should be -| | ... | ${node} | ${interface1} | ${1} | ${settings_transmit} - -| TC10: Honeycomb can configure SPAN on a sub-interface - both -| | [Documentation] | Honeycomb configures SPAN on sub-interface and verifies -| | ... | against VPP SPAN dump in state both. -| | ... -| | Given Sub-interface state from Honeycomb should be -| | ... | ${node} | ${interface1} | ${1} | down | up -| | When Honeycomb Configures SPAN on sub-interface -| | ... | ${node} | ${interface1} | ${1} | ${settings_both} -| | Then sub-Interface SPAN Operational Data from Honeycomb should be -| | ... | ${node} | ${interface1} | ${1} | ${settings_both} - -| TC11: Honeycomb can configure SPAN on a sub-interface with two source interfaces -| | [Documentation] | Honeycomb configures SPAN on sub-interface and verifies -| | ... | against VPP SPAN dump in state both. -| | ... -| | Given Sub-interface state from Honeycomb should be -| | ... | ${node} | ${interface1} | ${1} | down | up -| | When Honeycomb Configures SPAN on sub-interface -| | ... | ${node} | ${interface1} | ${1} | ${settings_both} | ${settings_if2} -| | Then sub-Interface SPAN Operational Data from Honeycomb should be -| | ... | ${node} | ${interface1} | ${1} | ${settings_both} | ${settings_if2} - -| TC12: Honeycomb can disable SPAN on interface -| | [Documentation] | Honeycomb removes existing SPAN configuration -| | ... | from sub-interface. -| | ... -| | Given Sub-interface state from Honeycomb should be -| | ... | ${node} | ${interface1} | ${1} | down | up -| | Given sub-Interface SPAN Operational Data from Honeycomb should be -| | ... | ${node} | ${interface1} | ${1} | ${settings_both} | ${settings_if2} -| | When Honeycomb removes sub-interface SPAN configuration -| | ... | ${node} | ${interface1} | ${1} -| | Then sub-Interface SPAN Operational Data from Honeycomb should be empty -| | ... | ${node} | ${interface1} | ${1} - -| TC13: Honeycomb can configure SPAN with two destination sub-interfaces from the same source -| | [Documentation] | Honeycomb configures SPAN on two sub-interfaces -| | ... | and verifies against VPP SPAN dump. -| | ... -| | [Teardown] | Run Keywords -| | ... | Honeycomb removes sub-interface SPAN configuration -| | ... | ${node} | ${interface1} | ${1} | AND -| | ... | Honeycomb removes sub-interface SPAN configuration -| | ... | ${node} | ${interface2} | ${1} -| | ... -| | Given Honeycomb creates sub-interface | ${node} | ${interface2} -| | ... | ${sub_if_2_match} | ${sub_if_2_tags} | ${sub_if_2_settings} -| | When Honeycomb Configures SPAN on sub-interface -| | ... | ${node} | ${interface1} | ${1} | ${settings_if2} -| | And Honeycomb Configures SPAN on sub-interface -| | ... | ${node} | ${interface2} | ${1} | ${settings_if2} -| | Then Sub-Interface SPAN Operational Data from Honeycomb should be -| | ... | ${node} | ${interface1} | ${1} | ${settings_if2} -| | Then Sub-Interface SPAN Operational Data from Honeycomb should be -| | ... | ${node} | ${interface2} | ${1} | ${settings_if2} - -| TC14: DUT mirrors IPv4 packets from an interface to a sub-interface -# Pending rework -| | [Tags] | EXPECTED_FAILING -| | [Documentation] -| | ... | [Top] TG=DUT1 -| | ... | [Cfg] (using Honeycomb) On DUT1 configure IPv4 address and set SPAN\ -| | ... | mirroring from one DUT interface to a sub-interface on the other\ -| | ... | interface. -| | ... | [Ver] Make TG send an ARP packet to DUT through one interface,\ -| | ... | then receive a copy of sent packet and of DUT's ARP reply\ -| | ... | on the sub-interface. -| | ... -| | [Teardown] | Show Packet Trace on All DUTs | ${nodes} -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Sub-interface state from Honeycomb should be -| | ... | ${dut_node} | ${interface1} | ${1} | down | up -| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} -| | ... | up -| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} -| | ... | up -| | And Honeycomb sets the sub-interface up -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${1} -| | And Honeycomb sets interface IPv4 address with prefix | ${dut_node} -| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix} -| | And And Honeycomb adds interface IPv4 neighbor -| | ... | ${dut_node} | ${dut_to_tg_if2} -| | ... | ${tg_to_dut_if2_ip} | ${tg_to_dut_if2_mac} -| | ${settings_5}= | create dictionary | state=both -| | ... | iface-ref=${dut_to_tg_if2} -| | And All Vpp Interfaces Ready Wait | ${nodes} -| | When Honeycomb Configures SPAN on sub-interface -| | ... | ${node} | ${dut_to_tg_if1} | ${1} | ${settings_5} -| | Then Send Packet And Check Received Copies | ${tg_node} -| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if2_mac} -| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if2_ip} | ${dut_to_tg_if2_ip} | ICMP diff --git a/tests/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot deleted file mode 100644 index 74c18109d1..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot +++ /dev/null @@ -1,139 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -# Interfaces to run tests on. -| ${interface}= | ${node['interfaces']['port1']['name']} -| ${vx_interface}= | vx_tunnel_test -# Configuration which will be set and verified during tests. -| &{vxlan_settings}= | src=192.168.0.2 | dst=192.168.0.3 | vni=${88} -| ... | encap-vrf-id=${0} -| &{vxlan_settings2}= | src=192.168.0.4 | dst=192.168.0.5 | vni=${47} -| ... | encap-vrf-id=${0} -| &{vxlan_settings_ipv6}= | src=10::10 | dst=10::11 | vni=${88} -| ... | encap-vrf-id=${0} -| &{vxlan_settings_ipv6_long}= | src=10:0:0:0:0:0:0:10 | dst=10:0:0:0:0:0:0:11 -| ... | vni=${88} | encap-vrf-id=${0} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/vxlan.robot -# import additional VxLAN settings from resource file -| Variables | resources/test_data/honeycomb/vxlan.py -| ... -| Force Tags | HC_FUNC -| ... -| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Documentation | *Honeycomb VxLAN management test suite.* - -*** Test Cases *** -| TC01: Honeycomb configures VxLAN tunnel -| | [Documentation] | Check if Honeycomb API can configure VxLAN settings. -| | ... -| | Given VxLAN Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vx_interface} -| | And VxLAN Operational Data From VAT Should Be empty | ${node} -| | When Honeycomb sets interface VxLAN configuration -| | ... | ${node} | ${vx_interface} | ${vxlan_settings} -| | Then VxLAN Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vx_interface} | ${vxlan_settings} -| | And VxLAN Operational Data From VAT Should Be -| | ... | ${node} | ${vxlan_settings} -| | ${vxlan_index}= | Get interface index from oper data -| | ... | ${node} | ${vx_interface} -| | Set Suite Variable | ${vxlan_index} - -| TC02: Honeycomb disables VxLAN tunnel -| | [Documentation] | Check if Honeycomb API can reset VxLAN configuration. -| | ... -| | Given VxLAN Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vx_interface} | ${vxlan_settings} -| | And Honeycomb should not show disabled interface in oper data -| | ... | ${node} | ${vxlan_index} -| | And VxLAN Operational Data From VAT Should Be -| | ... | ${node} | ${vxlan_settings} -| | When Honeycomb removes VxLAN tunnel settings | ${node} | ${vx_interface} -| | Then VxLAN Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vx_interface} -| | And Honeycomb should show disabled interface in oper data -| | ... | ${node} | ${vxlan_index} -| | And VxLAN Operational Data From VAT Should Be empty | ${node} - -| TC03: Honeycomb can configure VXLAN tunnel after one has been disabled -| | [Documentation] | Check if Honeycomb API can configure VxLAN settings again\ -| | ... | after previous settings have been removed. -| | ... -| | [Teardown] | Honeycomb removes VxLAN tunnel settings -| | ... | ${node} | ${vx_interface} -| | ... -| | Given VxLAN Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vx_interface} -| | And Honeycomb should show disabled interface in oper data -| | ... | ${node} | ${vxlan_index} -| | And VxLAN Operational Data From VAT Should Be empty | ${node} -| | When Honeycomb sets interface VxLAN configuration -| | ... | ${node} | ${vx_interface} | ${vxlan_settings2} -| | Then VxLAN Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vx_interface} | ${vxlan_settings2} -| | And Honeycomb should not show disabled interface in oper data -| | ... | ${node} | ${vxlan_index} -| | And VxLAN Operational Data From VAT Should Be -| | ... | ${node} | ${vxlan_settings2} - -| TC04: Honeycomb does not set VxLAN configuration on another interface type -| | [Documentation] | Check if Honeycomb API prevents setting VxLAN\ -| | ... | on incorrect interface. -| | ... -| | Given VxLAN Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${interface} -| | And VxLAN Operational Data From VAT Should Be empty | ${node} -| | When Honeycomb fails setting VxLan on different interface type -| | ... | ${node} | ${interface} | ${vxlan_settings2} -| | Then VxLAN Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${interface} -| | And VxLAN Operational Data From VAT Should Be empty -| | ... | ${node} - -| TC05: Honeycomb does not set invalid VxLAN configuration -| | [Documentation] | Check if Honeycomb API prevents setting incorrect VxLAN\ -| | ... | settings. -| | ... -| | Given VxLAN Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vx_interface} -| | And VxLAN Operational Data From VAT Should Be empty | ${node} -| | When Honeycomb fails setting invalid VxLAN configuration -| | ... | ${node} | ${vx_interface} | ${vxlan_invalid} -| | Then VxLAN Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vx_interface} - -| TC06: Honeycomb configures VxLAN tunnel with ipv6 -| | [Documentation] | Check if Honeycomb API can configure VxLAN with\ -| | ... | ipv6 settings. -| | ... -| | [Teardown] | Honeycomb removes VxLAN tunnel settings -| | ... | ${node} | ${vx_interface} -| | ... -| | Given VxLAN Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vx_interface} -| | And VxLAN Operational Data From VAT Should Be empty | ${node} -| | When Honeycomb sets interface VxLAN configuration -| | ... | ${node} | ${vx_interface} | ${vxlan_settings_ipv6} -| | Then VxLAN Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vx_interface} | ${vxlan_settings_ipv6_long} -| | And VxLAN Operational Data From VAT Should Be -| | ... | ${node} | ${vxlan_settings_ipv6} diff --git a/tests/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot b/tests/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot deleted file mode 100644 index 9f1cd86548..0000000000 --- a/tests/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot +++ /dev/null @@ -1,168 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -# Interface to run tests on. -| ${interface}= | ${node['interfaces']['port1']['name']} - -# Parameters to be set on existing interface -| ${vxlan_gpe_existing_if}= | ${interface} -| &{vxlan_gpe_base_wrong_interface_settings}= -| ... | name=${vxlan_gpe_existing_if} -| ... | type=iana-if-type:ethernetCsmacd -| ... | description=for testing purposes -| ... | enabled=true -| ... | link-up-down-trap-enable=enabled -| &{vxlan_gpe_wrong_interface_settings}= -| ... | local=192.168.50.77 -| ... | remote=192.168.50.72 -| ... | vni=${9} -| ... | next-protocol=wrong_ipv4 -| ... | encap-vrf-id=${0} -| ... | decap-vrf-id=${0} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/vxlan_gpe.robot -# Import additional VxLAN GPE settings from resource file -| Variables | resources/test_data/honeycomb/vxlan_gpe.py -| ... -| Documentation | *Honeycomb VxLAN-GPE management test suite.* -| ... -| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -# Disabled due to VPP-875: Configuring VxLAN GPE tunnel crashes VPP -#| Force Tags | HC_FUNC - -*** Test Cases *** -| TC01: Honeycomb creates VxLAN GPE tunnel -| | [Documentation] | Check if Honeycomb API can configure a VxLAN GPE tunnel. -| | ... -| | Given interface Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vxlan_gpe_if1} -| | And interface Operational Data From VAT Should Be empty -| | ... | ${node} | ${vxlan_gpe_if1} -| | When Honeycomb creates VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if1} -| | ... | ${vxlan_gpe_base_settings} | ${vxlan_gpe_settings} -| | Then VxLAN GPE Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vxlan_gpe_if1} -| | ... | ${vxlan_gpe_base_settings} | ${vxlan_gpe_settings} -| | And VxLAN GPE Operational Data From VAT Should Be -| | ... | ${node} | ${vxlan_gpe_if1} | ${vxlan_gpe_settings} -| | And VxLAN GPE Interface indices from Honeycomb and VAT should correspond -| | ... | ${node} | ${vxlan_gpe_if1} - -| TC02: Honeycomb removes VxLAN GPE tunnel -| | [Documentation] | Check if Honeycomb API can remove VxLAN GPE tunnel. -| | ... -| | Given VxLAN GPE Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vxlan_gpe_if1} -| | ... | ${vxlan_gpe_base_settings} | ${vxlan_gpe_settings} -| | VxLAN GPE Operational Data From VAT Should Be -| | ... | ${node} | ${vxlan_gpe_if1} | ${vxlan_gpe_settings} -| | When Honeycomb removes VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if1} -| | Then VxLAN GPE Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vxlan_gpe_if1} -| | And VxLAN GPE Operational Data From VAT Should Be empty -| | ... | ${node} - -| TC03: Honeycomb sets wrong interface type while creating VxLAN GPE tunnel -| | [Documentation] | Check if Honeycomb refuses to create a VxLAN GPE tunnel\ -| | ... | with a wrong interface type set. -| | ... -| | Given interface Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vxlan_gpe_if2} -| | And interface Operational Data From VAT Should Be empty -| | ... | ${node} | ${vxlan_gpe_if2} -| | When Honeycomb fails to create VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if2} -| | ... | ${vxlan_gpe_wrong_type_base_settings} | ${vxlan_gpe_settings} -| | Then interface Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vxlan_gpe_if2} -| | And interface Operational Data From VAT Should Be empty -| | ... | ${node} | ${vxlan_gpe_if2} - -| TC04: Honeycomb sets wrong protocol while creating VxLAN GPE tunnel -| | [Documentation] | Check if Honeycomb refuses to create a VxLAN GPE tunnel\ -| | ... | with a wrong next-protocol set. -| | ... -| | Given interface Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vxlan_gpe_if3} -| | And interface Operational Data From VAT Should Be empty -| | ... | ${node} | ${vxlan_gpe_if3} -| | When Honeycomb fails to create VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if3} -| | ... | ${vxlan_gpe_wrong_protocol_base_settings} -| | ... | ${vxlan_gpe_wrong_protocol_settings} -| | Then interface Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vxlan_gpe_if3} -| | And interface Operational Data From VAT Should Be empty -| | ... | ${node} | ${vxlan_gpe_if3} - -| TC05: Honeycomb sets VxLAN GPE tunnel on existing interface with wrong type -| | [Documentation] | Check if Honeycomb refuses to create a VxLAN GPE tunnel\ -| | ... | on existing interface with wrong type. -| | ... -| | Given VxLAN GPE Operational Data From VAT Should Be empty -| | ... | ${node} -| | When Honeycomb fails to create VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_existing_if} -| | ... | ${vxlan_gpe_base_wrong_interface_settings} -| | ... | ${vxlan_gpe_wrong_interface_settings} -| | Then VxLAN GPE Operational Data From VAT Should Be empty -| | ... | ${node} - -| TC06: Honeycomb creates VxLAN GPE tunnel with ipv6 -| | [Documentation] | Check if Honeycomb API can configure a VxLAN GPE tunnel\ -| | ... | with IPv6 addresses. -| | ... -| | Given VxLAN GPE Operational Data From VAT Should Be empty -| | ... | ${node} -| | And VxLAN GPE Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vxlan_gpe_if5} -| | When Honeycomb creates VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if5} -| | ... | ${vxlan_gpe_base_ipv6_settings} | ${vxlan_gpe_ipv6_settings} -| | Then VxLAN GPE Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vxlan_gpe_if5} -| | ... | ${vxlan_gpe_base_ipv6_settings} | ${vxlan_gpe_ipv6_settings} -| | And Run Keyword And Continue On Failure -| | ... | VxLAN GPE Operational Data From VAT Should Be -| | ... | ${node} | ${vxlan_gpe_if5} | ${vxlan_gpe_ipv6_settings} -| | And VxLAN GPE Interface indices from Honeycomb and VAT should correspond -| | ... | ${node} | ${vxlan_gpe_if5} - -| TC07: Honeycomb creates a second VxLAN GPE tunnel with ipv6 -| | [Documentation] | Check if Honeycomb API can configure another VxLAN\ -| | ... | GPE tunnel with IPv6 addresses. -| | ... -| | Given interface Operational Data From Honeycomb Should Be empty -| | ... | ${node} | ${vxlan_gpe_if6} -| | And interface Operational Data From VAT Should Be empty -| | ... | ${node} | ${vxlan_gpe_if6} -| | When Honeycomb creates VxLAN GPE interface -| | ... | ${node} | ${vxlan_gpe_if6} -| | ... | ${vxlan_gpe_base_ipv6_settings2} | ${vxlan_gpe_ipv6_settings2} -| | Then VxLAN GPE Operational Data From Honeycomb Should Be -| | ... | ${node} | ${vxlan_gpe_if6} -| | ... | ${vxlan_gpe_base_ipv6_settings2} | ${vxlan_gpe_ipv6_settings2} -| | And VxLAN GPE Operational Data From VAT Should Be -| | ... | ${node} | ${vxlan_gpe_if6} | ${vxlan_gpe_ipv6_settings2} -| | And VxLAN GPE Interface indices from Honeycomb and VAT should correspond -| | ... | ${node} | ${vxlan_gpe_if6} diff --git a/tests/func/honeycomb/mgmt-notif-apihcnc-func.robot b/tests/func/honeycomb/mgmt-notif-apihcnc-func.robot deleted file mode 100644 index b943d78ad7..0000000000 --- a/tests/func/honeycomb/mgmt-notif-apihcnc-func.robot +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables *** -# Interfaces to run tests on. -| ${interface}= | ${node['interfaces']['port1']['name']} -| ${tap_interface}= | tap_test -| &{tap_settings}= | tap-name=tap_test | mac=08:00:27:c0:5d:37 -| ... | device-instance=${1} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/honeycomb.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/tap.robot -| Resource | resources/libraries/robot/honeycomb/notifications.robot -| ... -| Documentation | *Honeycomb notifications test suite.* -| ... -| Suite Setup | Set Up Honeycomb Notifications Functional Test Suite -| ... -| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} -| ... -| Force Tags | HC_FUNC - -*** Test Cases *** -| TC01: Honeycomb sends notification on interface state change -| | [Documentation] | Check if Honeycomb sends a state-changed notification\ -| | ... | when the state of an interface is changed. -| | ... -| | Given Interface state from Honeycomb should be -| | ... | ${node} | ${interface} | down -| | And Interface state from VAT should be | ${node} | ${interface} | down -| | And Notification listener should be established | ${node} -| | When Honeycomb configures interface state | ${node} | ${interface} | up -| | Then Honeycomb should send interface state notification | ${interface} | up -| | When Honeycomb configures interface state | ${node} | ${interface} | down -| | And Honeycomb should send interface state notification | ${interface} | down - -| TC02: Honeycomb sends notification on interface deletion -| | [Documentation] | Check if Honeycomb sends an interface-deleted notification -| | ... | when an interface is deleted. -| | ... -| | Given TAP Operational Data From Honeycomb Should Be -| | ... | ${node} | ${tap_interface} | ${tap_settings} -| | And TAP Operational Data From VAT Should Be -| | ... | ${node} | ${tap_interface} | ${tap_settings} -| | And Notification listener should be established | ${node} -| | When Honeycomb removes TAP interface | ${node} | ${tap_interface} -| | Then Honeycomb should send interface deleted notification | ${tap_interface} - -*** Keywords *** -| Set Up Honeycomb Notifications Functional Test Suite -| | Set Up Honeycomb Functional Test Suite | ${node} -| | Honeycomb configures interface state -| | ... | ${node} | ${interface} | down -| | Honeycomb creates TAP interface -| | ... | ${node} | ${tap_interface} | ${tap_settings} \ No newline at end of file diff --git a/tests/func/honeycomb/mgmt-statepersist-apihc-func.robot b/tests/func/honeycomb/mgmt-statepersist-apihc-func.robot deleted file mode 100644 index 4277c91a4e..0000000000 --- a/tests/func/honeycomb/mgmt-statepersist-apihc-func.robot +++ /dev/null @@ -1,169 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Variables*** -# Interface to run tests on. -| ${interface}= | ${node['interfaces']['port1']['name']} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/persistence.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot -| Resource | resources/libraries/robot/honeycomb/l2_fib.robot -| ... -| Suite Setup | Run Keywords -| ... | Configure Persistence | ${node} | enable | AND -| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| ... -| Suite Teardown | Configure Persistence | ${node} | disable -| ... -| Force Tags | HC_PERSIST | HC_REST_ONLY -| ... -| Documentation | *Honeycomb configuration persistence test suite.* - -*** Test Cases *** -# multi-feature cases -# =================== -| TC01: Honeycomb persists configuration through restart of both Honeycomb and VPP -| | [Documentation] | Checks if Honeycomb maintains configuration after both\ -| | ... | Restart Honeycomb and VPP. -| | ... -# Failing due to HC2VPP-47 -| | [Tags] | HC_FUNC | EXPECTED_FAILING -| | ... -| | [Teardown] -| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| | ... -| | Given Multi-Feature Persistence test configuration | ${node} | ${interface} -| | And Multi-Feature persistence Test Verification | ${node} | ${interface} -| | And Log persisted configuration on node | ${node} -| | When Restart Honeycomb and VPP in pesistence test | ${node} -| | Then Multi-Feature persistence Test Verification | ${node} | ${interface} - -| TC02: Honeycomb reverts to defaults if persistence files are invalid -| | [Documentation] | Checks if Honeycomb reverts to default configuration when\ -| | ... | persistence files are damaged or invalid. -| | ... -| | [Tags] | HC_FUNC -| | ... -| | [Teardown] -| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| | ... -| | Given Multi-Feature Persistence test configuration | ${node} | ${interface} -| | And Multi-Feature persistence Test Verification | ${node} | ${interface} -| | When Persistence file is damaged during restart | ${node} -| | Then Honeycomb and VPP should have default configuration | ${node} - -| TC03: Honeycomb persists configuration through restart of Honeycomb -| | [Documentation] | Checks if Honeycomb maintains configuration after it\ -| | ... | is restarted. -| | ... -| | [Teardown] -| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| | ... -| | Given Multi-Feature Persistence test configuration | ${node} | ${interface} -| | And Multi-Feature persistence Test Verification | ${node} | ${interface} -| | And Log persisted configuration on node | ${node} -| | When Restart Honeycomb | ${node} -| | Then Multi-Feature persistence Test Verification | ${node} | ${interface} - -| TC04: Honeycomb persists configuration through restart of VPP -| | [Documentation] | Checks if Honeycomb updates VPP settings after VPP is\ -| | ... | restarted. -| | ... -| | [Teardown] -| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| | ... -| | Given Multi-Feature Persistence test configuration | ${node} | ${interface} -| | And Multi-Feature persistence Test Verification | ${node} | ${interface} -| | And Log persisted configuration on node | ${node} -| | When Restart VPP | ${node} -| | Then Multi-Feature persistence Test Verification | ${node} | ${interface} - -# single-feature cases -# ==================== - -| TC05: Persist configuration of IP addresses and neighbors - HC and VPP restart -| | [Documentation] | Verify persistence of interface state, IPv4 address -| | ... | and neighbor entries through restart of both Honeycomb and VPP. -| | ... -| | [Teardown] -| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| | ... -| | Given Interface Persistence Setup | ${node} -| | And Interface Persistence Check | ${node} -| | When Restart Honeycomb and VPP in pesistence test | ${node} -| | Then Interface Persistence Check | ${node} - -| TC06: Persist configuration of IP addresses and neighbors - HC restart -| | [Documentation] | Verify persistence of interface state, IPv4 address -| | ... | and neighbor entries through restart of Honeycomb. -| | ... -| | [Teardown] -| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| | ... -| | Given Interface Persistence Setup | ${node} -| | And Interface Persistence Check | ${node} -| | When Restart Honeycomb | ${node} -| | Then Interface Persistence Check | ${node} - -| TC07: Persist configuration of IP addresses and neighbors - VPP restart -| | [Documentation] | Verify persistence of interface state, IPv4 address -| | ... | and neighbor entries through restart of VPP. -| | ... -| | [Teardown] -| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| | ... -| | Given Interface Persistence Setup | ${node} -| | And Interface Persistence Check | ${node} -| | When Restart VPP | ${node} -| | Then Interface Persistence Check | ${node} - -| TC08: Honeycomb persists configuration of bridge domains - HC and VPP restart -| | [Documentation] | Verify persistence of bridge domain, L2-FIB entry -| | ... | and Bridge domain Operational Interface Assignment through restart -| | ... | of both Honeycomb and VPP. -| | ... -| | [Teardown] -| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| | ... -| | Given Bridge Domain Persistence Setup | ${node} -| | When Restart Honeycomb and VPP in pesistence test | ${node} -| | Then Bridge Domain Persistence Check | ${node} - -| TC09: Honeycomb persists configuration of bridge domains - HC restart -| | [Documentation] | Verify persistence of bridge domain, L2-FIB entry -| | ... | and Bridge domain Operational Interface Assignment through restart -| | ... | of Honeycomb. -| | ... -| | [Teardown] -| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| | ... -| | Given Bridge Domain Persistence Setup | ${node} -| | When Restart Honeycomb | ${node} -| | Then Bridge Domain Persistence Check | ${node} - -| TC10: Honeycomb persists configuration of bridge domains - VPP restart -| | [Documentation] | Verify persistence of bridge domain, L2-FIB entry -| | ... | and Bridge domain Operational Interface Assignment through restart -| | ... | of VPP. -| | ... -| | [Teardown] -| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| | ... -| | Given Bridge Domain Persistence Setup | ${node} -| | When Restart VPP | ${node} -| | Then Bridge Domain Persistence Check | ${node} - -#TODO: All other features diff --git a/tests/func/iacl/eth2p-eth-l2xcbase-iaclbase-func.robot b/tests/func/iacl/eth2p-eth-l2xcbase-iaclbase-func.robot deleted file mode 100644 index 06b6633d97..0000000000 --- a/tests/func/iacl/eth2p-eth-l2xcbase-iaclbase-func.robot +++ /dev/null @@ -1,144 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/counters.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/l2_xconnect.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Library | resources.libraries.python.Classify.Classify -| Library | resources.libraries.python.Trace -| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *Ingress ACL test cases* -| ... -| ... | *[Top] Network Topologies:* TG - DUT1 - DUT2 - TG -| ... | with one link between the nodes. -| ... | *[Cfg] DUT configuration:* DUT2 is configured with L2 Cross connect. -| ... | DUT1 is configured with iACL classification on link to TG, -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent -| ... | in one direction by TG on link to DUT1 and received on TG link -| ... | to DUT2. On receive TG verifies if packets are dropped. - -*** Variables *** -| ${l2_table}= | l2 - -*** Test Cases *** -| TC01: DUT with iACL MAC src-addr drops matching pkts -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Cfg] On DUT1 add source MAC address to classify table with 'deny'. -| | ... | [Ver] Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Configure L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_tg} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table L2 | ${dut1_node} | src -| | And Vpp Configures Classify Session L2 -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | src | ${tg_to_dut1_mac} -| | And Vpp Enable Input ACL Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${l2_table} | ${table_index} -| | Then ICMP packet transmission should fail -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} - -| TC02: DUT with iACL MAC dst-addr drops matching pkts -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Cfg] On DUT1 add destination MAC address to classify -| | ... | table with 'deny'. -| | ... | [Ver] Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Configure L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_tg} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table L2 | ${dut1_node} | dst -| | And Vpp Configures Classify Session L2 -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | dst | ${tg_to_dut2_mac} -| | And Vpp Enable Input ACL Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${l2_table} | ${table_index} -| | Then ICMP packet transmission should fail -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} - -| TC03: DUT with iACL MAC src-addr and dst-addr drops matching pkts -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Cfg] On DUT1 add source and destination MAC address to classify -| | ... | table with 'deny'. -| | ... | [Ver] Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Configure L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_tg} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} -| | ${table_index_1} | ${skip_n_1} | ${match_n_1}= -| | ... | When Vpp Creates Classify Table L2 | ${dut1_node} | src -| | And Vpp Configures Classify Session L2 -| | ... | ${dut1_node} | deny | ${table_index_1} | ${skip_n_1} | ${match_n_1} -| | ... | src | ${tg_to_dut1_mac} -| | ${table_index_2} | ${skip_n_2} | ${match_n_2}= -| | ... | When Vpp Creates Classify Table L2 | ${dut1_node} | dst -| | And Vpp Configures Classify Session L2 -| | ... | ${dut1_node} | deny | ${table_index_2} | ${skip_n_2} | ${match_n_2} -| | ... | dst | ${tg_to_dut1_mac} -| | And Vpp Enable Input ACL Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${l2_table} | ${table_index_1} -| | And Vpp Enable Input ACL Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${l2_table} | ${table_index_2} -| | Then ICMP packet transmission should fail -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} - -| TC04: DUT with iACL EtherType drops matching pkts -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Cfg] On DUT1 add EtherType IPv4(0x0800) to classify table with 'deny'. -| | ... | [Ver] Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Configure L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_tg} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table Hex -| | ... | ${dut1_node} | 000000000000000000000000ffff -| | And Vpp Configures Classify Session Hex -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | 0000000000000000000000000800 -| | And Vpp Enable Input ACL Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${l2_table} | ${table_index} -| | Then ICMP packet transmission should fail -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/func/iacl/eth2p-ethip4-ip4base-iaclbase-func.robot b/tests/func/iacl/eth2p-ethip4-ip4base-iaclbase-func.robot deleted file mode 100644 index 04bfb1602b..0000000000 --- a/tests/func/iacl/eth2p-ethip4-ip4base-iaclbase-func.robot +++ /dev/null @@ -1,524 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/counters.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/l2_xconnect.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Resource | resources/libraries/robot/traffic.robot -| Library | resources.libraries.python.Classify.Classify -| Library | resources.libraries.python.Trace -| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *IPv4 routing with ingress ACL test cases* -| ... -| ... | Encapsulations: Eth-IPv4 on links TG-DUT1, TG-DUT2, DUT1-DUT2. IPv4 -| ... | ingress ACL (iACL) tests use 3-node topology TG - DUT1 - DUT2 - TG with -| ... | one link between the nodes. DUT1 and DUT2 are configured with IPv4 -| ... | routing and static routes. DUT1 is configured with iACL on link to TG, -| ... | iACL classification and permit/deny action are configured on a per test -| ... | case basis. Test ICMPv4 Echo Request packets are sent in one direction -| ... | by TG on link to DUT1 and received on TG link to DUT2. On receive TG -| ... | verifies if packets are dropped, or if received verifies packet IPv4 -| ... | src-addr, dst-addr and MAC addresses. - -*** Variables *** -| ${dut1_to_tg_ip}= | 192.168.1.1 -| ${dut1_to_dut2_ip}= | 192.168.2.1 -| ${dut1_to_dut2_ip_GW}= | 192.168.2.2 -| ${test_dst_ip}= | 32.0.0.1 -| ${test_src_ip}= | 16.0.0.1 -| ${non_drop_dst_ip}= | 33.0.0.1 -| ${non_drop_src_ip}= | 15.0.0.1 -| ${prefix_length}= | 24 -| ${ip_version}= | ip4 -| ${l2_table}= | l2 - -*** Test Cases *** -| TC01: DUT with iACL IPv4 src-addr drops matching pkts -| | [Documentation] -| | ... | On DUT1 add source IPv4 address to classify table with 'deny'.\ -| | ... | Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Arp On Dut -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | Then Send packet and verify headers | ${tg_node} -| | ... | ${non_drop_src_ip} | ${test_dst_ip} | ${tg_to_dut1} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table L3 | ${dut1_node} -| | ... | ${ip_version} | src -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | ${ip_version} | src | ${test_src_ip} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then Packet transmission from port to port should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers | ${tg_node} -| | ... | ${non_drop_src_ip} | ${test_dst_ip} | ${tg_to_dut1} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} - -| TC02: DUT with iACL IPv4 dst-addr drops matching pkts -| | [Documentation] -| | ... | On DUT1 add destination IPv4 address to classify table with 'deny'.\ -| | ... | Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Arp On Dut -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${non_drop_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | Then Send packet and verify headers | ${tg_node} -| | ... | ${test_src_ip} | ${non_drop_dst_ip} | ${tg_to_dut1} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table L3 | ${dut1_node} -| | ... | ${ip_version} | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | ${ip_version} | dst | ${test_dst_ip} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then Packet transmission from port to port should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers | ${tg_node} -| | ... | ${test_src_ip} | ${non_drop_dst_ip} | ${tg_to_dut1} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} - -| TC03: DUT with iACL IPv4 src-addr and dst-addr drops matching pkts -| | [Documentation] -| | ... | On DUT1 add source and destination IPv4 addresses to classify table\ -| | ... | with 'deny'. Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Arp On Dut -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${non_drop_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | Then Send packet and verify headers | ${tg_node} -| | ... | ${non_drop_src_ip} | ${non_drop_dst_ip} | ${tg_to_dut1} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | ${table_index_1} | ${skip_n_1} | ${match_n_1}= -| | ... | When Vpp Creates Classify Table L3 | ${dut1_node} -| | ... | ${ip_version} | src -| | ${table_index_2} | ${skip_n_2} | ${match_n_2}= -| | ... | And Vpp Creates Classify Table L3 | ${dut1_node} | ${ip_version} | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1_node} | deny | ${table_index_1} | ${skip_n_1} | ${match_n_2} -| | ... | ${ip_version} | src | ${test_src_ip} -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1_node} | deny | ${table_index_2} | ${skip_n_2} | ${match_n_2} -| | ... | ${ip_version} | dst | ${test_dst_ip} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index_1} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index_2} -| | Then Packet transmission from port to port should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers | ${tg_node} -| | ... | ${non_drop_src_ip} | ${non_drop_dst_ip} | ${tg_to_dut1} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} - -| TC04: DUT with iACL IPv4 protocol set to TCP drops matching pkts -| | [Documentation] -| | ... | On DUT1 add protocol mask and TCP protocol (0x06) to classify table\ -| | ... | with 'deny'. Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Arp On Dut -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table Hex -| | ... | ${dut1_node} | 0000000000000000000000000000000000000000000000FF -| | And Vpp Configures Classify Session Hex -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | 000000000000000000000000000000000000000000000006 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then TCP or UDP packet transmission should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 - -| TC05: DUT with iACL IPv4 protocol set to UDP drops matching pkts -| | [Documentation] -| | ... | On DUT1 add protocol mask and UDP protocol (0x11) to classify table\ -| | ... | with 'deny'. Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Arp On Dut -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table Hex -| | ... | ${dut1_node} | 0000000000000000000000000000000000000000000000FF -| | And Vpp Configures Classify Session Hex -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | 000000000000000000000000000000000000000000000011 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then TCP or UDP packet transmission should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 - -| TC06: DUT with iACL IPv4 TCP src-ports drops matching pkts -| | [Documentation] -| | ... | On DUT1 add TCP source ports to classify table with 'deny'.\ -| | ... | Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Arp On Dut -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 110 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 -| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | TCP | source -| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 80 | 0 -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} -| | And Vpp Configures Classify Session Hex -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | ${hex_value} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then TCP or UDP packet transmission should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 110 | 20 - -| TC07: DUT with iACL IPv4 TCP dst-ports drops matching pkts -| | [Documentation] -| | ... | On DUT1 add TCP destination ports to classify table with 'deny'.\ -| | ... | Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Arp On Dut -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 20 | 110 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 20 | 80 -| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | TCP | destination -| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 0 | 80 -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} -| | And Vpp Configures Classify Session Hex -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | ${hex_value} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then TCP or UDP packet transmission should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 20 | 80 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 20 | 110 - -| TC08: DUT with iACL IPv4 TCP src-ports and dst-ports drops matching pkts -| | [Documentation] -| | ... | On DUT1 add TCP source and destination ports to classify table\ -| | ... | with 'deny'. Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Arp On Dut -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 110 | 25 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 -| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | TCP -| | ... | source + destination -| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 80 | 20 -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} -| | And Vpp Configures Classify Session Hex -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | ${hex_value} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then TCP or UDP packet transmission should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 110 | 25 - -| TC09: DUT with iACL IPv4 UDP src-ports drops matching pkts -| | [Documentation] -| | ... | On DUT1 add UDP source ports to classify table with 'deny'.\ -| | ... | Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Arp On Dut -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 -| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | UDP | source -| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 80 | 0 -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} -| | And Vpp Configures Classify Session Hex -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | ${hex_value} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then TCP or UDP packet transmission should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 20 - -| TC10: DUT with iACL IPv4 UDP dst-ports drops matching pkts -| | [Documentation] -| | ... | On DUT1 add TCP destination ports to classify table with 'deny'.\ -| | ... | Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Arp On Dut -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 20 | 110 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 20 | 80 -| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | UDP | destination -| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 0 | 80 -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} -| | And Vpp Configures Classify Session Hex -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | ${hex_value} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then TCP or UDP packet transmission should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 20 | 80 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 20 | 110 - -| TC11: DUT with iACL IPv4 UDP src-ports and dst-ports drops matching pkts -| | [Documentation] -| | ... | On DUT1 add UDP source and destination ports to classify table\ -| | ... | with 'deny'. Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Arp On Dut -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 25 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 -| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | UDP -| | ... | source + destination -| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 80 | 20 -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} -| | And Vpp Configures Classify Session Hex -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | ${hex_value} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then TCP or UDP packet transmission should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 25 diff --git a/tests/func/iacl/eth2p-ethip6-ip6base-iaclbase-func.robot b/tests/func/iacl/eth2p-ethip6-ip6base-iaclbase-func.robot deleted file mode 100644 index a3eef2a665..0000000000 --- a/tests/func/iacl/eth2p-ethip6-ip6base-iaclbase-func.robot +++ /dev/null @@ -1,577 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/counters.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/l2_xconnect.robot -| Resource | resources/libraries/robot/traffic.robot -| Library | resources.libraries.python.Classify.Classify -| Library | resources.libraries.python.Trace -| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *IPv6 routing with ingress ACL test cases* -| ... -| ... | Encapsulations: Eth-IPv6 on links TG-DUT1, TG-DUT2, DUT1-DUT2. IPv6 -| ... | ingress ACL (iACL) tests use 3-node topology TG - DUT1 - DUT2 - TG with -| ... | one link between the nodes. DUT1 and DUT2 are configured with IPv6 -| ... | routing and static routes. DUT1 is configured with iACL on link to TG, -| ... | iACL classification and permit/deny action are configured on a per test -| ... | case basis. Test ICMPv6 Echo Request packets are sent in one direction -| ... | by TG on link to DUT1 and received on TG link to DUT2. On receive TG -| ... | verifies if packets are dropped, or if received verifies packet IPv6 -| ... | src-addr, dst-addr and MAC addresses. - -*** Variables *** -| ${dut1_to_tg_ip}= | 3ffe:62::1 -| ${dut1_to_dut2_ip}= | 3ffe:63::1 -| ${dut1_to_dut2_ip_GW}= | 3ffe:63::2 -| ${dut2_to_dut1_ip}= | 3ffe:72::1 -| ${dut2_to_tg_ip}= | 3ffe:73::1 -| ${test_dst_ip}= | 3ffe:64::1 -| ${test_src_ip}= | 3ffe:61::1 -| ${non_drop_dst_ip}= | 3ffe:54::1 -| ${non_drop_src_ip}= | 3ffe:51::1 -| ${prefix_length}= | 64 -| ${ip_version}= | ip6 -| ${l2_table}= | l2 - -*** Test Cases *** -| TC01: DUT with iACL IPv6 src-addr drops matching pkts -| | [Documentation] -| | ... | On DUT1 add source IPv6 address to classify table with 'deny'.\ -| | ... | Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Ip Neighbor -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | And Vpp All Ra Suppress Link Layer | ${nodes} -| | Then Send packet and verify headers | ${tg_node} -| | ... | ${non_drop_src_ip} | ${test_dst_ip} | ${tg_to_dut1} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table L3 | ${dut1_node} -| | ... | ${ip_version} | src -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | ${ip_version} | src | ${test_src_ip} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then Packet transmission from port to port should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers | ${tg_node} -| | ... | ${non_drop_src_ip} | ${test_dst_ip} | ${tg_to_dut1} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} - -| TC02: DUT with iACL IPv6 dst-addr drops matching pkts -| | [Documentation] -| | ... | On DUT1 add destination IPv6 address to classify table with 'deny'.\ -| | ... | Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Ip Neighbor -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${non_drop_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | And Vpp All Ra Suppress Link Layer | ${nodes} -| | Then Send packet and verify headers | ${tg_node} -| | ... | ${test_src_ip} | ${non_drop_dst_ip} | ${tg_to_dut1} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table L3 | ${dut1_node} -| | ... | ${ip_version} | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | ${ip_version} | dst | ${test_dst_ip} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then Packet transmission from port to port should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers | ${tg_node} -| | ... | ${test_src_ip} | ${non_drop_dst_ip} | ${tg_to_dut1} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} - -| TC03: DUT with iACL IPv6 src-addr and dst-addr drops matching pkts -| | [Documentation] -| | ... | On DUT1 add source and destination IPv6 addresses to classify table\ -| | ... | with 'deny'. Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Ip Neighbor -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${non_drop_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | And Vpp All Ra Suppress Link Layer | ${nodes} -| | Then Send packet and verify headers | ${tg_node} -| | ... | ${non_drop_src_ip} | ${non_drop_dst_ip} | ${tg_to_dut1} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | ${table_index_1} | ${skip_n_1} | ${match_n_1}= -| | ... | When Vpp Creates Classify Table L3 | ${dut1_node} -| | ... | ${ip_version} | src -| | ${table_index_2} | ${skip_n_2} | ${match_n_2}= -| | ... | And Vpp Creates Classify Table L3 | ${dut1_node} | ${ip_version} | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1_node} | deny | ${table_index_1} | ${skip_n_1} | ${match_n_2} -| | ... | ${ip_version} | src | ${test_src_ip} -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1_node} | deny | ${table_index_2} | ${skip_n_2} | ${match_n_2} -| | ... | ${ip_version} | dst | ${test_dst_ip} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index_1} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index_2} -| | Then Packet transmission from port to port should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers | ${tg_node} -| | ... | ${non_drop_src_ip} | ${non_drop_dst_ip} | ${tg_to_dut1} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} - -| TC04: DUT with iACL IPv6 protocol set to TCP drops matching pkts -| | [Documentation] -| | ... | On DUT1 add protocol mask and TCP protocol (0x06) to classify table\ -| | ... | with 'deny'. Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Ip Neighbor -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | And Vpp All Ra Suppress Link Layer | ${nodes} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table Hex -| | ... | ${dut1_node} | 0000000000000000000000000000000000000000FF -| | And Vpp Configures Classify Session Hex -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | 000000000000000000000000000000000000000006 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then TCP or UDP packet transmission should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 - -| TC05: DUT with iACL IPv6 protocol set to UDP drops matching pkts -| | [Documentation] -| | ... | On DUT1 add protocol mask and UDP protocol (0x11) to classify table\ -| | ... | with 'deny'. Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Ip Neighbor -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | And Vpp All Ra Suppress Link Layer | ${nodes} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table Hex -| | ... | ${dut1_node} | 0000000000000000000000000000000000000000FF -| | And Vpp Configures Classify Session Hex -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | 000000000000000000000000000000000000000011 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then TCP or UDP packet transmission should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 - -| TC06: DUT with iACL IPv6 TCP src-ports drops matching pkts -| | [Documentation] -| | ... | On DUT1 add TCP source ports to classify table with 'deny'.\ -| | ... | Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Ip Neighbor -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | And Vpp All Ra Suppress Link Layer | ${nodes} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 110 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 -| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | TCP | source -| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 80 | 0 -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} -| | And Vpp Configures Classify Session Hex -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | ${hex_value} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then TCP or UDP packet transmission should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 110 | 20 - -| TC07: DUT with iACL IPv6 TCP dst-ports drops matching pkts -| | [Documentation] -| | ... | On DUT1 add TCP destination ports to classify table with 'deny'.\ -| | ... | Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Ip Neighbor -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | And Vpp All Ra Suppress Link Layer | ${nodes} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 20 | 110 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 20 | 80 -| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | TCP | destination -| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 0 | 80 -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} -| | And Vpp Configures Classify Session Hex -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | ${hex_value} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then TCP or UDP packet transmission should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 20 | 80 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 20 | 110 - -| TC08: DUT with iACL IPv6 TCP src-ports and dst-ports drops matching pkts -| | [Documentation] -| | ... | On DUT1 add TCP source and destination ports to classify table\ -| | ... | with 'deny'. Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Ip Neighbor -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | And Vpp All Ra Suppress Link Layer | ${nodes} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 110 | 25 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 -| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | TCP -| | ... | source + destination -| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 80 | 20 -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} -| | And Vpp Configures Classify Session Hex -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | ${hex_value} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then TCP or UDP packet transmission should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 110 | 25 - -| TC09: DUT with iACL IPv6 UDP src-ports drops matching pkts -| | [Documentation] -| | ... | On DUT1 add UDP source ports to classify table with 'deny'.\ -| | ... | Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Ip Neighbor -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | And Vpp All Ra Suppress Link Layer | ${nodes} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 -| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | UDP | source -| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 80 | 0 -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} -| | And Vpp Configures Classify Session Hex -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | ${hex_value} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then TCP or UDP packet transmission should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 20 - -| TC10: DUT with iACL IPv6 UDP dst-ports drops matching pkts -| | [Documentation] -| | ... | On DUT1 add TCP destination ports to classify table with 'deny'.\ -| | ... | Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Ip Neighbor -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | And Vpp All Ra Suppress Link Layer | ${nodes} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 20 | 110 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 20 | 80 -| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | UDP | destination -| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 0 | 80 -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} -| | And Vpp Configures Classify Session Hex -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | ${hex_value} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then TCP or UDP packet transmission should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 20 | 80 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 20 | 110 - -| TC11: DUT with iACL IPv6 UDP src-ports and dst-ports drops matching pkts -| | [Documentation] -| | ... | On DUT1 add UDP source and destination ports to classify table\ -| | ... | with 'deny'. Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Ip Neighbor -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | And Vpp All Ra Suppress Link Layer | ${nodes} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 25 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 -| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | UDP -| | ... | source + destination -| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 80 | 20 -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} -| | And Vpp Configures Classify Session Hex -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | ${hex_value} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} -| | Then TCP or UDP packet transmission should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 25 - -| TC12: DUT with iACL MAC src-addr and iACL IPv6 UDP src-ports and dst-ports drops matching pkts -| | [Documentation] -| | ... | On DUT1 add source MAC address to classify (L2) table and add UDP\ -| | ... | source and destination ports to classify (hex) table with 'deny'. -| | ... | Make TG verify matching packets are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Configure L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_tg} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | And Vpp All Ra Suppress Link Layer | ${nodes} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 25 -| | And Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table L2 | ${dut1_node} | src -| | And Vpp Configures Classify Session L2 -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | src | ${tg_to_dut1_mac} -| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | UDP -| | ... | source + destination -| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 80 | 20 -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} -| | And Vpp Configures Classify Session Hex -| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} -| | ... | ${hex_value} -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${l2_table} | ${table_index} -| | Then Send TCP or UDP packet and verify received packet | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 25 -| | And TCP or UDP packet transmission should fail | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} -| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 diff --git a/tests/func/ipsec/eth2p-ethip4ipsectnl-ip4base-func.robot b/tests/func/ipsec/eth2p-ethip4ipsectnl-ip4base-func.robot deleted file mode 100644 index c4c0f3c2b7..0000000000 --- a/tests/func/ipsec/eth2p-ethip4ipsectnl-ip4base-func.robot +++ /dev/null @@ -1,523 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/ipsec.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO -| ... | VM_ENV | HW_ENV | SKIP_VPP_PATCH -| ... -| Test Setup | Set up IPv4 IPSec functional test -| ... -| Test Teardown | Tear down IPSec functional test | ${dut_node} -| ... -| Documentation | *IPv4 IPsec tunnel mode test suite.* -| ... -| ... | *[Top] Network topologies:* TG-DUT1 2-node topology with one link\ -| ... | between nodes. -| ... | *[Cfg] DUT configuration:* On DUT1 create loopback interface, configure\ -| ... | loopback an physical interface IPv4 addresses, static ARP record, route\ -| ... | and IPsec manual keyed connection in tunnel mode. -| ... | *[Ver] TG verification:* ESP packet is sent from TG to DUT1. ESP packet\ -| ... | is received on TG from DUT1. -| ... | *[Ref] Applicable standard specifications:* RFC4303. - -*** Variables *** -| ${tg_spi}= | ${1000} -| ${dut_spi}= | ${1001} -| ${ESP_PROTO}= | ${50} -| ${tg_if_ip4}= | 192.168.100.2 -| ${dut_if_ip4}= | 192.168.100.3 -| ${tg_lo_ip4}= | 192.168.3.3 -| ${dut_lo_ip4}= | 192.168.4.4 -| ${ip4_plen}= | ${24} - -*** Test Cases *** -| TC01: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC02: VPP process ESP packet in Tunnel Mode with AES-CBC-192 encryption and SHA1-96 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-192 and integrity algorithm SHA1-96 in tunnel mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 192 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC03: VPP process ESP packet in Tunnel Mode with AES-CBC-256 encryption and SHA1-96 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-256 and integrity algorithm SHA1-96 in tunnel mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 256 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC04: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA-256-128 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-256-128 in tunnel\ -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA 256 128 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC05: VPP process ESP packet in Tunnel Mode with AES-CBC-192 encryption and SHA-256-128 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-256-128 in tunnel\ -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | ${encr_alg}= | Crypto Alg AES CBC 192 -| | ${auth_alg}= | Integ Alg SHA 256 128 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC06: VPP process ESP packet in Tunnel Mode with AES-CBC-256 encryption and SHA-256-128 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-256-128 in tunnel\ -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 256 -| | ${auth_alg}= | Integ Alg SHA 256 128 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC07: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA-384-192 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-384-192 in tunnel\ -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA 384 192 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC08: VPP process ESP packet in Tunnel Mode with AES-CBC-192 encryption and SHA-384-192 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-384-192 in tunnel\ -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 192 -| | ${auth_alg}= | Integ Alg SHA 384 192 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC09: VPP process ESP packet in Tunnel Mode with AES-CBC-256 encryption and SHA-384-192 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-384-192 in tunnel\ -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | ${encr_alg}= | Crypto Alg AES CBC 256 -| | ${auth_alg}= | Integ Alg SHA 384 192 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC10: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA-512-256 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-512-256 in tunnel\ -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA 512 256 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC11: VPP process ESP packet in Tunnel Mode with AES-CBC-192 encryption and SHA-512-256 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-512-256 in tunnel\ -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 192 -| | ${auth_alg}= | Integ Alg SHA 512 256 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC12: VPP process ESP packet in Tunnel Mode with AES-CBC-256 encryption and SHA-512-256 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-512-256 in tunnel\ -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | ${encr_alg}= | Crypto Alg AES CBC 256 -| | ${auth_alg}= | Integ Alg SHA 512 256 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC13: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity - different encryption alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel mode. -| | ... | [Ver] Send an ESP packet encrypted by encryption key different from\ -| | ... | encryption key stored on VPP node from TG to VPP node and expect no\ -| | ... | response to be received on TG. -| | ... | [Ref] RFC4303. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC14: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity - different integrity alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel mode. -| | ... | [Ver] Send an ESP packet authenticated by integrity key different\ -| | ... | from integrity key stored on VPP node from TG to VPP node and expect\ -| | ... | no response to be received on TG. -| | ... | [Ref] RFC4303. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC15: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity - different encryption and integrity alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel mode. -| | ... | [Ver] Send an ESP packet authenticated by integrity key and encrypted\ -| | ... | by encryption key different from integrity and encryption keys stored\ -| | ... | on VPP node from TG to VPP node and expect no response to be received\ -| | ... | on TG. -| | ... | [Ref] RFC4303. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto -| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC16: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel\ -| | ... | mode. Then update SA keys - use new keys. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node before\ -| | ... | and after SA keys update. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} -| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto -| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ -| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} -| | ... | ${new_encr_key} | ${new_auth_key} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${new_auth_key} -| | ... | ${tg_spi} | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC17: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different encryption alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel -| | ... | mode. Then update SA keys - use new keys. -| | ... | [Ver] Send an ESP packet encrypted by encryption key different from\ -| | ... | encryption key stored on VPP node from TG to VPP node and expect no\ -| | ... | response to be received on TG before and after SA keys update. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} -| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto -| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ -| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} -| | ... | ${new_encr_key} | ${new_auth_key} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${new_auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC18: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different integrity alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel\ -| | ... | mode. Then update SA keys - use new keys. -| | ... | [Ver] Send an ESP packet authenticated by integrity key different\ -| | ... | from integrity key stored on VPP node from TG to VPP node and expect\ -| | ... | no response to be received on TG before and after SA keys update. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} -| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto -| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ -| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} -| | ... | ${new_encr_key} | ${new_auth_key} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC19: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different encryption and integrity alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel\ -| | ... | mode. Then update SA keys - use new keys. -| | ... | [Ver] Send an ESP packet authenticated by integrity key and encrypted\ -| | ... | by encryption key different from integrity and encryption keys stored\ -| | ... | on VPP node from TG to VPP node and expect no response to be received\ -| | ... | on TG before and after SA keys update. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto -| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} -| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto -| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ -| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} -| | ... | ${new_encr_key} | ${new_auth_key} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -*** Keywords *** -| Get Second Random String -| | [Arguments] | ${req_alg} | ${req_type} -| | ${req_key_len}= | Run Keyword | Get ${req_type} Alg Key Len | ${req_alg} -| | ${key}= | Set Variable If | '${req_type}' == 'Crypto' | ${encr_key} -| | ... | '${req_type}' == 'Integ' | ${auth_key} -| | :FOR | ${index} | IN RANGE | 100 -| | | ${req_key}= | Generate Random String | ${req_key_len} -| | | Return From Keyword If | '${req_key}' != '${key}' | ${req_key} diff --git a/tests/func/ipsec/eth2p-ethip4ipsectpt-ip4base-func.robot b/tests/func/ipsec/eth2p-ethip4ipsectpt-ip4base-func.robot deleted file mode 100644 index 03753496ff..0000000000 --- a/tests/func/ipsec/eth2p-ethip4ipsectpt-ip4base-func.robot +++ /dev/null @@ -1,487 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/ipsec.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO -| ... | VM_ENV | HW_ENV | SKIP_VPP_PATCH -| Test Setup | Set up IPv4 IPSec functional test -| ... -| Test Teardown | Tear down IPSec functional test | ${dut_node} -| ... -| Documentation | *IPv4 IPsec transport mode test suite.* -| ... -| ... | *[Top] Network topologies:* TG-DUT1 2-node topology with one link\ -| ... | between nodes. -| ... | *[Cfg] DUT configuration:* On DUT1 create loopback interface, configure\ -| ... | loopback an physical interface IPv4 addresses, static ARP record, route\ -| ... | and IPsec manual keyed connection in transport mode. -| ... | *[Ver] TG verification:* ESP packet is sent from TG to DUT1. ESP packet\ -| ... | is received on TG from DUT1. -| ... | *[Ref] Applicable standard specifications:* RFC4303. - -*** Variables *** -| ${tg_spi}= | ${1000} -| ${dut_spi}= | ${1001} -| ${ESP_PROTO}= | ${50} -| ${tg_if_ip4}= | 192.168.100.2 -| ${dut_if_ip4}= | 192.168.100.3 -| ${tg_lo_ip4}= | 192.168.3.3 -| ${dut_lo_ip4}= | 192.168.4.4 -| ${ip4_plen}= | ${24} - -*** Test Cases *** -| TC01: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC02: VPP process ESP packet in Transport Mode with AES-CBC-192 encryption and SHA1-96 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-192 and integrity algorithm SHA1-96 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 192 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC03: VPP process ESP packet in Transport Mode with AES-CBC-256 encryption and SHA1-96 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-256 and integrity algorithm SHA1-96 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 256 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC04: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA-256-128 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-256-128 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA 256 128 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC05: VPP process ESP packet in Transport Mode with AES-CBC-192 encryption and SHA-256-128 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-256-128 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | ${encr_alg}= | Crypto Alg AES CBC 192 -| | ${auth_alg}= | Integ Alg SHA 256 128 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC06: VPP process ESP packet in Transport Mode with AES-CBC-256 encryption and SHA-256-128 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-256-128 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 256 -| | ${auth_alg}= | Integ Alg SHA 256 128 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC07: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA-384-192 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-384-192 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA 384 192 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC08: VPP process ESP packet in Transport Mode with AES-CBC-192 encryption and SHA-384-192 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-384-192 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 192 -| | ${auth_alg}= | Integ Alg SHA 384 192 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC09: VPP process ESP packet in Transport Mode with AES-CBC-256 encryption and SHA-384-192 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-384-192 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | ${encr_alg}= | Crypto Alg AES CBC 256 -| | ${auth_alg}= | Integ Alg SHA 384 192 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC10: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA-512-256 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-512-256 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA 512 256 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC11: VPP process ESP packet in Transport Mode with AES-CBC-192 encryption and SHA-512-256 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-512-256 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 192 -| | ${auth_alg}= | Integ Alg SHA 512 256 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC12: VPP process ESP packet in Transport Mode with AES-CBC-256 encryption and SHA-512-256 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-512-256 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | ${encr_alg}= | Crypto Alg AES CBC 256 -| | ${auth_alg}= | Integ Alg SHA 512 256 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - - -| TC13: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity - different encryption alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ -| | ... | mode. -| | ... | [Ver] Send an ESP packet encrypted by encryption key different from\ -| | ... | encryption key stored on VPP node from TG to VPP node and expect no\ -| | ... | response to be received on TG. -| | ... | [Ref] RFC4303. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC14: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity - different integrity alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ -| | ... | mode. -| | ... | [Ver] Send an ESP packet authenticated by integrity key different\ -| | ... | from integrity key stored on VPP node from TG to VPP node and expect\ -| | ... | no response to be received on TG. -| | ... | [Ref] RFC4303. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC15: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity - different encryption and integrity alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ -| | ... | mode. -| | ... | [Ver] Send an ESP packet authenticated by integrity key and encrypted\ -| | ... | by encryption key different from integrity and encryption keys stored\ -| | ... | on VPP node from TG to VPP node and expect no response to be received\ -| | ... | on TG. -| | ... | [Ref] RFC4303. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto -| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC16: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ -| | ... | mode. Then update SA keys - use new keys. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node before\ -| | ... | and after SA keys update. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} -| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto -| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ -| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} -| | ... | ${new_encr_key} | ${new_auth_key} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${new_auth_key} -| | ... | ${tg_spi} | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC17: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different encryption alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ -| | ... | mode. Then update SA keys - use new keys. -| | ... | [Ver] Send an ESP packet encrypted by encryption key different from\ -| | ... | encryption key stored on VPP node from TG to VPP node and expect no\ -| | ... | response to be received on TG before and after SA keys update. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} -| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto -| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ -| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} -| | ... | ${new_encr_key} | ${new_auth_key} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${new_auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC18: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different integrity alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ -| | ... | mode. Then update SA keys - use new keys. -| | ... | [Ver] Send an ESP packet authenticated by integrity key different\ -| | ... | from integrity key stored on VPP node from TG to VPP node and expect\ -| | ... | no response to be received on TG before and after SA keys update. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} -| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto -| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ -| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} -| | ... | ${new_encr_key} | ${new_auth_key} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC19: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different encryption and integrity alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ -| | ... | mode. Then update SA keys - use new keys. -| | ... | [Ver] Send an ESP packet authenticated by integrity key and encrypted\ -| | ... | by encryption key different from integrity and encryption keys stored\ -| | ... | on VPP node from TG to VPP node and expect no response to be received\ -| | ... | on TG before and after SA keys update. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto -| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} -| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto -| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ -| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} -| | ... | ${new_encr_key} | ${new_auth_key} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -*** Keywords *** -| Get Second Random String -| | [Arguments] | ${req_alg} | ${req_type} -| | ${req_key_len}= | Run Keyword | Get ${req_type} Alg Key Len | ${req_alg} -| | ${key}= | Set Variable If | '${req_type}' == 'Crypto' | ${encr_key} -| | ... | '${req_type}' == 'Integ' | ${auth_key} -| | :FOR | ${index} | IN RANGE | 100 -| | | ${req_key}= | Generate Random String | ${req_key_len} -| | | Return From Keyword If | '${req_key}' != '${key}' | ${req_key} diff --git a/tests/func/ipsec/eth2p-ethip6ipsectnl-ip6base-func.robot b/tests/func/ipsec/eth2p-ethip6ipsectnl-ip6base-func.robot deleted file mode 100644 index 03ecb344e5..0000000000 --- a/tests/func/ipsec/eth2p-ethip6ipsectnl-ip6base-func.robot +++ /dev/null @@ -1,523 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/ipsec.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO -| ... | VM_ENV | HW_ENV | SKIP_VPP_PATCH -| Test Setup | Set up IPv6 IPSec functional test -| ... -| Test Teardown | Tear down IPSec functional test | ${dut_node} -| ... -| Documentation | *IPv6 IPsec tunnel mode test suite.* -| ... -| ... | *[Top] Network topologies:* TG-DUT1 2-node topology with one link\ -| ... | between nodes. -| ... | *[Cfg] DUT configuration:* On DUT1 create loopback interface, configure -| ... | loopback an physical interface IPv6 addresses, static ARP record, route -| ... | and IPsec manual keyed connection in tunnel mode. -| ... | *[Ver] TG verification:* ESP packet is sent from TG to DUT1. ESP packet -| ... | is received on TG from DUT1. -| ... | *[Ref] Applicable standard specifications:* RFC4303. - -*** Variables *** -| ${tg_spi}= | ${1000} -| ${dut_spi}= | ${1001} -| ${ESP_PROTO}= | ${50} -| ${tg_if_ip6}= | 3ffe:5f::1 -| ${dut_if_ip6}= | 3ffe:5f::2 -| ${tg_lo_ip6}= | 3ffe:60::3 -| ${dut_lo_ip6}= | 3ffe:60::4 -| ${ip6_plen}= | ${64} -| ${ip6_plen_rt}= | ${128} - -*** Test Cases *** -| TC01: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC02: VPP process ESP packet in Tunnel Mode with AES-CBC-192 encryption and SHA1-96 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-192 and integrity algorithm SHA1-96 in tunnel mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 192 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC03: VPP process ESP packet in Tunnel Mode with AES-CBC-256 encryption and SHA1-96 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-256 and integrity algorithm SHA1-96 in tunnel mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 256 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC04: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA-256-128 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-256-128 in tunnel\ -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA 256 128 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC05: VPP process ESP packet in Tunnel Mode with AES-CBC-192 encryption and SHA-256-128 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-256-128 in tunnel\ -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | ${encr_alg}= | Crypto Alg AES CBC 192 -| | ${auth_alg}= | Integ Alg SHA 256 128 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC06: VPP process ESP packet in Tunnel Mode with AES-CBC-256 encryption and SHA-256-128 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-256-128 in tunnel\ -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 256 -| | ${auth_alg}= | Integ Alg SHA 256 128 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC07: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA-384-192 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-384-192 in tunnel\ -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA 384 192 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC08: VPP process ESP packet in Tunnel Mode with AES-CBC-192 encryption and SHA-384-192 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-384-192 in tunnel\ -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 192 -| | ${auth_alg}= | Integ Alg SHA 384 192 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC09: VPP process ESP packet in Tunnel Mode with AES-CBC-256 encryption and SHA-384-192 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-384-192 in tunnel\ -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | ${encr_alg}= | Crypto Alg AES CBC 256 -| | ${auth_alg}= | Integ Alg SHA 384 192 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC10: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA-512-256 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-512-256 in tunnel\ -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA 512 256 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC11: VPP process ESP packet in Tunnel Mode with AES-CBC-192 encryption and SHA-512-256 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-512-256 in tunnel\ -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 192 -| | ${auth_alg}= | Integ Alg SHA 512 256 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC12: VPP process ESP packet in Tunnel Mode with AES-CBC-256 encryption and SHA-512-256 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-512-256 in tunnel\ -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | ${encr_alg}= | Crypto Alg AES CBC 256 -| | ${auth_alg}= | Integ Alg SHA 512 256 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC13: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity - different encryption alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel mode. -| | ... | [Ver] Send an ESP packet encrypted by encryption key different from\ -| | ... | encryption key stored on VPP node from TG to VPP node and expect no\ -| | ... | response to be received on TG. -| | ... | [Ref] RFC4303. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC14: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity - different integrity alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel mode. -| | ... | [Ver] Send an ESP packet authenticated by integrity key different\ -| | ... | from integrity key stored on VPP node from TG to VPP node and expect\ -| | ... | no response to be received on TG. -| | ... | [Ref] RFC4303. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC15: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity - different encryption and integrity alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel mode. -| | ... | [Ver] Send an ESP packet authenticated by integrity key and encrypted\ -| | ... | by encryption key different from integrity and encryption keys stored\ -| | ... | on VPP node from TG to VPP node and expect no response to be received\ -| | ... | on TG. -| | ... | [Ref] RFC4303. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto -| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC16: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel\ -| | ... | mode. Then update SA keys - use new keys. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node before\ -| | ... | and after SA keys update. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} -| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto -| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ -| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} -| | ... | ${new_encr_key} | ${new_auth_key} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${new_auth_key} -| | ... | ${tg_spi} | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC17: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different encryption alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel -| | ... | mode. Then update SA keys - use new keys. -| | ... | [Ver] Send an ESP packet encrypted by encryption key different from\ -| | ... | encryption key stored on VPP node from TG to VPP node and expect no\ -| | ... | response to be received on TG before and after SA keys update. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} -| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto -| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ -| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} -| | ... | ${new_encr_key} | ${new_auth_key} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${new_auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC18: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different integrity alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel\ -| | ... | mode. Then update SA keys - use new keys. -| | ... | [Ver] Send an ESP packet authenticated by integrity key different\ -| | ... | from integrity key stored on VPP node from TG to VPP node and expect\ -| | ... | no response to be received on TG before and after SA keys update. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} -| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto -| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ -| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} -| | ... | ${new_encr_key} | ${new_auth_key} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -| TC19: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different encryption and integrity alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel\ -| | ... | mode. Then update SA keys - use new keys. -| | ... | [Ver] Send an ESP packet authenticated by integrity key and encrypted\ -| | ... | by encryption key different from integrity and encryption keys stored\ -| | ... | on VPP node from TG to VPP node and expect no response to be received\ -| | ... | on TG before and after SA keys update. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} -| | ... | ${dut_tun_ip} | ${tg_tun_ip} -| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto -| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} -| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto -| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ -| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} -| | ... | ${new_encr_key} | ${new_auth_key} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} -| | ... | ${dut_tun_ip} - -*** Keywords *** -| Get Second Random String -| | [Arguments] | ${req_alg} | ${req_type} -| | ${req_key_len}= | Run Keyword | Get ${req_type} Alg Key Len | ${req_alg} -| | ${key}= | Set Variable If | '${req_type}' == 'Crypto' | ${encr_key} -| | ... | '${req_type}' == 'Integ' | ${auth_key} -| | :FOR | ${index} | IN RANGE | 100 -| | | ${req_key}= | Generate Random String | ${req_key_len} -| | | Return From Keyword If | '${req_key}' != '${key}' | ${req_key} diff --git a/tests/func/ipsec/eth2p-ethip6ipsectpt-ip6base-func.robot b/tests/func/ipsec/eth2p-ethip6ipsectpt-ip6base-func.robot deleted file mode 100644 index 9c5ab83d40..0000000000 --- a/tests/func/ipsec/eth2p-ethip6ipsectpt-ip6base-func.robot +++ /dev/null @@ -1,487 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/ipsec.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO -| ... | VM_ENV | HW_ENV | SKIP_VPP_PATCH -| Test Setup | Set up IPv6 IPSec functional test -| ... -| Test Teardown | Tear down IPSec functional test | ${dut_node} -| ... -| Documentation | *IPv6 IPsec transport mode test suite.* -| ... -| ... | *[Top] Network topologies:* TG-DUT1 2-node topology with one link\ -| ... | between nodes. -| ... | *[Cfg] DUT configuration:* On DUT1 create loopback interface, configure -| ... | loopback an physical interface IPv6 addresses, static ARP record, route -| ... | and IPsec manual keyed connection in transport mode. -| ... | *[Ver] TG verification:* ESP packet is sent from TG to DUT1. ESP packet -| ... | is received on TG from DUT1. -| ... | *[Ref] Applicable standard specifications:* RFC4303. - -*** Variables *** -| ${tg_spi}= | ${1000} -| ${dut_spi}= | ${1001} -| ${ESP_PROTO}= | ${50} -| ${tg_if_ip6}= | 3ffe:5f::1 -| ${dut_if_ip6}= | 3ffe:5f::2 -| ${tg_lo_ip6}= | 3ffe:60::3 -| ${dut_lo_ip6}= | 3ffe:60::4 -| ${ip6_plen}= | ${64} -| ${ip6_plen_rt}= | ${128} - -*** Test Cases *** -| TC01: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC02: VPP process ESP packet in Transport Mode with AES-CBC-192 encryption and SHA1-96 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-192 and integrity algorithm SHA1-96 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 192 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC03: VPP process ESP packet in Transport Mode with AES-CBC-256 encryption and SHA1-96 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-256 and integrity algorithm SHA1-96 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 256 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC04: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA-256-128 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-256-128 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA 256 128 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC05: VPP process ESP packet in Transport Mode with AES-CBC-192 encryption and SHA-256-128 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-256-128 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | ${encr_alg}= | Crypto Alg AES CBC 192 -| | ${auth_alg}= | Integ Alg SHA 256 128 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC06: VPP process ESP packet in Transport Mode with AES-CBC-256 encryption and SHA-256-128 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-256-128 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 256 -| | ${auth_alg}= | Integ Alg SHA 256 128 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC07: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA-384-192 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-384-192 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA 384 192 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC08: VPP process ESP packet in Transport Mode with AES-CBC-192 encryption and SHA-384-192 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-384-192 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 192 -| | ${auth_alg}= | Integ Alg SHA 384 192 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC09: VPP process ESP packet in Transport Mode with AES-CBC-256 encryption and SHA-384-192 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-384-192 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | ${encr_alg}= | Crypto Alg AES CBC 256 -| | ${auth_alg}= | Integ Alg SHA 384 192 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC10: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA-512-256 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-512-256 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA 512 256 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC11: VPP process ESP packet in Transport Mode with AES-CBC-192 encryption and SHA-512-256 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-512-256 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | [Tags] | SKIP_PATCH -| | ${encr_alg}= | Crypto Alg AES CBC 192 -| | ${auth_alg}= | Integ Alg SHA 512 256 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC12: VPP process ESP packet in Transport Mode with AES-CBC-256 encryption and SHA-512-256 integrity -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-512-256 in transport -| | ... | mode. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node. -| | ${encr_alg}= | Crypto Alg AES CBC 256 -| | ${auth_alg}= | Integ Alg SHA 512 256 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC13: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity - different encryption alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ -| | ... | mode. -| | ... | [Ver] Send an ESP packet encrypted by encryption key different from\ -| | ... | encryption key stored on VPP node from TG to VPP node and expect no\ -| | ... | response to be received on TG. -| | ... | [Ref] RFC4303. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC14: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity - different integrity alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ -| | ... | mode. -| | ... | [Ver] Send an ESP packet authenticated by integrity key different\ -| | ... | from integrity key stored on VPP node from TG to VPP node and expect\ -| | ... | no response to be received on TG. -| | ... | [Ref] RFC4303. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC15: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity - different encryption and integrity alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ -| | ... | mode. -| | ... | [Ver] Send an ESP packet authenticated by integrity key and encrypted\ -| | ... | by encryption key different from integrity and encryption keys stored\ -| | ... | on VPP node from TG to VPP node and expect no response to be received\ -| | ... | on TG. -| | ... | [Ref] RFC4303. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto -| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC16: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ -| | ... | mode. Then update SA keys - use new keys. -| | ... | [Ver] Send and receive ESP packet between TG and VPP node before\ -| | ... | and after SA keys update. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} -| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto -| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ -| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} -| | ... | ${new_encr_key} | ${new_auth_key} -| | Then Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${new_auth_key} -| | ... | ${tg_spi} | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC17: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different encryption alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ -| | ... | mode. Then update SA keys - use new keys. -| | ... | [Ver] Send an ESP packet encrypted by encryption key different from\ -| | ... | encryption key stored on VPP node from TG to VPP node and expect no\ -| | ... | response to be received on TG before and after SA keys update. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} -| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto -| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ -| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} -| | ... | ${new_encr_key} | ${new_auth_key} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${new_auth_key} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC18: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different integrity alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ -| | ... | mode. Then update SA keys - use new keys. -| | ... | [Ver] Send an ESP packet authenticated by integrity key different\ -| | ... | from integrity key stored on VPP node from TG to VPP node and expect\ -| | ... | no response to be received on TG before and after SA keys update. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} -| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto -| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ -| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} -| | ... | ${new_encr_key} | ${new_auth_key} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -| TC19: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different encryption and integrity alogrithms used -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC4303. -| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ -| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ -| | ... | mode. Then update SA keys - use new keys. -| | ... | [Ver] Send an ESP packet authenticated by integrity key and encrypted\ -| | ... | by encryption key different from integrity and encryption keys stored\ -| | ... | on VPP node from TG to VPP node and expect no response to be received\ -| | ... | on TG before and after SA keys update. -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} -| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} -| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto -| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} -| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto -| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ -| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} -| | ... | ${new_encr_key} | ${new_auth_key} -| | Then Run Keyword And Expect Error | ESP packet Rx timeout -| | ... | Send IPsec Packet and verify ESP encapsulation in received packet -| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} -| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} -| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} - -*** Keywords *** -| Get Second Random String -| | [Arguments] | ${req_alg} | ${req_type} -| | ${req_key_len}= | Run Keyword | Get ${req_type} Alg Key Len | ${req_alg} -| | ${key}= | Set Variable If | '${req_type}' == 'Crypto' | ${encr_key} -| | ... | '${req_type}' == 'Integ' | ${auth_key} -| | :FOR | ${index} | IN RANGE | 100 -| | | ${req_key}= | Generate Random String | ${req_key_len} -| | | Return From Keyword If | '${req_key}' != '${key}' | ${req_key} diff --git a/tests/func/ipv4/eth2p-ethip4-ip4base-eth-2vhost-1vm.robot b/tests/func/ipv4/eth2p-ethip4-ip4base-eth-2vhost-1vm.robot deleted file mode 100644 index d3bf4b517d..0000000000 --- a/tests/func/ipv4/eth2p-ethip4-ip4base-eth-2vhost-1vm.robot +++ /dev/null @@ -1,98 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.VPPUtil -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.VhostUser -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/vrf.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Force Tags | VM_ENV | HW_ENV | 3_NODE_DOUBLE_LINK_TOPO -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *IPv4 routing test cases with vhost user interface* -| ... -| ... | RFC791 IPv4, RFC826 ARP, RFC792 ICMPv4. Encapsulations: Eth-IPv4-ICMPv4 -| ... | on links TG=DUT1. IPv4 routing tests use circular 2-node -| ... | topology TG - DUT1 - TG with two link between the nodes. DUT is -| ... | configured with IPv4 routing and static routes. Test sends packets -| ... | by TG on links to DUT and received on TG link on the other side of -| ... | circular topology. On receive TG verifies packets IPv4 src-addr, -| ... | dst-addr and MAC addresses. - -*** Variables *** -| ${net1}= | 10.0.1.0 -| ${net3}= | 10.0.3.0 -| ${net1_ip1}= | 10.0.1.1 -| ${net1_ip2}= | 10.0.1.2 -| ${net2_ip1}= | 10.0.2.1 -| ${net2_ip2}= | 10.0.2.2 -| ${net3_ip1}= | 10.0.3.1 -| ${net3_ip2}= | 10.0.3.2 -| ${prefix_length}= | 24 -| ${fib_table_2}= | 20 -| ${sock1}= | /tmp/sock1 -| ${sock2}= | /tmp/sock2 - -*** Test Cases *** -| TC01: IPv4 forward via vhost to another VRF -| | [Documentation] -| | ... | Test uses VRF to route IPv4 traffic through 2 vhost user interfaces. -| | ... | Both have IP addresses from same network. On VM is set bridge to pass -| | ... | packet from a one vhost user interface to another one. -| | [Teardown] | Run Keywords -| | ... | Stop and clear QEMU | ${dut_node} | ${vm_node} | AND -| | ... | Tear down functional test -| | -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | ${vhost1}= | And Vpp Create Vhost User Interface | ${dut_node} | ${sock1} -| | ${vhost2}= | And Vpp Create Vhost User Interface | ${dut_node} | ${sock2} -| | And Set Interface State | ${dut_node} | ${vhost1} | up -| | And Set Interface State | ${dut_node} | ${vhost2} | up -| | And Assign Interface To Fib Table | ${dut_node} -| | ... | ${vhost2} | ${fib_table_2} -| | And Assign Interface To Fib Table | ${dut_node} -| | ... | ${dut_to_tg_if2} | ${fib_table_2} -| | And Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${net1_ip1} | ${prefix_length} -| | ... | ${dut_node} | ${vhost1} | ${net2_ip1} | ${prefix_length} -| | ... | ${dut_node} | ${vhost2} | ${net2_ip2} | ${prefix_length} -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${net3_ip1} | ${prefix_length} -| | ${vhost2_mac}= | And Get Vhost User Mac By SW Index -| | ... | ${dut_node} | ${vhost2} -| | And Vpp Route Add | ${dut_node} | ${net3} | 24 | ${net2_ip2} -| | ... | ${vhost1} | resolve_attempts=${NONE} | count=${NONE} -| | And Vpp Route Add | ${dut_node} | ${net1} | 24 | ${net2_ip1} -| | ... | ${vhost2} | resolve_attempts=${NONE} | count=${NONE} -| | ... | vrf=${fib_table_2} -| | Add IP Neighbor | ${dut_node} | ${vhost1} | ${net2_ip2} | ${vhost2_mac} -| | Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${net3_ip2} -| | ... | ${tg_to_dut_if2_mac} -| | When Configure VM for vhost L2BD forwarding -| | ... | ${dut_node} | ${sock1} | ${sock2} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${net1_ip2} | ${net3_ip2} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} diff --git a/tests/func/ipv4/eth2p-ethip4-ip4base-func.robot b/tests/func/ipv4/eth2p-ethip4-ip4base-func.robot deleted file mode 100644 index eadcdee43d..0000000000 --- a/tests/func/ipv4/eth2p-ethip4-ip4base-func.robot +++ /dev/null @@ -1,138 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/ipv4.robot -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | SKIP_VPP_PATCH -| Suite Setup | Run Keywords -| ... | Configure all DUTs before test | AND -| ... | Configure all TGs for traffic script | AND -| ... | Update All Interface Data On All Nodes | ${nodes} | AND -| ... | Configure DUT nodes for IPv4 testing -| Test Setup | Run Keywords | Save VPP PIDs | AND -| ... | Reset VAT History On All DUTs | ${nodes} | AND -| ... | Clear interface counters on all vpp nodes in topology | ${nodes} -| Test Teardown | Run Keywords -| ... | Show packet trace on all DUTs | ${nodes} | AND -| ... | Show VAT History On All DUTs | ${nodes} | AND -| ... | Verify VPP PID in Teardown -| Documentation | *IPv4 routing test cases* -| ... -| ... | RFC791 IPv4, RFC826 ARP, RFC792 ICMPv4. Encapsulations: Eth-IPv4-ICMPv4 -| ... | on links TG-DUT1, TG-DUT2, DUT1-DUT2. IPv4 routing tests use circular -| ... | 3-node topology TG - DUT1 - DUT2 - TG with one link between the nodes. -| ... | DUT1 and DUT2 are configured with IPv4 routing and static routes. Test -| ... | ICMPv4 Echo Request packets are sent in both directions by TG on links -| ... | to DUT1 and DUT2 and received on TG links on the other side of circular -| ... | topology. On receive TG verifies packets IPv4 src-addr, dst-addr and MAC -| ... | addresses. - -*** Test Cases *** - -| TC01: DUT replies to ICMPv4 Echo Req to its ingress interface -| | [Documentation] -| | ... | Make TG send ICMPv4 Echo Req to DUT ingress interface. Make TG\ -| | ... | verify ICMP Echo Reply is correct. -| | [Tags] | VM_ENV -| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} -| | Compute Path -| | ${src_port} | ${src_node}= | First Interface -| | ${dst_port} | ${dst_node}= | Last Interface -| | ${hops}= | Set Variable | ${0} -| | Route traffic from interface '${src_port}' on node '${src_node}' to interface '${dst_port}' on node '${dst_node}' '${hops}' hops away using IPv4 - -| TC02: DUT routes IPv4 to its egress interface -| | [Tags] | VM_ENV -| | [Documentation] -| | ... | Make TG send ICMPv4 Echo Req towards DUT1 egress interface\ -| | ... | connected to DUT2. Make TG verify ICMPv4 Echo Reply is correct. -| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} -| | Compute Path -| | ${src_port} | ${src_node}= | First Interface -| | ${dst_port} | ${dst_node}= | Last Egress Interface -| | ${hops}= | Set Variable | ${0} -| | Route traffic from interface '${src_port}' on node '${src_node}' to interface '${dst_port}' on node '${dst_node}' '${hops}' hops away using IPv4 - -| TC03: DUT1 routes IPv4 to DUT2 ingress interface -| | [Tags] | VM_ENV -| | [Documentation] -| | ... | Make TG send ICMPv4 Echo Req towards DUT2 ingress interface\ -| | ... | connected to DUT1. Make TG verify ICMPv4 Echo Reply is correct. -| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} -| | Compute Path -| | ${src_port} | ${src_node}= | First Interface -| | ${dst_port} | ${dst_node}= | Last Interface -| | ${hops}= | Set Variable | ${1} -| | Route traffic from interface '${src_port}' on node '${src_node}' to interface '${dst_port}' on node '${dst_node}' '${hops}' hops away using IPv4 - -| TC04: DUT1 routes IPv4 to DUT2 egress interface -| | [Tags] | VM_ENV -| | [Documentation] -| | ... | Make TG send ICMPv4 Echo Req towards DUT2 egress interface\ -| | ... | connected to TG. Make TG verify ICMPv4 Echo Reply is correct. -| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | Compute Path -| | ${src_port} | ${src_node}= | First Interface -| | ${dst_port} | ${dst_node}= | Last Egress Interface -| | ${hops}= | Set Variable | ${1} -| | Route traffic from interface '${src_port}' on node '${src_node}' to interface '${dst_port}' on node '${dst_node}' '${hops}' hops away using IPv4 - -| TC05: DUT1 and DUT2 route IPv4 between TG interfaces -| | [Tags] | VM_ENV -| | [Documentation] -| | ... | Make TG send ICMPv4 Echo Req between its interfaces across DUT1\ -| | ... | and DUT2. Make TG verify ICMPv4 Echo Replies are correct. -| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | Compute Path -| | ${src_port} | ${src_node}= | First Interface -| | ${dst_port} | ${dst_node}= | Last Interface -| | ${hops}= | Set Variable | ${2} -| | Route traffic from interface '${src_port}' on node '${src_node}' to interface '${dst_port}' on node '${dst_node}' '${hops}' hops away using IPv4 - -| TC06: DUT replies to ICMPv4 Echo Reqs with size 64B-to-1500B-incr-1B -| | [Tags] | VM_ENV -| | [Documentation] -| | ... | Make TG send ICMPv4 Echo Reqs to DUT ingress interface,\ -| | ... | incrementating frame size from 64B to 1500B with increment step -| | ... | of 1Byte. Make TG verify ICMP Echo Replies are correct. -| | Execute IPv4 ICMP echo sweep | ${nodes['TG']} | ${nodes['DUT1']} | 0 | 1452 | 1 - -| TC07: DUT replies to ICMPv4 Echo Reqs with size 1500B-to-9000B-incr-10B -| | [Documentation] -| | ... | Make TG send ICMPv4 Echo Reqs to DUT ingress interface,\ -| | ... | incrementating frame size from 1500B to 9000B with increment -| | ... | step of 10Bytes. Make TG verify ICMPv4 Echo Replies are correct. -| | [Setup] | Configure MTU on TG based on MTU on DUT | ${nodes['TG']} | ${nodes['DUT1']} -| | [Teardown] | Run keywords -| | ... | Set default Ethernet MTU on all interfaces on node | ${nodes['TG']} -| | ... | AND | Verify VPP PID in Teardown -| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} -| | Compute Path -| | ${dut_port} | ${dut_node}= | Last Interface -| | ${mtu}= | Get Interface MTU | ${dut_node} | ${dut_port} -| | # ICMP payload size is frame size minus size of Ehternet header, FCS, -| | # IPv4 header and ICMP header -| | ${end_size}= | Evaluate | ${mtu} - 14 - 4 - 20 - 8 -| | Run Keyword If | ${mtu} > 1518 -| | ... | Execute IPv4 ICMP echo sweep | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | 1452 | ${end_size} | 10 - -| TC08: DUT replies to ARP request -| | [Tags] | VM_ENV | SKIP_VPP_PATCH -| | [Documentation] -| | ... | Make TG send ARP Request to DUT and verify ARP Reply is correct.\ -| | Send ARP request and verify response | ${nodes['TG']} | ${nodes['DUT1']} diff --git a/tests/func/ipv4/eth2p-ethip4-ip4base-ip4arp-func.robot b/tests/func/ipv4/eth2p-ethip4-ip4base-ip4arp-func.robot deleted file mode 100644 index f6b551e7a3..0000000000 --- a/tests/func/ipv4/eth2p-ethip4-ip4base-ip4arp-func.robot +++ /dev/null @@ -1,82 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/counters.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/l2_xconnect.robot -| Resource | resources/libraries/robot/traffic.robot -| Library | resources.libraries.python.Trace -| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *IPv4 ARP test cases* -| ... -| ... | RFC826 ARP: Eth-IPv4 and Eth-ARP on links TG-DUT1, TG-DUT2, DUT1-DUT2: -| ... | IPv4 ARP tests use 3-node topology TG - DUT1 - DUT2 - TG with one link -| ... | between the nodes. DUT1 and DUT2 are configured with IPv4 routing and -| ... | static routes. DUT ARP functionality is tested by making TG send ICMPv4 -| ... | Echo Requests towards its other interface via DUT1 and DUT2. - -*** Variables *** -| ${dut1_to_tg_ip}= | 192.168.1.1 -| ${dut1_to_dut2_ip}= | 192.168.2.1 -| ${dut1_to_dut2_ip_GW}= | 192.168.2.2 -| ${test_dst_ip}= | 32.0.0.1 -| ${test_src_ip}= | 16.0.0.1 -| ${prefix_length}= | 24 - -*** Test Cases *** -| TC01: DUT sends ARP Request for unresolved locally connected IPv4 address -| | [Documentation] -| | ... | Make TG send test packet destined to IPv4 address of its other\ -| | ... | interface connected to DUT2. Make TG verify DUT2 sends ARP -| | ... | Request for locally connected TG IPv4 address. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | When Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | Then Send packet and verify ARP request | ${tg_node} -| | ... | ${test_src_ip} | ${dut1_to_dut2_ip_GW} | ${tg_to_dut1} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} | ${dut1_to_dut2_mac} -| | ... | ${dut1_to_dut2_ip} | ${dut1_to_dut2_ip_GW} - -| TC02: DUT sends ARP Request for route next hop IPv4 address -| | [Documentation] | -| | ... | Make TG send test packet destined to IPv4 address matching\ -| | ... | static route on DUT2. Make TG verify DUT2 sends ARP Request for -| | ... | next hop of the static route. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | When Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} | resolve_attempts=${NONE} -| | Then Send packet and verify ARP request | ${tg_node} -| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} | ${dut1_to_dut2_mac} -| | ... | ${dut1_to_dut2_ip} | ${dut1_to_dut2_ip_GW} diff --git a/tests/func/ipv4/eth2p-ethip4-ip4base-ip4ecmp-func.robot b/tests/func/ipv4/eth2p-ethip4-ip4base-ip4ecmp-func.robot deleted file mode 100644 index 8c707fc18d..0000000000 --- a/tests/func/ipv4/eth2p-ethip4-ip4base-ip4ecmp-func.robot +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/counters.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/traffic.robot -| Library | resources.libraries.python.Trace -| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *Ipv4 Multipath routing test cases* -| ... -| ... | *[Top] Network topologies:* TG=DUT 2-node topology with two links\ -| ... | between nodes. -| ... | *[Cfg] DUT configuration:* On DUT configure interfaces IPv4 adresses,\ -| ... | and multipath routing. -| ... | *[Ver] TG verification:* Test packets are sent from TG on the first\ -| ... | link to DUT. Packet is received on TG on the second link from DUT1. - - -*** Variables *** -| ${ip_1}= | 192.168.1.1 -| ${ip_2}= | 192.168.2.1 -| ${test_dst_ip}= | 32.0.0.1 -| ${test_src_ip}= | 16.0.0.1 -| ${prefix_length}= | 24 -| ${neighbor_1_ip}= | 192.168.2.10 -| ${neighbor_1_mac}= | 02:00:00:00:00:02 -| ${neighbor_2_ip}= | 192.168.2.20 -| ${neighbor_2_mac}= | 02:00:00:00:00:03 - -*** Test Cases *** -| TC01: IPv4 Equal-cost multipath routing -| | [Documentation] -| | ... | [Top] TG=DUT -| | ... | [Cfg] On DUT configure multipath routing wiht two equal-cost paths. -| | ... | [Ver] TG sends 100 IPv4 ICMP packets traffic on the first link to\ -| | ... | DUT. On second link to TG verify if traffic is divided into two paths. -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And Set Interface Address | ${dut_node} -| | ... | ${dut_to_tg_if2} | ${ip_1} | ${prefix_length} -| | And Set Interface Address | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${ip_2} | ${prefix_length} -| | And Add Arp On Dut -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${neighbor_1_ip} | ${neighbor_1_mac} -| | And Add Arp On Dut -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${neighbor_2_ip} | ${neighbor_2_mac} -| | When Vpp Route Add -| | ... | ${dut_node} | ${test_dst_ip} | ${prefix_length} | ${neighbor_1_ip} -| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | multipath=${TRUE} -| | And Vpp Route Add -| | ... | ${dut_node} | ${test_dst_ip} | ${prefix_length} | ${neighbor_2_ip} -| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | multipath=${TRUE} -| | Then Send packets and verify multipath routing | ${tg_node} -| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1} | ${test_src_ip} | ${test_dst_ip} -| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} | ${dut_to_tg_if1_mac} -| | ... | ${neighbor_1_mac} | ${neighbor_2_mac} diff --git a/tests/func/ipv4/eth2p-ethip4-ip4base-ip4proxyarp-func.robot b/tests/func/ipv4/eth2p-ethip4-ip4base-ip4proxyarp-func.robot deleted file mode 100644 index afe4581b16..0000000000 --- a/tests/func/ipv4/eth2p-ethip4-ip4base-ip4proxyarp-func.robot +++ /dev/null @@ -1,156 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/traffic.robot -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.ProxyArp -| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *RFC1027 Proxy ARP test cases* -| ... -| ... | *[Top] Network topologies:* TG-DUT1 2-node topology with -| ... | single link between nodes. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with Proxy ARP -| ... | *[Ver] TG verification:* Test ARP Request packet is sent -| ... | from TG on link to DUT1; on receive TG verifies ARP reply packet -| ... | for correctness and their IPv4 src-addr, dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC1027. - -*** Variables *** -| ${tg_to_dut1_ip}= | 10.0.0.100 -| ${dut1_to_tg_ip}= | 10.0.0.1 -| ${prefix_length}= | 24 -| ${lo_ip4_addr}= | 192.168.1.2 -| ${hi_ip4_addr}= | 192.168.1.10 -| ${pass_test_ip}= | 192.168.1.5 -| ${pass_test_lo_ip}= | 192.168.1.2 -| ${pass_test_hi_ip}= | 192.168.1.10 -| ${fail_test_lo_ip}= | 192.168.1.1 -| ${fail_test_hi_ip}= | 192.168.1.11 - -*** Test Cases *** -| TC01: DUT sends ARP reply on behalf of another machine from the IP range -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC1027. -| | ... | [Cfg] On DUT1 configure interface IPv4 address and proxy ARP -| | ... | for IP range. -| | ... | [Ver] Make TG send ARP request to DUT1 interface, -| | ... | verify if DUT1 sends correct ARP reply on behalf of machine which -| | ... | IP is in range. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${dut1_to_tg_name}= | Get interface name | ${dut1_node} | ${dut1_to_tg} -| | ${tg_to_dut1_name}= | Get interface name | ${tg_node} | ${tg_to_dut1} -| | When Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Vpp Add Proxy ARP | ${dut1_node} | ${lo_ip4_addr} | ${hi_ip4_addr} -| | And Vpp Proxy ARP Interface Enable | ${dut1_node} | ${dut1_to_tg_name} -| | Then Send ARP Request | ${tg_node} | ${tg_to_dut1_name} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut1_ip} | ${pass_test_ip} - -| TC02: DUT sends ARP reply on behalf of another machine from beginning of the IP range -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC1027. -| | ... | [Cfg] On DUT1 configure interface IPv4 address and proxy ARP -| | ... | for IP range. -| | ... | [Ver] Make TG send ARP request to DUT1 interface, -| | ... | verify if DUT1 sends correct ARP reply on behalf of machine which -| | ... | IP is from beginning of the IP range. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${dut1_to_tg_name}= | Get interface name | ${dut1_node} | ${dut1_to_tg} -| | ${tg_to_dut1_name}= | Get interface name | ${tg_node} | ${tg_to_dut1} -| | When Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Vpp Add Proxy ARP | ${dut1_node} | ${lo_ip4_addr} | ${hi_ip4_addr} -| | And Vpp Proxy ARP Interface Enable | ${dut1_node} | ${dut1_to_tg_name} -| | Then Send ARP Request | ${tg_node} | ${tg_to_dut1_name} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut1_ip} | ${pass_test_lo_ip} - -| TC03: DUT sends ARP reply on behalf of another machine from end of the IP range -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC1027. -| | ... | [Cfg] On DUT1 configure interface IPv4 address and proxy ARP -| | ... | for IP range. -| | ... | [Ver] Make TG send ARP request to DUT1 interface, -| | ... | verify if DUT1 sends correct ARP reply on behalf of machine which -| | ... | IP is from end of the IP range. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${dut1_to_tg_name}= | Get interface name | ${dut1_node} | ${dut1_to_tg} -| | ${tg_to_dut1_name}= | Get interface name | ${tg_node} | ${tg_to_dut1} -| | When Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Vpp Add Proxy ARP | ${dut1_node} | ${lo_ip4_addr} | ${hi_ip4_addr} -| | And Vpp Proxy ARP Interface Enable | ${dut1_node} | ${dut1_to_tg_name} -| | Then Send ARP Request | ${tg_node} | ${tg_to_dut1_name} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut1_ip} | ${pass_test_hi_ip} - -| TC04: DUT does not send ARP reply on behalf of another machine from below of the IP range -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC1027. -| | ... | [Cfg] On DUT1 configure interface IPv4 address and proxy ARP -| | ... | for IP range. -| | ... | [Ver] Make TG send ARP request to DUT1 interface, -| | ... | verify if DUT1 does not send ARP reply on behalf of machine which -| | ... | IP is from below of the IP range. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${dut1_to_tg_name}= | Get interface name | ${dut1_node} | ${dut1_to_tg} -| | ${tg_to_dut1_name}= | Get interface name | ${tg_node} | ${tg_to_dut1} -| | When Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Vpp Add Proxy ARP | ${dut1_node} | ${lo_ip4_addr} | ${hi_ip4_addr} -| | And Vpp Proxy ARP Interface Enable | ${dut1_node} | ${dut1_to_tg_name} -| | Then ARP request should fail | ${tg_node} | ${tg_to_dut1_name} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut1_ip} | ${fail_test_lo_ip} - -| TC05: DUT does not send ARP reply on behalf of another machine from above of the IP range -| | [Documentation] -| | ... | [Top] TG-DUT1. -| | ... | [Ref] RFC1027. -| | ... | [Cfg] On DUT1 configure interface IPv4 address and proxy ARP -| | ... | for IP range. -| | ... | [Ver] Make TG send ARP request to DUT1 interface, -| | ... | verify if DUT1 does not send ARP reply on behalf of machine which -| | ... | IP is from above of the IP range. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${dut1_to_tg_name}= | Get interface name | ${dut1_node} | ${dut1_to_tg} -| | ${tg_to_dut1_name}= | Get interface name | ${tg_node} | ${tg_to_dut1} -| | When Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Vpp Add Proxy ARP | ${dut1_node} | ${lo_ip4_addr} | ${hi_ip4_addr} -| | And Vpp Proxy ARP Interface Enable | ${dut1_node} | ${dut1_to_tg_name} -| | Then ARP request should fail | ${tg_node} | ${tg_to_dut1_name} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut1_ip} | ${fail_test_hi_ip} diff --git a/tests/func/ipv6/eth2p-ethip6-ip6base-func.robot b/tests/func/ipv6/eth2p-ethip6-ip6base-func.robot deleted file mode 100644 index 88c739dd27..0000000000 --- a/tests/func/ipv6/eth2p-ethip6-ip6base-func.robot +++ /dev/null @@ -1,120 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.Trace -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/counters.robot -| Resource | resources/libraries/robot/default.robot -| Variables | resources/libraries/python/IPv6NodesAddr.py | ${nodes} -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | SKIP_VPP_PATCH -| Suite Setup | Run Keywords -| ... | Configure IPv6 on all DUTs in topology | ${nodes} | ${nodes_ipv6_addr} | AND -| ... | Suppress ICMPv6 router advertisement message | ${nodes} | AND -| ... | Configure IPv6 routing on all DUTs | ${nodes} | ${nodes_ipv6_addr} | AND -| ... | Configure all TGs for traffic script -| Test Setup | Run Keywords | Save VPP PIDs | AND -| ... | Reset VAT History On All DUTs | ${nodes} | AND -| ... | Clear interface counters on all vpp nodes in topology | ${nodes} -| Test Teardown | Run Keywords -| ... | Show packet trace on all DUTs | ${nodes} | AND -| ... | Show VAT History On All DUTs | ${nodes} | AND -| ... | Verify VPP PID in Teardown -| Documentation | *IPv6 routing test cases* -| ... -| ... | RFC2460 IPv6, RFC4443 ICMPv6, RFC4861 Neighbor Discovery. -| ... | Encapsulations: Eth-IPv6-ICMPv6 on links TG-DUT1, TG-DUT2, DUT1-DUT2; -| ... | Eth-IPv6-NS/NA on links TG-DUT. IPv6 routing tests use circular 3-node -| ... | topology TG - DUT1 - DUT2 - TG with one link between the nodes. DUT1 and -| ... | DUT2 are configured with IPv6 routing and static routes. Test ICMPv6 -| ... | Echo Request packets are sent in both directions by TG on links to DUT1 -| ... | and DUT2 and received on TG links on the other side of circular -| ... | topology. On receive TG verifies packets IPv6 src-addr, dst-addr and MAC -| ... | addresses. - -*** Test Cases *** -| TC01: DUT replies to ICMPv6 Echo Req to its ingress interface -| | [Tags] | VM_ENV -| | [Documentation] -| | ... | Make TG send ICMPv6 Echo Req to DUT ingress interface. Make TG\ -| | ... | verify ICMPv6 Echo Reply is correct. -| | Send IPv6 icmp echo request to DUT1 ingress inteface and verify answer | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes_ipv6_addr} - -| TC02: DUT replies to ICMPv6 Echo Req pkt with size 64B-to-1500B-incr-1B -| | [Tags] | VM_ENV -| | [Documentation] -| | ... | Make TG send ICMPv6 Echo Reqs to DUT ingress interface,\ -| | ... | incrementating frame size from 64B to 1500B with increment step -| | ... | of 1Byte. Make TG verify ICMP Echo Replies are correct. -| | Execute IPv6 ICMP echo sweep | ${nodes['TG']} | ${nodes['DUT1']} | 0 | 1452 | 1 | ${nodes_ipv6_addr} - -| TC03: DUT replies to ICMPv6 Echo Req pkt with size 1500B-to-9000B-incr-10B -| | [Documentation] -| | ... | Make TG send ICMPv6 Echo Reqs to DUT ingress interface,\ -| | ... | incrementating frame size from 1500B to 9000B with increment -| | ... | step of 10Bytes. Make TG verify ICMPv6 Echo Replies are correct. -| | [Setup] | Configure MTU on TG based on MTU on DUT | ${nodes['TG']} | ${nodes['DUT1']} -| | [Teardown] | Run keywords -| | ... | Set default Ethernet MTU on all interfaces on node | ${nodes['TG']} -| | ... | AND | Verify VPP PID in Teardown -| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} -| | Compute Path -| | ${dut_port} | ${dut_node}= | Last Interface -| | ${mtu}= | Get Interface MTU | ${dut_node} | ${dut_port} -| | # ICMPv6 payload size is frame size minus size of Ehternet header, FCS, -| | # IPv6 header and ICMPv6 header -| | ${end_size}= | Evaluate | ${mtu} - 14 - 4 - 40 - 8 -| | Run Keyword If | ${mtu} > 1518 -| | ... | Execute IPv6 ICMP echo sweep | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | 1452 | ${end_size} | 10 | ${nodes_ipv6_addr} - -| TC04: DUT routes to its egress interface -| | [Tags] | VM_ENV -| | [Documentation] -| | ... | Make TG send ICMPv6 Echo Req towards DUT1 egress interface\ -| | ... | connected to DUT2. Make TG verify ICMPv6 Echo Reply is correct. -| | Send IPv6 ICMP echo request to DUT1 egress interface and verify answer | ${nodes['TG']} | ${nodes['DUT1']} | -| | ... | ${nodes['DUT2']} | ${nodes_ipv6_addr} - -| TC05: DUT1 routes to DUT2 ingress interface -| | [Tags] | VM_ENV -| | [Documentation] -| | ... | Make TG send ICMPv6 Echo Req towards DUT2 ingress interface\ -| | ... | connected to DUT1. Make TG verify ICMPv6 Echo Reply is correct. -| | Send IPv6 ICMP echo request to DUT2 via DUT1 and verify answer | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes_ipv6_addr} - -| TC06: DUT1 routes to DUT2 egress interface -| | [Tags] | VM_ENV -| | [Documentation] -| | ... | Make TG send ICMPv6 Echo Req towards DUT2 egress interface\ -| | ... | connected to TG. Make TG verify ICMPv6 Echo Reply is correct. -| | Send IPv6 ICMP echo request to DUT2 egress interface via DUT1 and verify answer | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes_ipv6_addr} - -| TC07: DUT1 and DUT2 route between TG interfaces -| | [Tags] | VM_ENV -| | [Documentation] -| | ... | Make TG send ICMPv6 Echo Req between its interfaces across DUT1\ -| | ... | and DUT2. Make TG verify ICMPv6 Echo Replies are correct. -| | Ipv6 tg to tg routed | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} -| | ... | ${nodes_ipv6_addr} - -| TC08: DUT replies to IPv6 Neighbor Solicitation -| | [Tags] | VM_ENV -| | [Documentation] -| | ... | On DUT configure interface IPv6 address in the main routing\ -| | ... | domain. Make TG send Neighbor Solicitation message on the link -| | ... | to DUT and verify DUT Neighbor Advertisement reply is correct. -| | Send IPv6 neighbor solicitation and verify answer | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes_ipv6_addr} diff --git a/tests/func/ipv6/eth2p-ethip6-ip6base-ip6ecmp-func.robot b/tests/func/ipv6/eth2p-ethip6-ip6base-ip6ecmp-func.robot deleted file mode 100644 index e65ac9aa76..0000000000 --- a/tests/func/ipv6/eth2p-ethip6-ip6base-ip6ecmp-func.robot +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/counters.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/traffic.robot -| Library | resources.libraries.python.Trace -| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *Ipv6 Multipath routing test cases* -| ... -| ... | *[Top] Network topologies:* TG=DUT 2-node topology with two links\ -| ... | between nodes. -| ... | *[Cfg] DUT configuration:* On DUT configure interfaces IPv4 adresses,\ -| ... | and multipath routing. -| ... | *[Ver] TG verification:* Test packets are sent from TG on the first\ -| ... | link to DUT. Packet is received on TG on the second link from DUT1. - -*** Variables *** -| ${ip_1}= | 3ffe:61::1 -| ${ip_2}= | 3ffe:62::1 -| ${test_dst_ip}= | 3ffe:71::1 -| ${test_src_ip}= | 3ffe:51::1 -| ${prefix_length}= | 64 -| ${neighbor_1_ip}= | 3ffe:62::2 -| ${neighbor_1_mac}= | 02:00:00:00:00:02 -| ${neighbor_2_ip}= | 3ffe:62::3 -| ${neighbor_2_mac}= | 02:00:00:00:00:03 - -*** Test Cases *** -| TC01: IPv6 Equal-cost multipath routing -| | [Documentation] -| | ... | [Top] TG=DUT -| | ... | [Cfg] On DUT configure multipath routing wiht two equal-cost paths. -| | ... | [Ver] TG sends 100 IPv6 ICMP packets traffic on the first link to\ -| | ... | DUT. On second link to TG verify if traffic is divided into two paths. -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And Vpp Set If Ipv6 Addr | ${dut_node} -| | ... | ${dut_to_tg_if2} | ${ip_1} | ${prefix_length} -| | And Vpp Set If Ipv6 Addr | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${ip_2} | ${prefix_length} -| | And Add Ip Neighbor -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${neighbor_1_ip} | ${neighbor_1_mac} -| | And Add Ip Neighbor -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${neighbor_2_ip} | ${neighbor_2_mac} -| | And Suppress ICMPv6 router advertisement message | ${nodes} -| | When Vpp Route Add -| | ... | ${dut_node} | ${test_dst_ip} | ${prefix_length} | ${neighbor_1_ip} -| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | multipath=${TRUE} -| | And Vpp Route Add -| | ... | ${dut_node} | ${test_dst_ip} | ${prefix_length} | ${neighbor_2_ip} -| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | multipath=${TRUE} -| | Then Send packets and verify multipath routing | ${tg_node} -| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1} | ${test_src_ip} | ${test_dst_ip} -| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} | ${dut_to_tg_if1_mac} -| | ... | ${neighbor_1_mac} | ${neighbor_2_mac} diff --git a/tests/func/ipv6/eth2p-ethip6-ip6base-ip6ra-func.robot b/tests/func/ipv6/eth2p-ethip6-ip6base-ip6ra-func.robot deleted file mode 100644 index 0eb017b125..0000000000 --- a/tests/func/ipv6/eth2p-ethip6-ip6base-ip6ra-func.robot +++ /dev/null @@ -1,107 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/counters.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/traffic.robot -| Library | resources.libraries.python.Trace -| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *IPv6 Router Advertisement test cases* -| ... -| ... | RFC4861 Neighbor Discovery. Encapsulations: Eth-IPv6-RA on links -| ... | TG-DUT1. IPv6 Router Advertisement tests use 3-node topology TG - DUT1 - -| ... | DUT2 - TG with one link between the nodes. DUT1 and DUT2 are configured -| ... | with IPv6 routing and static routes. TG verifies received RA packets. - - -*** Variables *** -| ${dut1_to_tg_ip}= | 3ffe:62::1 -| ${tg_to_dut1_ip}= | 3ffe:62::2 -| ${prefix_length}= | 64 -| ${interval}= | 2 - -*** Test Cases *** -| TC01: DUT transmits RA on IPv6 enabled interface -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Cfg] On DUT1 configure IPv6 interface on the link to TG. -| | ... | [Ver] Make TG wait for IPv6 Router Advertisement packet to be sent\ -| | ... | by DUT1 and verify the received RA packet is correct. -| | [Tags] | EXPECTED_FAILING -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | When Vpp RA Send After Interval | ${dut1_node} | ${dut1_to_tg} -| | Then Receive and verify router advertisement packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${dut1_to_tg_mac} - -| TC02: DUT retransmits RA on IPv6 enabled interface after a set interval -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Cfg] On DUT1 configure IPv6 interface on the link to TG. -| | ... | [Ver] Make TG wait for two IPv6 Router Advertisement packets\ -| | ... | to be sent by DUT1 and verify the received RA packets are correct. -| | [Tags] | EXPECTED_FAILING -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | When Vpp RA Send After Interval | ${dut1_node} | ${dut1_to_tg} -| | ... | interval=${interval} -| | :FOR | ${n} | IN RANGE | ${2} -| | | Then Receive and verify router advertisement packet -| | | ... | ${tg_node} | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${interval} - -| TC03: DUT responds to Router Solicitation request -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Cfg] On DUT1 configure IPv6 interface on the link to TG and suppress\ -| | ... | sending of Router Advertisement packets periodically. -| | ... | [Ver] Make TG send IPv6 Router Solicitation request to DUT1, listen\ -| | ... | for response from DUT1 and verify the received RA packet is correct. -| | [Tags] | EXPECTED_FAILING -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | When VPP RA Suppress Link Layer | ${dut1_node} | ${dut1_to_tg} -| | Then Send router solicitation and verify response -| | ... | ${tg_node} | ${dut1_node} | ${tg_to_dut1} | ${dut1_to_tg} -| | ... | ${tg_to_dut1_ip} - -| TC04: DUT responds to Router Solicitation request sent from link local address -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Cfg] On DUT1 configure IPv6 interface on the link to TG and suppress\ -| | ... | sending of Router Advertisement packets periodically. -| | ... | [Ver] Make TG send IPv6 Router Solicitation request to DUT1, listen\ -| | ... | for response from DUT1 and verify the received RA packet is correct. -| | [Tags] | EXPECTED_FAILING -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Vpp Set If Ipv6 Addr | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | When VPP RA Suppress Link Layer | ${dut1_node} | ${dut1_to_tg} -| | Then Send router solicitation and verify response -| | ... | ${tg_node} | ${dut1_node} | ${tg_to_dut1} | ${dut1_to_tg} diff --git a/tests/func/l2bd/eth2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot b/tests/func/l2bd/eth2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot deleted file mode 100644 index b6a945865f..0000000000 --- a/tests/func/l2bd/eth2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot +++ /dev/null @@ -1,110 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/qemu.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | HW_ENV | VM_ENV | VPP_VM_ENV -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *L2 bridge-domain test cases* -| ... -| ... | *[Top] Network Topologies:* TG=DUT=VM 3-node topology with VM -| ... | and double parallel links. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of -| ... | IPv4; Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply -| ... | to all links. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge-domains -| ... | (L2BD) switching combined with MAC learning enabled. -| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets -| ... | are sent in both directions by TG on links to DUT1 via VM; on -| ... | receive TG verifies packets for correctness and their IPv4 (IPv6) -| ... | src-addr, dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* - -*** Variables *** -| ${bd_id1}= | 1 -| ${bd_id2}= | 2 - -| ${sock1}= | /tmp/sock1 -| ${sock2}= | /tmp/sock2 - -*** Test Cases *** -| TC01: DUT with two L2BDs (MAC learn) switches ICMPv4 between TG and VM links -| | [Documentation] -| | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 configure \ -| | ... | two L2BDs with MAC learning, each with vhost-user i/f to local -| | ... | VM and i/f to TG; configure VM to loop pkts back betwen its two -| | ... | virtio i/fs. [Ver] Make TG verify ICMPv4 Echo Req pkts are -| | ... | switched thru DUT1 and VM in both directions and are correct on -| | ... | receive. [Ref] -| | ... -| | [Teardown] | Run Keywords | Stop and clear QEMU | ${dut_node} | ${vm_node} -| | ... | AND | Tear down functional test -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | When Configure vhost interfaces for L2BD forwarding | ${dut_node} -| | ... | ${sock1} -| | ... | ${sock2} -| | And Create bridge domain | ${dut_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut_node} | ${vhost_if1} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut_node} | ${bd_id2} -| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2} -| | ... | ${bd_id2} -| | And Add interface to bridge domain | ${dut_node} | ${vhost_if2} -| | ... | ${bd_id2} -| | And Configure VM for vhost L2BD forwarding | ${dut_node} | ${sock1} -| | ... | ${sock2} -| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2} - -| TC02: DUT with two L2BDs (MAC learn) switches ICMPv6 between TG and VM links -| | [Documentation] -| | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv6-ICMPv6. [Cfg] On DUT1 configure \ -| | ... | two L2BDs with MAC learning, each with vhost-user i/f to local -| | ... | VM and i/f to TG; configure VM to loop pkts back betwen its two -| | ... | virtio i/fs. [Ver] Make TG verify ICMPv6 Echo Req pkts are -| | ... | switched thru DUT1 and VM in both directions and are correct on -| | ... | receive. [Ref] -| | ... -| | [Teardown] | Run Keywords | Stop and clear QEMU | ${dut_node} | ${vm_node} -| | ... | AND | Tear down functional test -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | When Configure vhost interfaces for L2BD forwarding | ${dut_node} -| | ... | ${sock1} -| | ... | ${sock2} -| | And Create bridge domain | ${dut_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut_node} | ${vhost_if1} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut_node} | ${bd_id2} -| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2} -| | ... | ${bd_id2} -| | And Add interface to bridge domain | ${dut_node} | ${vhost_if2} -| | ... | ${bd_id2} -| | And Configure VM for vhost L2BD forwarding | ${dut_node} | ${sock1} -| | ... | ${sock2} -| | Then Send ICMPv6 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2} diff --git a/tests/func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot b/tests/func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot deleted file mode 100644 index 096c0eb38e..0000000000 --- a/tests/func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot +++ /dev/null @@ -1,91 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/interfaces.robot -| Library | resources.libraries.python.Trace -| Force Tags | HW_ENV | VM_ENV | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *L2 bridge-domain test cases* -| ... -| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links -| ... | between nodes; TG-DUT1-DUT2-TG 3-node circular topology with -| ... | single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of -| ... | IPv4; Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply -| ... | to all links. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | bridge-domain (L2BD) switching combined with MAC learning enabled. -| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets -| ... | are sent in both directions by TG on links to DUT1 and DUT2; on -| ... | receive TG verifies packets for correctness and their IPv4 (IPv6) -| ... | src-addr, dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* - -*** Variables *** -| ${bd_id1}= | 1 -| ${bd_id2}= | 2 - -*** Test Cases *** -| TC01: DUT reports active interfaces -| | [Documentation] -| | ... | [Top] TG=DUT1; TG-DUT1-DUT2-TG. [Enc] None. [Cfg] Discovered \ -| | ... | active interfaces. [Ver] Report active interfaces on DUT. [Ref] -| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO | 3_NODE_SINGLE_LINK_TOPO -| | VPP reports interfaces through VAT on '${nodes['DUT1']}' - -| TC02: DUT with L2BD (MAC learning) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG=DUT1. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 configure \ -| | ... | two i/fs into L2BD with MAC learning. [Ver] Make TG verify -| | ... | ICMPv4 Echo Req pkts are switched thru DUT1 in both directions -| | ... | and are correct on receive. [Ref] -| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | When Create bridge domain | ${dut_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2} -| | ... | ${bd_id1} -| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2} - -| TC03: DUT1 and DUT2 with L2BD (MAC learning) switch between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 and DUT2 \ -| | ... | configure two i/fs into L2BD with MAC learning. [Ver] Make TG -| | ... | verify ICMPv4 Echo Req pkts are switched thru DUT1 and DUT2 in -| | ... | both directions and are correct on receive. [Ref] -| | [Tags] | 3_NODE_SINGLE_LINK_TOPO -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | When Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id2} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id2} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_dut1} -| | ... | ${bd_id2} -| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/func/l2bd/eth2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot b/tests/func/l2bd/eth2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot deleted file mode 100644 index 951d522baa..0000000000 --- a/tests/func/l2bd/eth2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot +++ /dev/null @@ -1,151 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/qemu.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | HW_ENV | VM_ENV | VPP_VM_ENV -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *L2 bridge-domain test cases* -| ... -| ... | *[Top] Network Topologies:* TG=DUT=VM 3-node topology with VM -| ... | and double parallel links. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of -| ... | IPv4; Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply -| ... | to all links. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge-domains -| ... | (L2BD) switching combined with static MACs. -| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets -| ... | are sent in both directions by TG on links to DUT1 via VM; on -| ... | receive TG verifies packets for correctness and their IPv4 (IPv6) -| ... | src-addr, dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* - -*** Variables *** -| ${bd_id1}= | 1 -| ${bd_id2}= | 2 - -| ${sock1}= | /tmp/sock1 -| ${sock2}= | /tmp/sock2 - -*** Test Cases *** -| TC01: DUT with two L2BDs (static MACs) switches ICMPv4 between TG and VM links -| | [Documentation] -| | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 configure \ -| | ... | two L2BDs with static MACs, each with vhost-user i/f to local VM -| | ... | and i/f to TG; configure VM to loop pkts back betwen its two -| | ... | virtio i/fs. [Ver] Make TG verify ICMPv4 Echo Req pkts are -| | ... | switched thru DUT1 and VM in both directions and are correct on -| | ... | receive. [Ref] -| | ... -| | [Teardown] | Run Keywords | Stop and clear QEMU | ${dut_node} | ${vm_node} -| | ... | AND | Tear down functional test -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | When Configure vhost interfaces for L2BD forwarding | ${dut_node} -| | ... | ${sock1} | ${sock2} -| | And Create bridge domain | ${dut_node} | ${bd_id1} -| | ... | learn=${FALSE} -| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut_node} | ${vhost_if1} | ${bd_id1} -| | And Add destination port to L2FIB | ${tg_node} -| | ... | ${tg_to_dut_if1} -| | ... | ${dut_node} -| | ... | ${dut_to_tg_if1} -| | ... | ${bd_id1} -| | And Add destination port to L2FIB | ${tg_node} -| | ... | ${tg_to_dut_if2} -| | ... | ${dut_node} -| | ... | ${vhost_if1} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut_node} | ${bd_id2} -| | ... | learn=${FALSE} -| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2} -| | ... | ${bd_id2} -| | And Add interface to bridge domain | ${dut_node} | ${vhost_if2} -| | ... | ${bd_id2} -| | And Add destination port to L2FIB | ${tg_node} -| | ... | ${tg_to_dut_if2} -| | ... | ${dut_node} -| | ... | ${dut_to_tg_if2} -| | ... | ${bd_id2} -| | And Add destination port to L2FIB | ${tg_node} -| | ... | ${tg_to_dut_if1} -| | ... | ${dut_node} -| | ... | ${vhost_if2} -| | ... | ${bd_id2} -| | And Configure VM for vhost L2BD forwarding | ${dut_node} | ${sock1} -| | ... | ${sock2} -| | Then Send ICMPv4 bidirectionally and verify received packets -| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} - -| TC02: DUT with two L2BDs (static MACs) switches ICMPv6 between TG and VM links -| | [Documentation] -| | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv6-ICMPv6. [Cfg] On DUT1 configure \ -| | ... | two L2BDs with static MACs, each with vhost-user i/f to local VM -| | ... | and i/f to TG; configure VM to loop pkts back betwen its two -| | ... | virtio i/fs. [Ver] Make TG verify ICMPv6 Echo Req pkts are -| | ... | switched thru DUT1 and VM in both directions and are correct on -| | ... | receive. [Ref] -| | ... -| | [Teardown] | Run Keywords | Stop and clear QEMU | ${dut_node} | ${vm_node} -| | ... | AND | Tear down functional test -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | When Configure vhost interfaces for L2BD forwarding | ${dut_node} -| | ... | ${sock1} -| | ... | ${sock2} -| | And Create bridge domain | ${dut_node} | ${bd_id1} -| | ... | learn=${FALSE} -| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut_node} | ${vhost_if1} -| | ... | ${bd_id1} -| | And Add destination port to L2FIB | ${tg_node} -| | ... | ${tg_to_dut_if1} -| | ... | ${dut_node} -| | ... | ${dut_to_tg_if1} -| | ... | ${bd_id1} -| | And Add destination port to L2FIB | ${tg_node} -| | ... | ${tg_to_dut_if2} -| | ... | ${dut_node} -| | ... | ${vhost_if1} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut_node} | ${bd_id2} -| | ... | learn=${FALSE} -| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2} -| | ... | ${bd_id2} -| | And Add interface to bridge domain | ${dut_node} | ${vhost_if2} | ${bd_id2} -| | And Add destination port to L2FIB | ${tg_node} -| | ... | ${tg_to_dut_if2} -| | ... | ${dut_node} -| | ... | ${dut_to_tg_if2} -| | ... | ${bd_id2} -| | And Add destination port to L2FIB | ${tg_node} -| | ... | ${tg_to_dut_if1} -| | ... | ${dut_node} -| | ... | ${vhost_if2} -| | ... | ${bd_id2} -| | And Configure VM for vhost L2BD forwarding | ${dut_node} | ${sock1} -| | ... | ${sock2} -| | Then Send ICMPv6 bidirectionally and verify received packets -| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} diff --git a/tests/func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot b/tests/func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot deleted file mode 100644 index 7ba6b46591..0000000000 --- a/tests/func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot +++ /dev/null @@ -1,85 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/qemu.robot -| Library | resources.libraries.python.Trace -| Force Tags | HW_ENV | VM_ENV | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *L2 bridge-domain test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of -| ... | IPv4; Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply -| ... | to all links. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | bridge-domain (L2BD) switching combined with static MACs. -| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets -| ... | are sent in both directions by TG on links to DUT1 and DUT2; on -| ... | receive TG verifies packets for correctness and their IPv4 (IPv6) -| ... | src-addr, dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* - -*** Variables *** -| ${bd_id1}= | 1 -| ${bd_id2}= | 2 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2BD (static MACs) switch between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 and \ -| | ... | DUT2 configure two i/fs into L2BD with static MACs. [Ver] Make -| | ... | TG verify ICMPv4 Echo Req pkts are switched thru DUT1 and DUT2 -| | ... | in both directions and are correct on receive. [Ref] -| | [Tags] | 3_NODE_SINGLE_LINK_TOPO -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | When Create bridge domain | ${dut1_node} | ${bd_id1} | learn=${FALSE} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add destination port to L2FIB | ${tg_node} -| | ... | ${tg_to_dut1} -| | ... | ${dut1_node} -| | ... | ${dut1_to_tg} -| | ... | ${bd_id1} -| | And Add destination port to L2FIB | ${tg_node} -| | ... | ${tg_to_dut2} -| | ... | ${dut1_node} -| | ... | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id2} -| | ... | learn=${FALSE} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id2} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_dut1} -| | ... | ${bd_id2} -| | And Add destination port to L2FIB | ${tg_node} -| | ... | ${tg_to_dut1} -| | ... | ${dut2_node} -| | ... | ${dut2_to_dut1} -| | ... | ${bd_id2} -| | And Add destination port to L2FIB | ${tg_node} -| | ... | ${tg_to_dut2} -| | ... | ${dut2_node} -| | ... | ${dut2_to_tg} -| | ... | ${bd_id2} -| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} diff --git a/tests/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot b/tests/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot deleted file mode 100644 index 3649f928c5..0000000000 --- a/tests/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot +++ /dev/null @@ -1,86 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/qemu.robot -| Library | resources.libraries.python.Trace -| Force Tags | HW_ENV | VM_ENV -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *L2 bridge-domain test cases* -| ... -| ... | *[Top] Network Topologies:* TG=DUT1=DUT2=TG 3-node circular topology -| ... | with double parallel links. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of -| ... | IPv4; Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply -| ... | to all links. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | bridge-domain (L2BD) switching combined with MAC learning enabled -| ... | and Split Horizon Groups (SHG). -| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets -| ... | are sent in both directions by TG on links to DUT1 and DUT2; on -| ... | receive TG verifies packets for correctness and their IPv4 (IPv6) -| ... | src-addr, dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* - -*** Variables *** -| ${bd_id1}= | 1 -| ${bd_id2}= | 2 - -| ${shg1}= | 3 -| ${shg2}= | 4 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2BD (MAC learn) and SHG switch between four TG links -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 and \ -| | ... | DUT2 configure four i/fs into L2BD with MAC learning and the -| | ... | same SHG on i/fs towards TG. [Ver] Make TG verify ICMPv4 Echo -| | ... | Req pkts are switched thru DUT1 and DUT2 in both directions and -| | ... | are correct on receive; verify no pkts are switched thru SHG -| | ... | isolated interfaces. [Ref] -| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO -| | Given Configure path for 3-node BD-SHG test | ${nodes['TG']} -| | ... | ${nodes['DUT1']} | ${nodes['DUT2']} -| | And Set interfaces in 3-node BD-SHG test up -| | When Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if1} -| | ... | ${bd_id1} | ${shg1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if2} -| | ... | ${bd_id1} | ${shg1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id2} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if1} -| | ... | ${bd_id2} | ${shg2} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if2} -| | ... | ${bd_id2} | ${shg2} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_dut1} -| | ... | ${bd_id2} -| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if1} | ${tg_to_dut2_if1} -| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if1} | ${tg_to_dut2_if2} -| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if2} | ${tg_to_dut2_if1} -| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if2} | ${tg_to_dut2_if2} -| | And Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMPv4 bidirectionally and verify received packets -| | | ... | ${tg_node} | ${tg_to_dut1_if1} | ${tg_to_dut1_if2} -| | And Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMPv4 bidirectionally and verify received packets -| | | ... | ${tg_node} | ${tg_to_dut2_if1} | ${tg_to_dut2_if2} diff --git a/tests/func/l2xc/eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot b/tests/func/l2xc/eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot deleted file mode 100644 index d593fdf4d0..0000000000 --- a/tests/func/l2xc/eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot +++ /dev/null @@ -1,93 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/l2_xconnect.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/qemu.robot -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.NodePath -| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | HW_ENV | VM_ENV | VPP_VM_ENV -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *L2 cross-connect test cases* -| ... -| ... | *[Top] Network Topologies:* TG=DUT=VM 3-node topology with VM and -| ... | double parallel links. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of IPv4; -| ... | Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply to all links. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect -| ... | (L2XC) switching. -| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets are -| ... | sent in both directions by TG on links to DUT1 via VM; on receive TG -| ... | verifies packets for correctness and their IPv4 (IPv6) src-addr, -| ... | dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* - -*** Variables *** -| ${sock1}= | /tmp/sock1 -| ${sock2}= | /tmp/sock2 - -*** Test Cases *** -| TC01: DUT with two L2XCs switches ICMPv4 between TG and local VM links -| | [Documentation] -| | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT configure \ -| | ... | two L2 cross-connects (L2XC), each with one untagged interface -| | ... | to TG and untagged i/f to local VM over vhost-user. [Ver] Make -| | ... | TG send ICMPv4 Echo Reqs in both directions between two of its -| | ... | i/fs to be switched by DUT to and from VM; verify all packets -| | ... | are received. [Ref] -| | ... -| | [Teardown] | Run Keywords | Stop and clear QEMU | ${dut_node} | ${vm_node} -| | ... | AND | Tear down functional test -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | When Configure vhost interfaces for L2BD forwarding | ${dut_node} -| | ... | ${sock1} | ${sock2} -| | And Configure L2XC | ${dut_node} | ${dut_to_tg_if1} | ${vhost_if1} -| | And Configure L2XC | ${dut_node} | ${dut_to_tg_if2} | ${vhost_if2} -| | And Configure VM for vhost L2BD forwarding | ${dut_node} | ${sock1} -| | ... | ${sock2} -| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2} - -| TC02: DUT with two L2XCs switches ICMPv6 between TG and local VM links -| | [Documentation] -| | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv6-ICMPv6. [Cfg] On DUT configure \ -| | ... | two L2 cross-connects (L2XC), each with one untagged i/f to TG -| | ... | and untagged i/f to local VM over vhost-user. [Ver] Make TG send -| | ... | ICMPv6 Echo Reqs in both directions between two of its i/fs to -| | ... | be switched by DUT to and from VM; verify all packets are -| | ... | received. [Ref] -| | ... -| | [Teardown] | Run Keywords | Stop and clear QEMU | ${dut_node} | ${vm_node} -| | ... | AND | Tear down functional test -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | When Configure vhost interfaces for L2BD forwarding | ${dut_node} -| | ... | ${sock1} | ${sock2} -| | And Configure L2XC | ${dut_node} | ${dut_to_tg_if1} | ${vhost_if1} -| | And Configure L2XC | ${dut_node} | ${dut_to_tg_if2} | ${vhost_if2} -| | And Configure VM for vhost L2BD forwarding | ${dut_node} | ${sock1} -| | ... | ${sock2} -| | Then Send ICMPv6 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2} - diff --git a/tests/func/l2xc/eth2p-eth-l2xcbase-func.robot b/tests/func/l2xc/eth2p-eth-l2xcbase-func.robot deleted file mode 100644 index a1b9fc24ad..0000000000 --- a/tests/func/l2xc/eth2p-eth-l2xcbase-func.robot +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/l2_xconnect.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/qemu.robot -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.NodePath -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *L2 cross-connect test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of IPv4; -| ... | Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply to all links. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | cross-connect (L2XC) switching. -| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets are -| ... | sent in both directions by TG on links to DUT1 and DUT2; on receive TG -| ... | verifies packets for correctness and their IPv4 (IPv6) src-addr, -| ... | dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2XC switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 and \ -| | ... | DUT2 configure L2 cross-connect (L2XC), each with one interface -| | ... | to TG and one Ethernet interface towards the other DUT. [Ver] -| | ... | Make TG send ICMPv4 Echo Req in both directions between two of -| | ... | its interfaces to be switched by DUT1 and DUT2; verify all -| | ... | packets are received. [Ref] -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Configure L2XC | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_dut2} -| | And Configure L2XC | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | When All Vpp Interfaces Ready Wait | ${nodes} -| | Then Send ICMPv4 bidirectionally and verify received packets -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} - -| TC02: DUT1 and DUT2 with L2XC switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-ICMPv6. [Cfg] On DUT1 and \ -| | ... | DUT2 configure L2 cross-connect (L2XC), each with one interface -| | ... | to TG and one Ethernet interface towards the other DUT. [Ver] -| | ... | Make TG send ICMPv6 Echo Req in both directions between two of -| | ... | its interfaces to be switched by DUT1 and DUT2; verify all -| | ... | packets are received. [Ref] -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Configure L2XC | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_dut2} -| | And Configure L2XC | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | When All Vpp Interfaces Ready Wait | ${nodes} -| | Then Send ICMPv6 bidirectionally and verify received packets -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/func/lisp/api-crud-lisp-func.robot b/tests/func/lisp/api-crud-lisp-func.robot deleted file mode 100644 index da97272913..0000000000 --- a/tests/func/lisp/api-crud-lisp-func.robot +++ /dev/null @@ -1,116 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.LispUtil -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/lisp/lisp_api.robot -# import additional Lisp settings from resource file -| Variables | resources/test_data/lisp/api/lisp_api_resources.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO -| ... | VM_ENV | HW_ENV -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down functional test -| ... -| Documentation | *API test cases* -| ... -| ... | *[Top] Network Topologies:* DUT1 1-node topology. -| ... | *[Enc] Packet Encapsulations:* None. -| ... | *[Cfg] DUT configuration:* DUT1 gets configured with all LISP -| ... | parameters. -| ... | *[Ver] Verification:* DUT1 operational data gets verified following -| ... | configuration. -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Variables *** -| ${locator_set_num}= | 3 - -*** Test Cases *** - -| TC01: DUT can enable and disable LISP -| | [Documentation] -| | ... | [Top] DUT1. [Enc] None. [Cfg1] Test LISP enable/disable API; On \ -| | ... | DUT1 enable LISP. [Ver1] Check DUT1 if LISP is enabled. [Cfg2] -| | ... | Then disable LISP. [Ver2] Check DUT1 if LISP is disabled. [Ref] -| | ... | RFC6830. -| | When Enable LISP | ${nodes['DUT1']} -| | Then LISP should be enabled | ${nodes['DUT1']} | ${lisp_status} -| | When Disable LISP | ${nodes['DUT1']} -| | Then LISP Should be disabled | ${nodes['DUT1']} | ${lisp_status} - -| TC02: DUT can add and delete locator_set -| | [Documentation] -| | ... | [Top] DUT1. [Enc] None. [Cfg1] Test LISP locator_set API; on \ -| | ... | DUT1 configure locator_set and locator. [Ver1] Check DUT1 -| | ... | configured locator_set and locator are correct. [Cfg2] Then -| | ... | remove locator_set and locator. [Ver2] check DUT1 locator_set -| | ... | and locator are removed. [Ref] RFC6830. -| | Given Generate LISP locator_set data -| | ... | ${nodes['DUT1']} | ${locator_set_num} -| | And Enable LISP | ${nodes['DUT1']} -| | When Configure LISP locator_set data | ${nodes['DUT1']} -| | Then LISP locator_set shpuld be configured correctly | ${nodes['DUT1']} -| | When Delete all LISP locator_set from VPP | ${nodes['DUT1']} -| | Then LISP locator_set should be unset | ${nodes['DUT1']} - -| TC03: DUT can add, reset and delete locator_set -| | [Documentation] -| | ... | [Top] DUT1. [Enc] None. [Cfg1] Test LISP locator_set API; on \ -| | ... | DUT1 configure locator_set and locator. [Ver1] Check DUT1 -| | ... | locator_set and locator are correct. [Cfg2] Then reset -| | ... | locator_set and set it again. [Ver2] Check DUT1 locator_set and -| | ... | locator are correct. [Cfg3] Then remove locator_set and locator. -| | ... | [Ver3] Check DUT1 all locator_set and locators are removed. -| | ... | [Ref] RFC6830. -| | Given Lisp locator_set data use for test reset locator_set are prepared -| | ... | ${nodes['DUT1']} | ${locator_set_num} -| | And Enable LISP | ${nodes['DUT1']} -| | When Configure LISP locator_set data | ${nodes['DUT1']} -| | Then LISP locator_set shpuld be configured correctly | ${nodes['DUT1']} -| | When Delete all LISP locator_set from VPP | ${nodes['DUT1']} -| | Then LISP locator_set should be unset | ${nodes['DUT1']} - -| TC04: DUT can add and delete eid address -| | [Documentation] -| | ... | [Top] DUT1. [Enc] None. [Cfg1] Test LISP eid API; on DUT1 \ -| | ... | configure LISP eid IP address. [Ver1] Check DUT1 configured data -| | ... | is correct. [Cfg2] Remove configured data. [Ver2] Check DUT1 all -| | ... | eid IP addresses are removed. [Ref] RFC6830. -| | Given Enable LISP | ${nodes['DUT1']} -| | When Configure LISP eid address | ${nodes['DUT1']} | ${eid_table} -| | Then LISP eid address should be set correctly to eid table -| | ... | ${nodes['DUT1']} | ${eid_table_vat} -| | When Delete all LISP eid address from VPP | ${nodes['DUT1']} | ${eid_table} -| | Then LISP eid table should be empty | ${nodes['DUT1']} - -| TC05: DUT can add and delete LISP map resolver address -| | [Documentation] -| | ... | [Top] DUT1. [Enc] None. [Cfg1] Test LISP map resolver address \ -| | ... | API; on DUT1 configure LISP map resolver address. [Ver1] Check -| | ... | DUT1 configured data is correct. [Cfg2] Remove configured data. -| | ... | [Ver2] Check DUT1 all map resolver addresses are removed. [Ref] -| | ... | RFC6830. -| | Given Enable LISP | ${nodes['DUT1']} -| | When Configure LISP map resolver address | ${nodes['DUT1']} | ${map_resolver} -| | Then LISP map resolver address should be configured correctly -| | ... | ${nodes['DUT1']} | ${map_resolver} -| | When Delete all LISP map resolver address from VPP -| | ... | ${nodes['DUT1']} | ${map_resolver} -| | Then LISP map resolver address should be empty | ${nodes['DUT1']} diff --git a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot b/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot deleted file mode 100644 index 235e581f02..0000000000 --- a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot +++ /dev/null @@ -1,209 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.LispUtil -| Library | resources.libraries.python.VhostUser -| Library | resources.libraries.python.QemuUtils -| Library | resources.libraries.python.VPPUtil -| Library | resources.libraries.python.IPsecUtil -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/vrf.robot -| Resource | resources/libraries/robot/ipsec.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/lisp/l2lisp.robot -# Import configuration and test data: -| Variables | resources/test_data/lisp/ipv4_ipsec_lispgpe_ipv4/ipv4_ipsec_lispgpe_ipv4.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node} -| ... -| Documentation | *IPv4-ip4-ipsec-lispgpe-ip4 - main fib, vrf (gpe_vni-to-vrf)* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* ICMPv4-IPv4-IPSec-LISPGPE-IPv4-ICMPv4. -| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec.\ -| ... | IPsec is in transport mode. Tests cases are for IPsec configured both\ -| ... | on RLOC interface or lisp_gpe0 interface. -| ... | *[Ver] TG verification:* Packet is send from TG(if1) across the DUT1\ -| ... | via VM to DUT2 where it is forwarded to TG(if2). -| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303. - -*** Variables *** -| ${dut2_spi}= | ${1000} -| ${dut1_spi}= | ${1001} - -| ${ESP_PROTO}= | ${50} - -| ${sock1}= | /tmp/sock1 -| ${sock2}= | /tmp/sock2 - -| ${bid}= | 10 - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv4 over Vhost to LISP GPE tunnel using IPsec (transport) on RLOC Int. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-IPSec-LISPGPE-IPv4-ICMP on DUT1-DUT2, Eth-IPv4-ICMP\ -| | ... | on TG-DUTn. -| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ -| | ... | IPsec in between DUTS. Create Qemu vm on DUT1 and configure bridge\ -| | ... | between two vhosts. -| | ... | [Ver] Case: ip4-ipsec-lispgpe-ip4 - main fib, virt2lisp\ -| | ... | Make TG send ICMPv4 Echo Req between its interfaces across\ -| | ... | both DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830, RFC4303. -| | ... -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Setup 3-node Topology -| | And Add IP Neighbors -| | And Setup Qemu DUT1 -| | And Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_to_dut2_ip4_static_adjacency} -| | ... | ${dut2_to_dut1_ip4_static_adjacency} -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} -| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} -| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -| TC02: DUT1 and DUT2 route IPv4 over Vhost to LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-IPSec-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2,\ -| | ... | Eth-IPv4-ICMPv4 on TG-DUTn. -| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ -| | ... | IPsec in between DUTS. -| | ... | [Ver] Case: ip4-ipsec-lispgpe-ip4 - main fib, virt2lisp\ -| | ... | Make TG send ICMPv4 Echo Req between its interfaces across\ -| | ... | both DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830, RFC4303. -| | ... -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Setup 3-node Topology -| | And Add IP Neighbors -| | And Setup Qemu DUT1 -| | And Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_to_dut2_ip4_static_adjacency} -| | ... | ${dut2_to_dut1_ip4_static_adjacency} -| | ${lisp1_if_idx}= | resources.libraries.python.InterfaceUtil.Get Sw If Index -| | ... | ${dut1_node} | lisp_gpe0 -| | ${lisp2_if_idx}= | resources.libraries.python.InterfaceUtil.Get Sw If Index -| | ... | ${dut2_node} | lisp_gpe0 -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut1_node} | ${lisp1_if_idx} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} -| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut2_node} | ${lisp2_if_idx} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} -| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Setup 3-node Topology -| | [Documentation] -| | ... | Setup 3-node topology for this test suite. Set all physical\ -| | ... | interfaces up and assing IP adresses to them.\ -| | ... | You can specify fib table ID where the DUT-TG interfaces assign to.\ -| | ... | Default is 0. -| | ... -| | [Arguments] | ${fib_table}=0 -| | Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | Set interfaces in 3-node circular topology up -| | Assign Interface To Fib Table | ${dut1_node} -| | ... | ${dut1_to_tg} | ${fib_table} -| | Assign Interface To Fib Table | ${dut2_node} -| | ... | ${dut2_to_tg} | ${fib_table} -| | Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} -| | ... | ${prefix4} -| | Set Interface Address | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} -| | ... | ${prefix4} -| | Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} -| | ... | ${prefix4} -| | Set Interface Address | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} -| | ... | ${prefix4} - -| Add IP Neighbors -| | [Documentation] -| | ... | Add IP neighbors to physical interfaces on DUTs. -| | ... -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} -| | ... | ${tg_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} -| | ... | ${tg_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} -| | ... | ${dut1_to_dut2_mac} - -| Setup Qemu DUT1 -| | [Documentation] | Setup Vhosts on DUT1 and setup IP to one of them. Setup \ -| | ... | Qemu and bridge the vhosts. -| | ${vhost1}= | And Vpp Create Vhost User Interface | ${dut1_node} | ${sock1} -| | ${vhost2}= | And Vpp Create Vhost User Interface | ${dut1_node} | ${sock2} -| | Set Interface Address | ${dut1_node} | ${vhost2} | 6.6.1.9 -| | ... | ${prefix4} -| | Set Interface State | ${dut1_node} | ${vhost1} | up -| | Set Interface State | ${dut1_node} | ${vhost2} | up -| | Create bridge domain | ${dut1_node} | ${bid} | learn=${TRUE} -| | Add interface to bridge domain | ${dut1_node} -| | ... | ${dut1_to_tg} | ${bid} | 0 -| | Add interface to bridge domain | ${dut1_node} -| | ... | ${vhost1} | ${bid} | 0 -| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2} -| | Set test variable | ${dst_vhost_mac} | ${vhost_mac} -| | Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} | ${sock2} diff --git a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip4base-func.robot b/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip4base-func.robot deleted file mode 100644 index 5f9a37eeca..0000000000 --- a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip4base-func.robot +++ /dev/null @@ -1,269 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.LispUtil -| Library | resources.libraries.python.VhostUser -| Library | resources.libraries.python.QemuUtils -| Library | resources.libraries.python.VPPUtil -| Library | resources.libraries.python.IPsecUtil -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/vrf.robot -| Resource | resources/libraries/robot/ipsec.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/lisp/l2lisp.robot -# Import configuration and test data: -| Variables | resources/test_data/lisp/ipv4_ipsec_lispgpe_ipv4/ipv4_ipsec_lispgpe_ipv4.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down LISP functional test -| ... -| Documentation | *IPv4-ip4-ipsec-lispgpe-ip4 - main fib, vrf (gpe_vni-to-vrf)* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* ICMPv4-IPv4-IPSec-LISPGPE-IPv4-ICMPv4. -| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec.\ -| ... | IPsec is in transport mode. Tests cases are for IPsec configured both\ -| ... | on RLOC interface or lisp_gpe0 interface. -| ... | *[Ver] TG verification:* Packet is send from TG(if1) across the DUT1 to\ -| ... | DUT2 where it is forwarded to TG(if2). -| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303. - -*** Variables *** -| ${dut2_spi}= | ${1000} -| ${dut1_spi}= | ${1001} - -| ${ESP_PROTO}= | ${50} - -| ${bid}= | 10 - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on RLOC Int. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-IPSec-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2,\ -| | ... | Eth-IPv4-ICMPv4 on TG-DUTn. -| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ -| | ... | IPsec in between DUTs. -| | ... | [Ver] Case: ip4-lispgpe-ipsec-ip4 - main fib -| | ... | Make TG send ICMPv4 Echo Req between its interfaces across both\ -| | ... | DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830, RFC4303. -| | ... -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Setup 3-node Topology -| | And Add IP Neighbors -| | And Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_to_dut2_ip4_static_adjacency} -| | ... | ${dut2_to_dut1_ip4_static_adjacency} -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} -| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} -| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -| TC02: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) lisp_gpe0 Int. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-IPSec-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2,\ -| | ... | Eth-IPv4-ICMPv4 on TG-DUTn. -| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ -| | ... | IPsec in between DUTs. -| | ... | [Ver] Case: ip4-ipsec-lispgpe-ip4 - main fib -| | ... | Make TG send ICMPv4 Echo Req between its interfaces across both\ -| | ... | DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830, RFC4303. -| | ... -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Setup 3-node Topology -| | And Add IP Neighbors -| | And Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_to_dut2_ip4_static_adjacency} -| | ... | ${dut2_to_dut1_ip4_static_adjacency} -| | ${lisp_if_idx}= | resources.libraries.python.InterfaceUtil.Get sw if index -| | ... | ${dut1_node} | lisp_gpe0 -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut1_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} | ${tg1_ip4} -| | ... | ${tg2_ip4} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut2_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} | ${tg2_ip4} -| | ... | ${tg1_ip4} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -| TC03: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on RLOC Int and VRF on EID is enabled. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-IPSec-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2,\ -| | ... | Eth-IPv4-ICMPv4 on TG-DUTn. -| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ -| | ... | IPsec in between DUTs. -| | ... | [Ver] Case: ip4-lispgpe-ipsec-ip4 - vrf, main fib -| | ... | Make TG send ICMPv4 Echo Req between its interfaces across both\ -| | ... | DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830, RFC4303. -| | ... -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Setup 3-node Topology | ${fib_table_1} -| | And Add IP Neighbors -| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_to_dut2_ip4_static_adjacency} -| | ... | ${dut2_to_dut1_ip4_static_adjacency} -| | ... | ${dut1_dut2_vni} | ${fib_table_1} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} -| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} -| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -| TC04: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int and VRF is enabled. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-IPSec-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2,\ -| | ... | Eth-IPv4-ICMPv4 on TG-DUTn. -| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ -| | ... | IPsec in between DUTs. -| | ... | [Ver] Case: ip4-ipsec-lispgpe-ip4 - vrf, main fib -| | ... | Make TG send ICMPv4 Echo Req between its interfaces across both\ -| | ... | DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830, RFC4303. -| | ... -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Setup 3-node Topology | ${fib_table_1} -| | And Add IP Neighbors -| | And Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_to_dut2_ip4_static_adjacency} -| | ... | ${dut2_to_dut1_ip4_static_adjacency} -| | ... | ${dut1_dut2_vni} | ${fib_table_1} -| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | ${lisp_if_idx}= | resources.libraries.python.InterfaceUtil.Get sw if index -| | ... | ${dut1_node} | lisp_gpe0 -| | And Configure manual keyed connection for IPSec -| | ... | ${dut1_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} | ${tg1_ip4} -| | ... | ${tg2_ip4} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut2_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} | ${tg2_ip4} -| | ... | ${tg1_ip4} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Setup 3-node Topology -| | [Documentation] -| | ... | Setup 3-node topology for this test suite. Set all physical\ -| | ... | interfaces up and assing IP adresses to them.\ -| | ... | You can specify fib table ID where the DUT-TG interfaces assign to.\ -| | ... | Default is 0. -| | ... -| | [Arguments] | ${fib_table}=0 -| | Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | Set interfaces in 3-node circular topology up -| | Assign Interface To Fib Table | ${dut1_node} -| | ... | ${dut1_to_tg} | ${fib_table} -| | Assign Interface To Fib Table | ${dut2_node} -| | ... | ${dut2_to_tg} | ${fib_table} -| | Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} -| | ... | ${prefix4} -| | Set Interface Address | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} -| | ... | ${prefix4} -| | Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} -| | ... | ${prefix4} -| | Set Interface Address | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} -| | ... | ${prefix4} - -| Add IP Neighbors -| | [Documentation] -| | ... | Add IP neighbors to physical interfaces on DUTs. -| | ... -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} -| | ... | ${tg_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} -| | ... | ${tg_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} -| | ... | ${dut1_to_dut2_mac} diff --git a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot b/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot deleted file mode 100644 index f09fa31793..0000000000 --- a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot +++ /dev/null @@ -1,185 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.L2Util -| Library | resources.libraries.python.LispUtil -| Library | resources.libraries.python.IPsecUtil -| Library | resources.libraries.python.VatJsonUtil -| Library | resources.libraries.python.IPv6Setup -| Library | resources.libraries.python.VhostUser -| Library | resources.libraries.python.QemuUtils -| Library | resources.libraries.python.VPPUtil -| Library | String -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/ipsec.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -| Resource | resources/libraries/robot/bridge_domain.robot -# Import configuration and test data: -| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv4/ipv6_lispgpe_ipsec_ipv4.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node} -| ... -| Documentation | *IPv6 - ip4-ipsec-lispgpe-ip6 - main fib, vrf, virt2lisp,\ -| ... | phy2lisp* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISPGPE-IPSec-IPv6-ICMP,\ -| ... | Eth-IPv4-IPSec-LISPGPE-IPv6-ICMP -| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec.\ -| ... | IPsec is in transport mode. Tests cases are for IPsec configured both\ -| ... | on RLOC interface or lisp_gpe0 interface. -| ... | *[Ver] TG verification:* Packet is send from TG(if1) across the DUT1\ -| ... | via VM to DUT2 where it is forwarded to TG(if2). -| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303. - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv6 over Vhost to LISP GPE tunnel using IPsec (transport) on RLOC Int. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-LISPGPE-IPSec-IPv6-ICMP on DUT1-DUT2, Eth-IPv6-ICMP\ -| | ... | on TG-DUTn. -| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ -| | ... | IPsec in between DUTS. Create Qemu vm on DUT1 and configure bridge\ -| | ... | between two vhosts. -| | ... | [Ver] Case: ip4-ipsec-lispgpe-ip6 - main fib, virt2lisp\ -| | ... | Make TG send ICMPv6 Echo Req between its interfaces across\ -| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830, RFC4303. -| | ... -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Setup Topology And Lisp -| | And Setup Qemu DUT1 -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} -| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} -| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -| TC02: DUT1 and DUT2 route IPv6 over Vhost to LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2,\ -| | ... | Eth-IPv6-ICMPv6, on TG-DUTn. -| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ -| | ... | IPsec in between DUTS. -| | ... | [Ver] Case: ip4-ipsec-lispgpe-ip6 - main fib, virt2lisp\ -| | ... | Make TG send ICMPv6 Echo Req between its interfaces across\ -| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830, RFC4303. -| | ... -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Setup Topology And Lisp -| | And Setup Qemu DUT1 -| | ${lisp1_if_idx}= | resources.libraries.python.InterfaceUtil.get sw if index -| | ... | ${dut1_node} | ${lisp_gpe_int} -| | ${lisp2_if_idx}= | resources.libraries.python.InterfaceUtil.get sw if index -| | ... | ${dut2_node} | ${lisp_gpe_int} -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut1_node} | ${lisp1_if_idx} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} -| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut2_node} | ${lisp2_if_idx} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} -| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Setup Topology And Lisp -| | [Documentation] | Setup IPs and neighbors for interfaces on DUT1 and DUT2\ -| | ... | and then setup LISP. -| | [Arguments] | ${fib_table}=0 | ${vni_table}=0 | ${ip6}=${FALSE} -| | Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | Set interfaces in 3-node circular topology up -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} -| | ... | ${prefix4} -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} -| | ... | ${prefix6} -| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} -| | ... | ${prefix4} -| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} -| | ... | ${prefix6} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} -| | ... | ${tg_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} -| | ... | ${dut1_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} -| | ... | ${tg_to_dut1_mac} -| | Vpp All RA Suppress Link Layer | ${nodes} -| | Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_to_dut2_ip_static_adjacency} -| | ... | ${dut2_to_dut1_ip_static_adjacency} -| | ... | ${vni_table} | ${fib_table} - -| Setup Qemu DUT1 -| | [Documentation] | Setup Vhosts on DUT1 and setup IP to one of them. Setup\ -| | ... | Qemu and bridge the vhosts. -| | ${vhost1}= | And Vpp Create Vhost User Interface | ${dut1_node} | ${sock1} -| | ${vhost2}= | And Vpp Create Vhost User Interface | ${dut1_node} | ${sock2} -| | Set Interface Address | ${dut1_node} | ${vhost2} | ${vhost_ip} | ${prefix6} -| | Set Interface State | ${dut1_node} | ${vhost1} | up -| | Set Interface State | ${dut1_node} | ${vhost2} | up -| | Vpp RA Suppress Link Layer | ${dut1_node} | ${vhost2} -| | Create bridge domain | ${dut1_node} | ${bid} | learn=${TRUE} -| | Add interface to bridge domain | ${dut1_node} -| | ... | ${dut1_to_tg} | ${bid} | 0 -| | Add interface to bridge domain | ${dut1_node} -| | ... | ${vhost1} | ${bid} | 0 -| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2} -| | Set test variable | ${dst_vhost_mac} | ${vhost_mac} -| | Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} | ${sock2} diff --git a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6base-func.robot b/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6base-func.robot deleted file mode 100644 index ac3620f8a7..0000000000 --- a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6base-func.robot +++ /dev/null @@ -1,160 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.L2Util -| Library | resources.libraries.python.LispUtil -| Library | resources.libraries.python.IPsecUtil -| Library | resources.libraries.python.VatJsonUtil -| Library | resources.libraries.python.IPv6Setup -| Library | resources.libraries.python.VhostUser -| Library | resources.libraries.python.QemuUtils -| Library | resources.libraries.python.VPPUtil -| Library | String -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/ipsec.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -| Resource | resources/libraries/robot/bridge_domain.robot -# Import configuration and test data: -| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv4/ipv6_lispgpe_ipsec_ipv4.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down LISP functional test -| ... -| Documentation | *IPv6 - ip4-ipsec-lispgpe-ip6 - main fib, vrf, virt2lisp,\ -| ... | phy2lisp* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISPGPE-IPSec-IPv6-ICMP,\ -| ... | Eth-IPv4-IPSec-LISPGPE-IPv6-ICMP -| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec.\ -| ... | IPsec is in transport mode. Tests cases are for IPsec configured both\ -| ... | on RLOC interface or lisp_gpe0 interface. -| ... | *[Ver] TG verification:* Packet is send from TG(if1) across the DUT1 to\ -| ... | DUT2 where it is forwarded to TG(if2). -| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303. - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on RLOC Int. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-LISPGPE-IPSec-IPv6-ICMP on DUT1-DUT2, Eth-IPv6-ICMP\ -| | ... | on TG-DUTn. -| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 with\ -| | ... | IPsec in between DUTS. -| | ... | [Ver] Make TG send ICMPv6 Echo Req between its interfaces across\ -| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830, RFC4303. -| | ... -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Setup Topology And Lisp -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} -| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} -| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -| TC02: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMP\ -| | ... | on TG-DUTn. -| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ -| | ... | IPsec in between DUTS. -| | ... | [Ver] Make TG send ICMPv6 Echo Req between its interfaces across\ -| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830, RFC4303. -| | ... -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Setup Topology And Lisp -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | ${lisp_if_idx}= | resources.libraries.python.InterfaceUtil.get sw if index -| | ... | ${dut1_node} | ${lisp_gpe_int} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut1_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} -| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut2_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} -| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Setup Topology And Lisp -| | [Documentation] | Setup IPs and neighbors for interfaces on DUT1 and DUT2\ -| | ... | and then setup LISP. -| | [Arguments] | ${fib_table}=0 | ${vni_table}=0 | ${ip6}=${FALSE} -| | Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | Set interfaces in 3-node circular topology up -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} -| | ... | ${prefix4} -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} -| | ... | ${prefix6} -| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} -| | ... | ${prefix4} -| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} -| | ... | ${prefix6} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} -| | ... | ${tg_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} -| | ... | ${dut1_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} -| | ... | ${tg_to_dut1_mac} -| | Vpp All RA Suppress Link Layer | ${nodes} -| | Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_to_dut2_ip_static_adjacency} -| | ... | ${dut2_to_dut1_ip_static_adjacency} -| | ... | ${vni_table} | ${fib_table} diff --git a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot b/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot deleted file mode 100644 index 0c87b3a906..0000000000 --- a/tests/func/lisp/eth2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot +++ /dev/null @@ -1,133 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.L2Util -| Library | resources.libraries.python.LispUtil -| Library | resources.libraries.python.IPsecUtil -| Library | resources.libraries.python.VatJsonUtil -| Library | resources.libraries.python.IPv6Setup -| Library | resources.libraries.python.VhostUser -| Library | resources.libraries.python.QemuUtils -| Library | resources.libraries.python.VPPUtil -| Library | String -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/ipsec.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -| Resource | resources/libraries/robot/bridge_domain.robot -# Import configuration and test data: -| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv4/ipv6_lispgpe_ipsec_ipv4.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down LISP functional test -| ... -| Documentation | *IPv6 - ip4-ipsec-lispgpe-ip6 - main fib, vrf, virt2lisp,\ -| ... | phy2lisp* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISPGPE-IPSec-IPv6-ICMP,\ -| ... | Eth-IPv4-IPSec-LISPGPE-IPv6-ICMP -| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec.\ -| ... | IPsec is in transport mode. Tests cases are for IPsec configured both\ -| ... | on RLOC interface or lisp_gpe0 interface. -| ... | *[Ver] TG verification:* Packet is send from TG(if1) across the DUT1 to\ -| ... | DUT2 where it is forwarded to TG(if2). -| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303. - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using physical interfaces and VRF is enabled -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2,\ -| | ... | Eth-IPv6-ICMPv6, on TG-DUTn. -| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ -| | ... | IPsec in between DUTS. -| | ... | [Ver] Case: ip4-ipsec-lispgpe-ip6 - vrf, phy2lisp -| | ... | Make TG send ICMPv6 Echo Req between its interfaces across both\ -| | ... | DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830, RFC4303. -| | ... -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | Assign Interface To Fib Table | ${dut1_node} -| | ... | ${dut1_to_tg} | ${fib_table_1} | ip6=${TRUE} -| | Assign Interface To Fib Table | ${dut2_node} -| | ... | ${dut2_to_tg} | ${fib_table_1} | ip6=${TRUE} -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} -| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} -| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} -| | Setup Topology And Lisp | ${fib_table_1} | ${dut1_dut2_vni} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Setup Topology And Lisp -| | [Documentation] | Setup IPs and neighbors for interfaces on DUT1 and DUT2\ -| | ... | and then setup LISP. -| | [Arguments] | ${fib_table}=0 | ${vni_table}=0 | ${ip6}=${FALSE} -| | Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | Set interfaces in 3-node circular topology up -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} -| | ... | ${prefix4} -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} -| | ... | ${prefix6} -| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} -| | ... | ${prefix4} -| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} -| | ... | ${prefix6} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} -| | ... | ${tg_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} -| | ... | ${dut1_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} -| | ... | ${tg_to_dut1_mac} -| | Vpp All RA Suppress Link Layer | ${nodes} -| | Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_to_dut2_ip_static_adjacency} -| | ... | ${dut2_to_dut1_ip_static_adjacency} -| | ... | ${vni_table} | ${fib_table} diff --git a/tests/func/lisp/eth2p-ethip4lisp-ip4base-func.robot b/tests/func/lisp/eth2p-ethip4lisp-ip4base-func.robot deleted file mode 100644 index b506c9517f..0000000000 --- a/tests/func/lisp/eth2p-ethip4lisp-ip4base-func.robot +++ /dev/null @@ -1,124 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.Trace -# import additional Lisp settings from resource file -| Variables | resources/test_data/lisp/static_adjacency/lisp_static_adjacency.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO -| ... | VM_ENV | HW_ENV -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down functional test -| ... -| Documentation | *IP AFI independent functional tests.* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv4-ICMPv4 on DUT1-DUT2,\ -| ... | Eth-IPv4-ICMPv4 on TG-DUTn for IPv4 routing over LISPoIPv4 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ -| ... | routing and static routes. LISPoIPv4 tunnel is\ -| ... | configured between DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets\ -| ... | are sent in both directions by TG on links to DUT1 and DUT2; on receive\ -| ... | TG verifies packets for correctness and their IPv4 src-addr,\ -| ... | dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv4 over LISPoIPv4 tunnel after disable-enable -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-LISP-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on\ -| | ... | TG-DUTn. -| | ... | [Cfg1] On DUT1 and DUT2 configure IPv4 LISP static adjacencies. -| | ... | [Ver1] Make TG send ICMPv4 Echo Req between its interfaces across\ -| | ... | both DUTs and LISP tunnel between them; verify IPv4 headers on\ -| | ... | received packets are correct. -| | ... | [Cfg2] Disable LISP. -| | ... | [Ver2] Verify packets are not received via LISP tunnel. -| | ... | [Cfg3] Re-enable LISP. -| | ... | [Ver3] Verify packets are received again via LISP tunnel. -| | ... | [Ref] RFC6830. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Configure IP addresses on interfaces -| | ... | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${dut1_to_dut2_ip4} | ${prefix4} -| | ... | ${dut1_node} | ${dut1_to_tg} -| | ... | ${dut1_to_tg_ip4} | ${prefix4} -| | ... | ${dut2_node} | ${dut2_to_dut1} -| | ... | ${dut2_to_dut1_ip4} | ${prefix4} -| | ... | ${dut2_node} | ${dut2_to_tg} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} -| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} -| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} -| | ... | ${tg_to_dut2_mac} -| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} -| | ... | ${tg_to_dut1_mac} -| | When Configure LISP topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_to_dut2_ip4_static_adjacency} -| | ... | ${dut2_to_dut1_ip4_static_adjacency} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} -| | When Disable Lisp | ${dut1_node} -| | Then Packet transmission from port to port should fail -| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Packet transmission from port to port should fail -| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} -| | When Enable Lisp | ${dut1_node} -| | And Vpp Add Lisp Adjacency | ${dut1_node} -| | ... | ${dut1_to_dut2_ip4_static_adjacency['vni']} -| | ... | ${dut1_to_dut2_ip4_static_adjacency['deid']} -| | ... | ${dut1_to_dut2_ip4_static_adjacency['prefix']} -| | ... | ${dut1_to_dut2_ip4_static_adjacency['seid']} -| | ... | ${dut1_to_dut2_ip4_static_adjacency['prefix']} -| | And Vpp Add Lisp Adjacency | ${dut2_node} -| | ... | ${dut2_to_dut1_ip4_static_adjacency['vni']} -| | ... | ${dut2_to_dut1_ip4_static_adjacency['deid']} -| | ... | ${dut2_to_dut1_ip4_static_adjacency['prefix']} -| | ... | ${dut2_to_dut1_ip4_static_adjacency['seid']} -| | ... | ${dut2_to_dut1_ip4_static_adjacency['prefix']} -| | Then Wait Until Keyword Succeeds | 2x | 5s | Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Wait Until Keyword Succeeds | 2x | 5s | Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} diff --git a/tests/func/lisp/eth2p-ethip4lisp-l2bdbasemaclrn-func.robot b/tests/func/lisp/eth2p-ethip4lisp-l2bdbasemaclrn-func.robot deleted file mode 100644 index b4c4459e3d..0000000000 --- a/tests/func/lisp/eth2p-ethip4lisp-l2bdbasemaclrn-func.robot +++ /dev/null @@ -1,95 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.LispUtil -| Library | resources.libraries.python.L2Util -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/lisp/l2lisp.robot -# Import configuration and test data: -| Variables | resources/test_data/lisp/l2/l2_ipv4.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down functional test -| ... -| Documentation | *ip4-lispgpe-ip4 encapsulation test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4-LISPGpe-IP4 -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ -| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ -| ... | DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in\ -| ... | both directions by TG on links to DUT1 and DUT2; on receive\ -| ... | TG verifies packets for correctness and their IPv4 src-addr, dst-addr\ -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Test Cases *** -| TC01: Route IPv4 packet through LISP with Bridge Domain setup. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-ICMPv4-LISPGpe-IP4 -| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. Also\ -| | ... | configure BD and assign it to LISP VNI. -| | ... | [Ver] Make TG send ICMPv4 Echo Req between its interfaces across both\ -| | ... | DUTs and LISP tunnel between them; verify IPv4, Ether headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830. -| | ... -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Configure IP addresses on interfaces -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} | ${prefix4} -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${prefix4} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} | ${prefix4} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} | ${prefix4} -| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} -| | ... | ${tg_to_dut2_mac} -| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} -| | ... | ${tg_to_dut1_mac} -| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_dut1_mac} -| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} -| | ... | ${dut1_to_dut2_mac} -| | When Create L2 BD | ${dut1_node} | ${vpp_bd_id} -| | And Add Interface To L2 BD | ${dut1_node} | ${dut1_to_tg} | ${vpp_bd_id} -| | And Create L2 BD | ${dut2_node} | ${vpp_bd_id} -| | And Add Interface To L2 BD | ${dut2_node} | ${dut2_to_tg} | ${vpp_bd_id} -| | And Configure L2 LISP on DUT | ${dut1_node} -| | ... | ${dut1_to_dut2_ip4_static_adjacency} -| | ... | ${lisp_dut_settings} -| | And Configure L2 LISP on DUT | ${dut2_node} -| | ... | ${dut2_to_dut1_ip4_static_adjacency} -| | ... | ${lisp_dut_settings} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} -| | ... | ${tg_to_dut1} | ${tg_if1_mac} | ${tg_if2_mac} -| | ... | ${tg_to_dut2} | ${tg_if1_mac} | ${tg_if2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} -| | ... | ${tg_to_dut2} | ${tg_if2_mac} | ${tg_if1_mac} -| | ... | ${tg_to_dut1} | ${tg_if2_mac} | ${tg_if1_mac} diff --git a/tests/func/lisp/eth2p-ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot b/tests/func/lisp/eth2p-ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot deleted file mode 100644 index 4b1f281fb8..0000000000 --- a/tests/func/lisp/eth2p-ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot +++ /dev/null @@ -1,121 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.VPPUtil -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.VhostUser -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/vrf.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -# Import configuration and test data: -| Variables | resources/test_data/lisp/ipv4_lispgpe_ipv4/ipv4_lispgpe_ipv4.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node} -| ... -| Documentation | *ip4-lispgpe-ip4 encapsulation test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv4-ICMPv4 on DUT1-DUT2,\ -| ... | Eth-IPv4-ICMPv4 on TG-DUTn for IPv4 routing over LISPoIPv4 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ -| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ -| ... | DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in\ -| ... | both directions by TG on links to DUT1 and DUT2; on receive\ -| ... | TG verifies packets for correctness and their IPv4 src-addr, dst-addr\ -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using vhost interfaces -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on\ -| | ... | TG-DUTn. -| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. -| | ... | [Ver] Case: ip4-lispgpe-ip4 - main fib, virt2lisp -| | ... | Make TG send ICMPv4 Echo Req between its interfaces across both\ -| | ... | DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ -| | ... | received packets are correct. -| | ... -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Configure IP addresses on interfaces -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} | ${prefix4} -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${prefix4} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} | ${prefix4} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} | ${prefix4} -| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} -| | ... | ${tg_to_dut1_mac} -| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} -| | ... | ${tg_to_dut2_mac} -| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_dut1_mac} -| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} -| | ... | ${dut1_to_dut2_mac} -| | When Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_to_dut2_ip4_static_adjacency} -| | ... | ${dut2_to_dut1_ip4_static_adjacency} -| | And Setup Qemu DUT1 -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Setup Qemu DUT1 -| | [Documentation] | Setup Vhosts on DUT1 and setup IP on one of them. Setup\ -| | ... | Qemu and bridge the vhosts. Optionally, you can set fib table ID\ -| | ... | where the vhost2 interface should be assigned to. -| | ... -| | [Arguments] | ${fib_table}=0 -| | ... -| | ${vhost1}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock1} -| | ${vhost2}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock2} -| | Assign Interface To Fib Table | ${dut1_node} -| | ... | ${vhost2} | ${fib_table} -| | Set Interface Address | ${dut1_node} | ${vhost2} | ${vhost_ip} | ${prefix4} -| | Set Interface State | ${dut1_node} | ${vhost1} | up -| | Set Interface State | ${dut1_node} | ${vhost2} | up -| | Create bridge domain | ${dut1_node} | ${bid} | learn=${TRUE} -| | Add interface to bridge domain | ${dut1_node} -| | ... | ${dut1_to_tg} | ${bid} | 0 -| | Add interface to bridge domain | ${dut1_node} -| | ... | ${vhost1} | ${bid} | 0 -| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2} -| | Set test variable | ${dst_vhost_mac} | ${vhost_mac} -| | Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} | ${sock2} diff --git a/tests/func/lisp/eth2p-ethip4lispgpe-ip4base-func.robot b/tests/func/lisp/eth2p-ethip4lispgpe-ip4base-func.robot deleted file mode 100644 index 9c3b7afa31..0000000000 --- a/tests/func/lisp/eth2p-ethip4lispgpe-ip4base-func.robot +++ /dev/null @@ -1,104 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.VPPUtil -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.VhostUser -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/vrf.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -# Import configuration and test data: -| Variables | resources/test_data/lisp/ipv4_lispgpe_ipv4/ipv4_lispgpe_ipv4.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down LISP functional test -| ... -| Documentation | *ip4-lispgpe-ip4 encapsulation test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv4-ICMPv4 on DUT1-DUT2,\ -| ... | Eth-IPv4-ICMPv4 on TG-DUTn for IPv4 routing over LISPoIPv4 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ -| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ -| ... | DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in\ -| ... | both directions by TG on links to DUT1 and DUT2; on receive\ -| ... | TG verifies packets for correctness and their IPv4 src-addr, dst-addr\ -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using physical interfaces -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on\ -| | ... | TG-DUTn. -| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. -| | ... | [Ver] Case: ip4-lispgpe-ip4 - phy2lisp -| | ... | Make TG send ICMPv4 Echo Req between its interfaces across both\ -| | ... | DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830. -| | ... -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Configure IP addresses on interfaces -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} | ${prefix4} -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${prefix4} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} | ${prefix4} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} | ${prefix4} -| | And Add IP Neighbors -| | When Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_to_dut2_ip4_static_adjacency} -| | ... | ${dut2_to_dut1_ip4_static_adjacency} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Add IP Neighbors -| | [Documentation] -| | ... | Add IP neighbors to physical interfaces on DUTs. -| | ... -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} -| | ... | ${tg_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} -| | ... | ${tg_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} -| | ... | ${dut1_to_dut2_mac} diff --git a/tests/func/lisp/eth2p-ethip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot b/tests/func/lisp/eth2p-ethip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot deleted file mode 100644 index d547624225..0000000000 --- a/tests/func/lisp/eth2p-ethip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot +++ /dev/null @@ -1,133 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.VPPUtil -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.VhostUser -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/vrf.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -# Import configuration and test data: -| Variables | resources/test_data/lisp/ipv4_lispgpe_ipv4/ipv4_lispgpe_ipv4.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node} -| ... -| Documentation | *ip4-lispgpe-ip4 encapsulation test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv4-ICMPv4 on DUT1-DUT2,\ -| ... | Eth-IPv4-ICMPv4 on TG-DUTn for IPv4 routing over LISPoIPv4 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ -| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ -| ... | DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in\ -| ... | both directions by TG on links to DUT1 and DUT2; on receive\ -| ... | TG verifies packets for correctness and their IPv4 src-addr, dst-addr\ -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using vhost interfaces and VRF is enabled -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on\ -| | ... | TG-DUTn. -| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. -| | ... | [Ver] Case: ip4-lispgpe-ip4 - vrf, virt2lisp -| | ... | Make TG send ICMPv4 Echo Req between its interfaces across both\ -| | ... | DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830. -| | ... -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Assign Interface To Fib Table | ${dut1_node} -| | ... | ${dut1_to_tg} | ${fib_table_1} -| | And Assign Interface To Fib Table | ${dut2_node} -| | ... | ${dut2_to_tg} | ${fib_table_1} -| | And Add IP Neighbors -| | And Configure IP addresses on interfaces -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} | ${prefix4} -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${prefix4} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} | ${prefix4} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} | ${prefix4} -| | When Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_to_dut2_ip4_static_adjacency} -| | ... | ${dut2_to_dut1_ip4_static_adjacency} -| | ... | ${dut1_dut2_vni} | ${fib_table_1} -| | And Setup Qemu DUT1 | ${fib_table_1} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Setup Qemu DUT1 -| | [Documentation] | Setup Vhosts on DUT1 and setup IP on one of them. Setup\ -| | ... | Qemu and bridge the vhosts. Optionally, you can set fib table ID\ -| | ... | where the vhost2 interface should be assigned to. -| | ... -| | [Arguments] | ${fib_table}=0 -| | ... -| | ${vhost1}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock1} -| | ${vhost2}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock2} -| | Assign Interface To Fib Table | ${dut1_node} -| | ... | ${vhost2} | ${fib_table} -| | Set Interface Address | ${dut1_node} | ${vhost2} | ${vhost_ip} | ${prefix4} -| | Set Interface State | ${dut1_node} | ${vhost1} | up -| | Set Interface State | ${dut1_node} | ${vhost2} | up -| | Create bridge domain | ${dut1_node} | ${bid} | learn=${TRUE} -| | Add interface to bridge domain | ${dut1_node} -| | ... | ${dut1_to_tg} | ${bid} | 0 -| | Add interface to bridge domain | ${dut1_node} -| | ... | ${vhost1} | ${bid} | 0 -| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2} -| | Set test variable | ${dst_vhost_mac} | ${vhost_mac} -| | Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} | ${sock2} - -| Add IP Neighbors -| | [Documentation] -| | ... | Add IP neighbors to physical interfaces on DUTs. -| | ... -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} -| | ... | ${tg_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} -| | ... | ${tg_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} -| | ... | ${dut1_to_dut2_mac} diff --git a/tests/func/lisp/eth2p-ethip4lispgpe-ip4basevrf-func.robot b/tests/func/lisp/eth2p-ethip4lispgpe-ip4basevrf-func.robot deleted file mode 100644 index b4d5c08bb6..0000000000 --- a/tests/func/lisp/eth2p-ethip4lispgpe-ip4basevrf-func.robot +++ /dev/null @@ -1,109 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.VPPUtil -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.VhostUser -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/vrf.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -# Import configuration and test data: -| Variables | resources/test_data/lisp/ipv4_lispgpe_ipv4/ipv4_lispgpe_ipv4.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down LISP functional test -| ... -| Documentation | *ip4-lispgpe-ip4 encapsulation test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv4-ICMPv4 on DUT1-DUT2,\ -| ... | Eth-IPv4-ICMPv4 on TG-DUTn for IPv4 routing over LISPoIPv4 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ -| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ -| ... | DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in\ -| ... | both directions by TG on links to DUT1 and DUT2; on receive\ -| ... | TG verifies packets for correctness and their IPv4 src-addr, dst-addr\ -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using physical interfaces and VRF is enabled -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on\ -| | ... | TG-DUTn. -| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. -| | ... | [Ver] Case: ip4-lispgpe-ip4 - vrf, phy2lisp -| | ... | Make TG send ICMPv4 Echo Req between its interfaces across both\ -| | ... | DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830. -| | ... -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Assign Interface To Fib Table | ${dut1_node} -| | ... | ${dut1_to_tg} | ${fib_table_1} -| | And Assign Interface To Fib Table | ${dut2_node} -| | ... | ${dut2_to_tg} | ${fib_table_1} -| | And Add IP Neighbors -| | And Configure IP addresses on interfaces -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} | ${prefix4} -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${prefix4} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} | ${prefix4} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} | ${prefix4} -| | When Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_to_dut2_ip4_static_adjacency} -| | ... | ${dut2_to_dut1_ip4_static_adjacency} -| | ... | ${dut1_dut2_vni} | ${fib_table_1} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Add IP Neighbors -| | [Documentation] -| | ... | Add IP neighbors to physical interfaces on DUTs. -| | ... -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} -| | ... | ${tg_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} -| | ... | ${tg_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} -| | ... | ${dut1_to_dut2_mac} diff --git a/tests/func/lisp/eth2p-ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot b/tests/func/lisp/eth2p-ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot deleted file mode 100644 index ee4e408de7..0000000000 --- a/tests/func/lisp/eth2p-ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot +++ /dev/null @@ -1,117 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/qemu.robot -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.VhostUser -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.VPPUtil -# import additional Lisp settings from resource file -| Variables | resources/test_data/lisp/static_adjacency/lisp_static_adjacency.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO -| ... | VM_ENV | HW_ENV -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node} -| ... -| Documentation | *LISP static adjacency test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv6-ICMPv6 on DUT1-DUT2,\ -| ... | Eth-IPv6-ICMPv6 on TG-DUTn for IPv6 routing over LISPoIPv4 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ -| ... | routing and static routes. LISPoIPv4 tunnel is configured\ -| ... | between DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets\ -| ... | are sent in both directions by TG on links to DUT1 and DUT2; on receive\ -| ... | TG verifies packets for correctness and their IPv6 src-addr,\ -| ... | dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using vhost interfaces -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on\ -| | ... | TG-DUTn. -| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. -| | ... | [Ver] Case: ip6-lispgpe-ip4 - main fib, virt2lisp -| | ... | Make TG send ICMPv6 Echo Req between its interfaces across both\ -| | ... | DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ -| | ... | received packets are correct. -| | ... -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Configure IP addresses on interfaces -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6o4} -| | ... | ${dut_prefix6o4} -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6o4} | ${tg_prefix6o4} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut_prefix6o4} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} -| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6o4} -| | ... | ${tg_to_dut1_mac} -| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6o4} -| | ... | ${tg_to_dut2_mac} -| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_dut1_mac} -| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6o4} -| | ... | ${dut1_to_dut2_mac} -| | And Vpp All RA Suppress Link Layer | ${nodes} -| | When Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} -| | ... | ${dut2_ip6o4_static_adjacency} -| | And Setup Qemu DUT1 -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip6o4} | ${tg2_ip6o4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip6o4} | ${tg1_ip6o4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Setup Qemu DUT1 -| | [Documentation] | Setup Vhosts on DUT1 and setup IP on one of them. Setup\ -| | ... | Qemu and bridge the vhosts. -| | ... -| | ${vhost1}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock1} -| | ${vhost2}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock2} -| | Set Interface Address | ${dut1_node} | ${vhost2} | ${vhost_ip} | ${prefix4} -| | Set Interface State | ${dut1_node} | ${vhost1} | up -| | Set Interface State | ${dut1_node} | ${vhost2} | up -| | Create bridge domain | ${dut1_node} | ${bid} | learn=${TRUE} -| | Add interface to bridge domain | ${dut1_node} -| | ... | ${dut1_to_tg} | ${bid} | 0 -| | Add interface to bridge domain | ${dut1_node} -| | ... | ${vhost1} | ${bid} | 0 -| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2} -| | Set test variable | ${dst_vhost_mac} | ${vhost_mac} -| | Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} | ${sock2} diff --git a/tests/func/lisp/eth2p-ethip4lispgpe-ip6base-func.robot b/tests/func/lisp/eth2p-ethip4lispgpe-ip6base-func.robot deleted file mode 100644 index 7966d1c57c..0000000000 --- a/tests/func/lisp/eth2p-ethip4lispgpe-ip6base-func.robot +++ /dev/null @@ -1,120 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/qemu.robot -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.VhostUser -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.VPPUtil -# import additional Lisp settings from resource file -| Variables | resources/test_data/lisp/static_adjacency/lisp_static_adjacency.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO -| ... | VM_ENV | HW_ENV -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down functional test -| ... -| Documentation | *LISP static adjacency test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv6-ICMPv6 on DUT1-DUT2,\ -| ... | Eth-IPv6-ICMPv6 on TG-DUTn for IPv6 routing over LISPoIPv4 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ -| ... | routing and static routes. LISPoIPv4 tunnel is configured\ -| ... | between DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets\ -| ... | are sent in both directions by TG on links to DUT1 and DUT2; on receive\ -| ... | TG verifies packets for correctness and their IPv6 src-addr,\ -| ... | dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISPoIPv4 tunnel -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-LISP-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on\ -| | ... | TG-DUTn. -| | ... | [Cfg] On DUT1 and DUT2 configure IPv4 LISP static adjacencies. -| | ... | [Ver] Make TG send ICMPv6 Echo Req between its interfaces across both\ -| | ... | DUTs and LISP tunnel between them; verify IPv6 headers on received\ -| | ... | packets are correct. -| | ... | [Cfg2] Reconf LISP. -| | ... | [Ver2] Verify packets are received again via LISP tunnel. -| | ... | [Ref] RFC6830. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Configure IP addresses on interfaces -| | ... | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${dut1_to_dut2_ip6o4} | ${dut_prefix6o4} -| | ... | ${dut1_node} | ${dut1_to_tg} -| | ... | ${dut1_to_tg_ip6o4} | ${tg_prefix6o4} -| | ... | ${dut2_node} | ${dut2_to_dut1} -| | ... | ${dut2_to_dut1_ip6o4} | ${dut_prefix6o4} -| | ... | ${dut2_node} | ${dut2_to_tg} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} -| | And Add IP Neighbors -| | And Vpp All RA Suppress Link Layer | ${nodes} -| | When Configure LISP topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip6o4} | ${tg2_ip6o4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip6o4} | ${tg1_ip6o4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} -| | When Change LISP Configuration | ${dut1_node} | ${dut2_node} -| | ... | ${dut1_to_dut2} | ${dut2_to_dut1} | ${dut1_to_dut2_mac} -| | ... | ${dut2_to_dut1_mac} | ${dut1_to_dut2_ip6o4} -| | ... | ${dut2_to_dut1_ip6o4_reconf} | ${dut_prefix6o4} -| | ... | ${dut1_ip6o4_static_adjacency} -| | ... | ${dut1_ip6o4_static_adjacency_reconf} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip6o4} | ${tg2_ip6o4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip6o4} | ${tg1_ip6o4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Add IP Neighbors -| | [Documentation] -| | ... | Add IP neighbors to physical interfaces on DUTs. -| | ... -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6o4} -| | ... | ${tg_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6o4} -| | ... | ${tg_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6o4} -| | ... | ${dut1_to_dut2_mac} diff --git a/tests/func/lisp/eth2p-ethip4lispgpe-ip6basevrf-func.robot b/tests/func/lisp/eth2p-ethip4lispgpe-ip6basevrf-func.robot deleted file mode 100644 index d1db5a8a19..0000000000 --- a/tests/func/lisp/eth2p-ethip4lispgpe-ip6basevrf-func.robot +++ /dev/null @@ -1,110 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/qemu.robot -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.VhostUser -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.VPPUtil -# import additional Lisp settings from resource file -| Variables | resources/test_data/lisp/static_adjacency/lisp_static_adjacency.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO -| ... | VM_ENV | HW_ENV -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down LISP functional test -| ... -| Documentation | *LISP static adjacency test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv6-ICMPv6 on DUT1-DUT2,\ -| ... | Eth-IPv6-ICMPv6 on TG-DUTn for IPv6 routing over LISPoIPv4 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ -| ... | routing and static routes. LISPoIPv4 tunnel is configured\ -| ... | between DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets\ -| ... | are sent in both directions by TG on links to DUT1 and DUT2; on receive\ -| ... | TG verifies packets for correctness and their IPv6 src-addr,\ -| ... | dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using physical interfaces and VRF is enabled -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv4-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on\ -| | ... | TG-DUTn. -| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. -| | ... | [Ver] Case: ip6-lispgpe-ip4 - vrf, phy2lisp -| | ... | Make TG send ICMPv4 Echo Req between its interfaces across both\ -| | ... | DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830. -| | ... -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Assign Interface To Fib Table | ${dut1_node} -| | ... | ${dut1_to_tg} | ${fib_table_1} | ip6=${TRUE} -| | And Assign Interface To Fib Table | ${dut2_node} -| | ... | ${dut2_to_tg} | ${fib_table_1} | ip6=${TRUE} -| | And Add IP Neighbors -| | And Configure IP addresses on interfaces -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6o4} -| | ... | ${dut_prefix6o4} -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6o4} | ${tg_prefix6o4} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut_prefix6o4} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} -| | And Vpp All RA Suppress Link Layer | ${nodes} -| | When Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} -| | ... | ${dut2_ip6o4_static_adjacency} -| | ... | ${dut1_dut2_vni} | ${fib_table_1} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip6o4} | ${tg2_ip6o4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip6o4} | ${tg1_ip6o4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Add IP Neighbors -| | [Documentation] -| | ... | Add IP neighbors to physical interfaces on DUTs. -| | ... -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6o4} -| | ... | ${tg_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6o4} -| | ... | ${tg_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6o4} -| | ... | ${dut1_to_dut2_mac} diff --git a/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot b/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot deleted file mode 100644 index 3db32da344..0000000000 --- a/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot +++ /dev/null @@ -1,183 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.L2Util -| Library | resources.libraries.python.LispUtil -| Library | resources.libraries.python.IPsecUtil -| Library | resources.libraries.python.VatJsonUtil -| Library | resources.libraries.python.IPv6Setup -| Library | resources.libraries.python.VhostUser -| Library | resources.libraries.python.QemuUtils -| Library | resources.libraries.python.VPPUtil -| Library | String -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/ipsec.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -| Resource | resources/libraries/robot/bridge_domain.robot -# Import configuration and test data: -| Variables | resources/test_data/lisp/ipv4_lispgpe_ipv6/ipv4_lispgpe_ipsec_ipv6.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node} -| ... -| Documentation | *IPv6 - ip4-ipsec-lispgpe-ip6 - main fib, virt2lisp, phy2lisp* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISPGPE-IPSec-IPv4-ICMP,\ -| ... | Eth-IPv6-IPSec-LISPGPE-IPv4-ICMP -| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec.\ -| ... | IPsec is in transport mode. Test cases are for IPsec configured both\ -| ... | on RLOC interface or lisp_gpe0 interface. -| ... | *[Ver] TG verification:* Packet is send from TG(if1) across the DUT1 to\ -| ... | DUT2 where it is forwarded to TG(if2). -| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303. - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv4 over Vhost to LISP GPE tunnel using IPsec (transport) on RLOC Int. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv6-LISPGPE-IPSec-IPv4-ICMP on DUT1-DUT2, Eth-IPv4-ICMP\ -| | ... | on TG-DUTn. -| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 with\ -| | ... | IPsec in between DUTS. Create Qemu vm on DUT1 and configure bridge\ -| | ... | between two vhosts. -| | ... | [Ver] Case: ip6-ipsec-lispgpe-ip4 - main fib, virt2lisp\ -| | ... | Make TG send ICMPv6 Echo Req between its interfaces across\ -| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830, RFC4303. -| | ... -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Setup Topology And Lisp -| | And Setup Qemu DUT1 -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} -| | ... | ${dut1_to_dut2_ip6} | ${dut2_to_dut1_ip6} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} -| | ... | ${dut2_to_dut1_ip6} | ${dut1_to_dut2_ip6} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -| TC02: DUT1 and DUT2 route IPv4 over Vhost to LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv6-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2,\ -| | ... | Eth-IPv6-ICMPv6, on TG-DUTn. -| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 with\ -| | ... | IPsec in between DUTS. -| | ... | [Ver] Case: ip6-ipsec-lispgpe-ip4 - main fib, virt2lisp\ -| | ... | Make TG send ICMPv6 Echo Req between its interfaces across\ -| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830, RFC4303. -| | ... -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Setup Topology And Lisp -| | And Setup Qemu DUT1 -| | ${lisp1_if_idx}= | resources.libraries.python.InterfaceUtil.get sw if index -| | ... | ${dut1_node} | ${lisp_gpe_int} -| | ${lisp2_if_idx}= | resources.libraries.python.InterfaceUtil.get sw if index -| | ... | ${dut2_node} | ${lisp_gpe_int} -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut1_node} | ${lisp1_if_idx} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} -| | ... | ${dut1_to_dut2_ip6} | ${dut2_to_dut1_ip6} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut2_node} | ${lisp2_if_idx} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} -| | ... | ${dut2_to_dut1_ip6} | ${dut1_to_dut2_ip6} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Setup Topology And Lisp -| | [Documentation] | Setup IPs and neighbors for interfaces on DUT1 and DUT2\ -| | ... | and then setup LISP. -| | Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | Set interfaces in 3-node circular topology up -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} -| | ... | ${prefix6} -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} -| | ... | ${prefix6} -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} -| | ... | ${prefix4} -| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} -| | ... | ${prefix6} -| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} -| | ... | ${prefix4} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} -| | ... | ${tg_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6} -| | ... | ${dut1_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} -| | ... | ${tg_to_dut1_mac} -| | Vpp All RA Suppress Link Layer | ${nodes} -| | Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_to_dut2_ip_static_adjacency} -| | ... | ${dut2_to_dut1_ip_static_adjacency} - -| Setup Qemu DUT1 -| | [Documentation] | Setup Vhosts on DUT1 and setup IP to one of them. Setup\ -| | ... | Qemu and bridge the vhosts. -| | ${vhost1}= | And Vpp Create Vhost User Interface | ${dut1_node} | ${sock1} -| | ${vhost2}= | And Vpp Create Vhost User Interface | ${dut1_node} | ${sock2} -| | Set Interface Address | ${dut1_node} | ${vhost2} | ${vhost_ip} | ${prefix4} -| | Set Interface State | ${dut1_node} | ${vhost1} | up -| | Set Interface State | ${dut1_node} | ${vhost2} | up -| | Create bridge domain | ${dut1_node} | ${bid} | learn=${TRUE} -| | Add interface to bridge domain | ${dut1_node} -| | ... | ${dut1_to_tg} | ${bid} | 0 -| | Add interface to bridge domain | ${dut1_node} -| | ... | ${vhost1} | ${bid} | 0 -| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2} -| | Set test variable | ${dst_vhost_mac} | ${vhost_mac} -| | Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} | ${sock2} diff --git a/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip4base-func.robot b/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip4base-func.robot deleted file mode 100644 index b1f923d36b..0000000000 --- a/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip4base-func.robot +++ /dev/null @@ -1,158 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.L2Util -| Library | resources.libraries.python.LispUtil -| Library | resources.libraries.python.IPsecUtil -| Library | resources.libraries.python.VatJsonUtil -| Library | resources.libraries.python.IPv6Setup -| Library | resources.libraries.python.VhostUser -| Library | resources.libraries.python.QemuUtils -| Library | String -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/ipsec.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -| Resource | resources/libraries/robot/bridge_domain.robot -# Import configuration and test data: -| Variables | resources/test_data/lisp/ipv4_lispgpe_ipv6/ipv4_lispgpe_ipsec_ipv6.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down functional test -| ... -| Documentation | *IPv6 - ip4-ipsec-lispgpe-ip6 - main fib, virt2lisp, phy2lisp* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISPGPE-IPSec-IPv4-ICMP,\ -| ... | Eth-IPv6-IPSec-LISPGPE-IPv4-ICMP -| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec.\ -| ... | IPsec is in transport mode. Tests cases are for IPsec configured both\ -| ... | on RLOC interface or lisp_gpe0 interface. -| ... | *[Ver] TG verification:* Packet is send from TG(if1) across the DUT1 to\ -| ... | DUT2 where it is forwarded to TG(if2). -| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303. - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on RLOC Int. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv6-LISPGPE-IPSec-IPv4-ICMP on DUT1-DUT2, Eth-IPv4-ICMP\ -| | ... | on TG-DUTn. -| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 with\ -| | ... | IPsec in between DUTS. -| | ... | [Ver] Make TG send ICMPv6 Echo Req between its interfaces across\ -| | ... | both DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830, RFC4303. -| | ... -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Setup Topology And Lisp -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} -| | ... | ${dut1_to_dut2_ip6} | ${dut2_to_dut1_ip6} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} -| | ... | ${dut2_to_dut1_ip6} | ${dut1_to_dut2_ip6} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -| TC02: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv6-IPSec-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMP\ -| | ... | on TG-DUTn. -| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 with\ -| | ... | IPsec in between DUTS. -| | ... | [Ver] Make TG send ICMPv6 Echo Req between its interfaces across\ -| | ... | both DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830, RFC4303. -| | ... -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Setup Topology And Lisp -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | ${lisp_if_idx}= | resources.libraries.python.InterfaceUtil.get sw if index -| | ... | ${dut1_node} | ${lisp_gpe_int} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut1_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} -| | ... | ${dut1_to_dut2_ip6} | ${dut2_to_dut1_ip6} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut2_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} -| | ... | ${dut2_to_dut1_ip6} | ${dut1_to_dut2_ip6} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Setup Topology And Lisp -| | [Documentation] | Setup IPs and neighbors for interfaces on DUT1 and DUT2\ -| | ... | and then setup LISP. -| | Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | Set interfaces in 3-node circular topology up -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} -| | ... | ${prefix6} -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} -| | ... | ${prefix6} -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} -| | ... | ${prefix4} -| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} -| | ... | ${prefix6} -| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} -| | ... | ${prefix4} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} -| | ... | ${tg_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6} -| | ... | ${dut1_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} -| | ... | ${tg_to_dut1_mac} -| | Vpp All RA Suppress Link Layer | ${nodes} -| | Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_to_dut2_ip_static_adjacency} -| | ... | ${dut2_to_dut1_ip_static_adjacency} diff --git a/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot b/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot deleted file mode 100644 index e03d8fff38..0000000000 --- a/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot +++ /dev/null @@ -1,201 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.L2Util -| Library | resources.libraries.python.LispUtil -| Library | resources.libraries.python.VPPUtil -| Library | resources.libraries.python.IPsecUtil -| Library | resources.libraries.python.VatJsonUtil -| Library | resources.libraries.python.IPv6Setup -| Library | resources.libraries.python.VhostUser -| Library | resources.libraries.python.QemuUtils -| Library | String -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/ipsec.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -| Resource | resources/libraries/robot/bridge_domain.robot -# Import configuration and test data: -| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipsec_ipv6.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH -| ... -| Test Setup | Run Keywords | Set up functional test -| ... | AND | Vpp All Ra Suppress Link Layer | ${nodes} -| ... -| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node} -| ... -| Documentation | *IPv6 - ip6-ipsec-lispgpe-ip6 - main fib, -| ... | vrf (gpe_vni-to-vrf), phy2lisp, virt2lisp* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-IPSec-LISPGPE-IPv6-ICMPv6,\ -| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec.\ -| ... | IPsec is in transport mode. Tests cases are for IPsec configured both\ -| ... | on RLOC interface or lisp_gpe0 interface. -| ... | *[Ver] TG verification:* Packet is send from TG(if1) across the DUT1\ -| ... | via VM to DUT2 where it is forwarded to TG(if2). -| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303. - -*** Variables *** -| ${dut2_spi}= | ${1000} -| ${dut1_spi}= | ${1001} - -| ${ESP_PROTO}= | ${50} - -| ${sock1}= | /tmp/sock1 -| ${sock2}= | /tmp/sock2 - -| ${bid}= | 10 - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv6 over Vhost to LISP GPE tunnel using IPsec (transport) on RLOC Int. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv6-IPSec-LISPGPE-IPv6-ICMP on DUT1-DUT2, Eth-IPv6-ICMP\ -| | ... | on TG-DUTn. -| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 with\ -| | ... | IPsec in between DUTS. Create Qemu vm on DUT1 and configure bridge\ -| | ... | between two vhosts. -| | ... | [Ver] Case: ip6-ipsec-lispgpe-ip6 - main fib, virt2lisp\ -| | ... | Make TG send ICMPv6 Echo Req between its interfaces across\ -| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830, RFC4303. -| | ... -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Setup Topology -| | And Setup Qemu DUT1 -| | And Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_to_dut2_ip6_static_adjacency} -| | ... | ${dut2_to_dut1_ip6_static_adjacency} -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} -| | ... | ${dut1_to_dut2_ip6} | ${dut2_to_dut1_ip6} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} -| | ... | ${dut2_to_dut1_ip6} | ${dut1_to_dut2_ip6} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -| TC02: DUT1 and DUT2 route IPv6 over Vhost to LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv6-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2,\ -| | ... | Eth-IPv6-ICMPv6 on TG-DUTn. -| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 with\ -| | ... | IPsec in between DUTS. -| | ... | [Ver] Case: ip6-ipsec-lispgpe-ip6 - main fib, virt2lisp\ -| | ... | Make TG send ICMPv6 Echo Req between its interfaces across\ -| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830, RFC4303. -| | ... -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Setup Topology -| | And Setup Qemu DUT1 -| | And Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_to_dut2_ip6_static_adjacency} -| | ... | ${dut2_to_dut1_ip6_static_adjacency} -| | ${lisp1_if_idx}= | resources.libraries.python.InterfaceUtil.get sw if index -| | ... | ${dut1_node} | lisp_gpe0 -| | ${lisp2_if_idx}= | resources.libraries.python.InterfaceUtil.get sw if index -| | ... | ${dut2_node} | lisp_gpe0 -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut1_node} | ${lisp1_if_idx} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} -| | ... | ${dut1_to_dut2_ip6} | ${dut2_to_dut1_ip6} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut2_node} | ${lisp2_if_idx} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} -| | ... | ${dut2_to_dut1_ip6} | ${dut1_to_dut2_ip6} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Setup Topology -| | Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | Set interfaces in 3-node circular topology up -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} -| | ... | ${prefix6} -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} -| | ... | ${prefix6} -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} -| | ... | ${prefix6} -| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} -| | ... | ${prefix6} -| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} -| | ... | ${prefix6} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} -| | ... | ${tg_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} -| | ... | ${tg_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6} -| | ... | ${dut1_to_dut2_mac} -| | Vpp All RA Suppress Link Layer | ${nodes} - -| Setup Qemu DUT1 -| | [Documentation] | Setup Vhosts on DUT1 and setup IP to one of them. Setup \ -| | ... | Qemu and bridge the vhosts. -| | ${vhost1}= | And Vpp Create Vhost User Interface | ${dut1_node} | ${sock1} -| | ${vhost2}= | And Vpp Create Vhost User Interface | ${dut1_node} | ${sock2} -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${vhost2} | 2001:cdba:1::9 -| | ... | ${prefix6} -| | Set Interface State | ${dut1_node} | ${vhost1} | up -| | Set Interface State | ${dut1_node} | ${vhost2} | up -| | Vpp RA Suppress Link Layer | ${dut1_node} | ${vhost2} -| | Create bridge domain | ${dut1_node} | ${bid} | learn=${TRUE} -| | Add interface to bridge domain | ${dut1_node} -| | ... | ${dut1_to_tg} | ${bid} | 0 -| | Add interface to bridge domain | ${dut1_node} -| | ... | ${vhost1} | ${bid} | 0 -| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2} -| | Set test variable | ${dst_vhost_mac} | ${vhost_mac} -| | Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} | ${sock2} diff --git a/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip6base-func.robot b/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip6base-func.robot deleted file mode 100644 index 177550f468..0000000000 --- a/tests/func/lisp/eth2p-ethip6ipsectptlispgpe-ip6base-func.robot +++ /dev/null @@ -1,174 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.L2Util -| Library | resources.libraries.python.LispUtil -| Library | resources.libraries.python.VPPUtil -| Library | resources.libraries.python.IPsecUtil -| Library | resources.libraries.python.VatJsonUtil -| Library | resources.libraries.python.IPv6Setup -| Library | resources.libraries.python.VhostUser -| Library | resources.libraries.python.QemuUtils -| Library | String -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/ipsec.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -| Resource | resources/libraries/robot/bridge_domain.robot -# Import configuration and test data: -| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipsec_ipv6.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH -| ... -| Test Setup | Run Keywords | Set up functional test -| ... | AND | Vpp All Ra Suppress Link Layer | ${nodes} -| ... -| Test Teardown | Tear down functional test -| ... -| Documentation | *IPv6 - ip6-ipsec-lispgpe-ip6 - main fib, -| ... | vrf (gpe_vni-to-vrf), phy2lisp, virt2lisp* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-IPSec-LISPGPE-IPv6-ICMPv6,\ -| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec.\ -| ... | IPsec is in transport mode. Tests cases are for IPsec configured both\ -| ... | on RLOC interface or lisp_gpe0 interface. -| ... | *[Ver] TG verification:* Packet is send from TG(if1) across the DUT1\ -| ... | to DUT2 where it is forwarded to TG(if2). -| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303. - -*** Variables *** -| ${dut2_spi}= | ${1000} -| ${dut1_spi}= | ${1001} - -| ${ESP_PROTO}= | ${50} - -| ${bid}= | 10 - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using IPsec (transport) on RLOC Int. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv6-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2,\ -| | ... | Eth-IPv6-ICMPv6 on TG-DUTn. -| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 with\ -| | ... | IPsec in between DUTS. -| | ... | [Ver] Case: ip6-lispgpe-ipsec-ip6 - main fib, phys2lisp\ -| | ... | Make TG send ICMPv6 Echo Req between its interfaces across\ -| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830, RFC4303. -| | ... -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Setup Topology -| | And Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_to_dut2_ip6_static_adjacency} -| | ... | ${dut2_to_dut1_ip6_static_adjacency} -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} -| | ... | ${dut1_to_dut2_ip6} | ${dut2_to_dut1_ip6} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} -| | ... | ${dut2_to_dut1_ip6} | ${dut1_to_dut2_ip6} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -| TC02: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using IPsec (transport) lisp_gpe0 Int. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv6-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2,\ -| | ... | Eth-IPv6-ICMPv6 on TG-DUTn. -| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 with\ -| | ... | IPsec in between DUTS. -| | ... | [Ver] Case: ip6-ipsec-lispgpe-ip6 - main fib, phys2lisp\ -| | ... | Make TG send ICMPv6 Echo Req between its interfaces across\ -| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830, RFC4303. -| | ... -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Setup Topology -| | And Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_to_dut2_ip6_static_adjacency} -| | ... | ${dut2_to_dut1_ip6_static_adjacency} -| | ${lisp_if_idx}= | resources.libraries.python.InterfaceUtil.get sw if index -| | ... | ${dut1_node} | lisp_gpe0 -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | When Configure manual keyed connection for IPSec -| | ... | ${dut1_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} | ${tg1_ip6} -| | ... | ${tg2_ip6} -| | And Configure manual keyed connection for IPSec -| | ... | ${dut2_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} -| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} | ${tg2_ip6} -| | ... | ${tg1_ip6} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Setup Topology -| | Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | Set interfaces in 3-node circular topology up -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} -| | ... | ${prefix6} -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} -| | ... | ${prefix6} -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} -| | ... | ${prefix6} -| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} -| | ... | ${prefix6} -| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} -| | ... | ${prefix6} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} -| | ... | ${tg_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} -| | ... | ${tg_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6} -| | ... | ${dut1_to_dut2_mac} -| | Vpp All RA Suppress Link Layer | ${nodes} diff --git a/tests/func/lisp/eth2p-ethip6lisp-l2bdbasemaclrn-func.robot b/tests/func/lisp/eth2p-ethip6lisp-l2bdbasemaclrn-func.robot deleted file mode 100644 index 7db90b677a..0000000000 --- a/tests/func/lisp/eth2p-ethip6lisp-l2bdbasemaclrn-func.robot +++ /dev/null @@ -1,96 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.LispUtil -| Library | resources.libraries.python.L2Util -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/lisp/l2lisp.robot -# Import configuration and test data: -| Variables | resources/test_data/lisp/l2/l2_ipv6.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down functional test -| ... -| Documentation | *l2-lispgpe-ip6 encapsulation test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IP6-ICMPv6-LISPGpe-IP6 -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge\ -| ... | domains and neighbors. LISPoIPv6 tunnel is configured between\ -| ... | DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in\ -| ... | both directions by TG on links to DUT1 and DUT2; on receive\ -| ... | TG verifies packets for correctness and their IPv6 src-addr, dst-addr\ -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Test Cases *** -| TC01: Route IPv6 packet through LISP with Bridge Domain setup. -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IP6-ICMPv6-LISPGpe-IP6 -| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2. Also\ -| | ... | configure BD and assign it to LISP VNI. -| | ... | [Ver] Make TG send ICMPv6 Echo Req between its interfaces across both\ -| | ... | DUTs and LISP tunnel between them; verify IPv6, Ether headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830. -| | ... -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Configure IP addresses on interfaces -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} | ${prefix6} -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} | ${prefix6} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} | ${prefix6} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} | ${prefix6} -| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} -| | ... | ${tg_to_dut2_mac} -| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} -| | ... | ${tg_to_dut1_mac} -| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_dut1_mac} -| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6} -| | ... | ${dut1_to_dut2_mac} -| | And Vpp All RA Suppress Link Layer | ${nodes} -| | When Create L2 BD | ${dut1_node} | ${vpp_bd_id} -| | And Add Interface To L2 BD | ${dut1_node} | ${dut1_to_tg} | ${vpp_bd_id} -| | And Create L2 BD | ${dut2_node} | ${vpp_bd_id} -| | And Add Interface To L2 BD | ${dut2_node} | ${dut2_to_tg} | ${vpp_bd_id} -| | And Configure L2 LISP on DUT | ${dut1_node} -| | ... | ${dut1_to_dut2_ip6_static_adjacency} -| | ... | ${lisp_dut_settings} -| | And Configure L2 LISP on DUT | ${dut2_node} -| | ... | ${dut2_to_dut1_ip6_static_adjacency} -| | ... | ${lisp_dut_settings} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} -| | ... | ${tg_to_dut1} | ${tg_if1_mac} | ${tg_if2_mac} -| | ... | ${tg_to_dut2} | ${tg_if1_mac} | ${tg_if2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} -| | ... | ${tg_to_dut2} | ${tg_if2_mac} | ${tg_if1_mac} -| | ... | ${tg_to_dut1} | ${tg_if2_mac} | ${tg_if1_mac} diff --git a/tests/func/lisp/eth2p-ethip6lispgpe-ip4base-func.robot b/tests/func/lisp/eth2p-ethip6lispgpe-ip4base-func.robot deleted file mode 100644 index 5ddf50eb96..0000000000 --- a/tests/func/lisp/eth2p-ethip6lispgpe-ip4base-func.robot +++ /dev/null @@ -1,108 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.Trace -# import additional Lisp settings from resource file -| Variables | resources/test_data/lisp/static_adjacency/lisp_static_adjacency.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO -| ... | VM_ENV | HW_ENV -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down functional test -| ... -| Documentation | *LISP static adjacency test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv4-ICMPv4 on\ -| ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn for IPv4 routing over LISPoIPv6\ -| ... | tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ -| ... | routing and static routes. LISPoIPv6 tunnel is configured\ -| ... | between DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets\ -| ... | are sent in both directions by TG on links to DUT1 and DUT2; on receive\ -| ... | TG verifies packets for correctness and their IPv4 src-addr,\ -| ... | dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISPoIPv6 tunnel -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv6-LISP-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on\ -| | ... | TG-DUTn. -| | ... | [Cfg] On DUT1 and DUT2 configure IPv6 LISP static adjacencies. -| | ... | [Ver] Make TG send ICMPv4 Echo Req between its interfaces across both\ -| | ... | DUTs and LISP tunnel between them; verify IPv4 headers on received\ -| | ... | packets are correct. -| | ... | [Cfg2] Reconf LISP. -| | ... | [Ver2] Verify packets are received again via LISP tunnel. -| | ... | [Ref] RFC6830. -| | ... -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Configure IP addresses on interfaces -| | ... | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${dut1_to_dut2_ip4o6} | ${dut_prefix4o6} -| | ... | ${dut1_node} | ${dut1_to_tg} -| | ... | ${dut1_to_tg_ip4o6} | ${tg_prefix4o6} -| | ... | ${dut2_node} | ${dut2_to_dut1} -| | ... | ${dut2_to_dut1_ip4o6} | ${dut_prefix4o6} -| | ... | ${dut2_node} | ${dut2_to_tg} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} -| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4o6} -| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4o6} -| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4o6} -| | ... | ${tg_to_dut2_mac} -| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4o6} -| | ... | ${tg_to_dut1_mac} -| | And Vpp All RA Suppress Link Layer | ${nodes} -| | When Configure LISP topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip4o6} | ${tg2_ip4o6} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip4o6} | ${tg1_ip4o6} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} -| | When Change LISP Configuration | ${dut1_node} | ${dut2_node} -| | ... | ${dut1_to_dut2} | ${dut2_to_dut1} | ${dut1_to_dut2_mac} -| | ... | ${dut2_to_dut1_mac} | ${dut1_to_dut2_ip4o6} -| | ... | ${dut2_to_dut1_ip4o6_reconf} | ${dut_prefix4o6} -| | ... | ${dut1_ip4o6_static_adjacency} -| | ... | ${dut1_ip4o6_static_adjacency_reconf} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip4o6} | ${tg2_ip4o6} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip4o6} | ${tg1_ip4o6} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} diff --git a/tests/func/lisp/eth2p-ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot b/tests/func/lisp/eth2p-ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot deleted file mode 100644 index afcbab6918..0000000000 --- a/tests/func/lisp/eth2p-ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot +++ /dev/null @@ -1,131 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.IPv6Setup -| Library | resources.libraries.python.VPPUtil -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/vrf.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -# Import configuration and test data: -| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipv6.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP -| ... -| Test Setup | Run Keywords | Set up functional test -| ... | AND | Vpp All Ra Suppress Link Layer | ${nodes} -| ... -| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node} -| ... -| Documentation | *ip6-lispgpe-ip6 encapsulation test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv6-ICMPv6 on DUT1-DUT2,\ -| ... | Eth-IPv6-ICMPv6 on TG-DUTn for IPv6 routing over LISPoIPv6 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ -| ... | routing and static routes. LISPoIPv6 tunnel is configured between\ -| ... | DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in\ -| ... | both directions by TG on links to DUT1 and DUT2; on receive\ -| ... | TG verifies packets for correctness and their IPv6 src-addr, dst-addr\ -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using vhost interfaces -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv6-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on\ -| | ... | TG-DUTn. -| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2. -| | ... | [Ver] Case: ip6-ipsec-lispgpe-ip6 - main fib, virt2lisp -| | ... | Make TG send ICMPv6 Echo Req between its interfaces across both\ -| | ... | DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ -| | ... | received packets are correct. -| | ... -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Vpp Set If IPv6 Addr -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} | ${prefix6} -| | And Vpp Set If IPv6 Addr -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} | ${prefix6} -| | And Vpp Set If IPv6 Addr -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} | ${prefix6} -| | And Vpp Set If IPv6 Addr -| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} | ${prefix6} -| | And Add IP Neighbors -| | And Vpp All RA Suppress Link Layer | ${nodes} -| | When Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_to_dut2_ip6_static_adjacency} -| | ... | ${dut2_to_dut1_ip6_static_adjacency} -| | And Setup Qemu DUT1 -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Setup Qemu DUT1 -| | [Documentation] | Setup Vhosts on DUT1 and setup IP on one of them. Setup\ -| | ... | Qemu and bridge the vhosts. Optionally, you can set fib table ID\ -| | ... | where the vhost2 interface should be assigned to. -| | ... -| | [Arguments] | ${fib_table}=0 -| | ... -| | ${vhost1}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock1} -| | ${vhost2}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock2} -| | Assign Interface To Fib Table | ${dut1_node} -| | ... | ${vhost2} | ${fib_table} | ipv6=${TRUE} -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${vhost2} | ${vhost_ip} -| | ... | ${prefix6} -| | Set Interface State | ${dut1_node} | ${vhost1} | up -| | Set Interface State | ${dut1_node} | ${vhost2} | up -| | Create bridge domain | ${dut1_node} | ${bid} | learn=${TRUE} -| | Add interface to bridge domain | ${dut1_node} -| | ... | ${dut1_to_tg} | ${bid} | 0 -| | Add interface to bridge domain | ${dut1_node} -| | ... | ${vhost1} | ${bid} | 0 -| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2} -| | Set test variable | ${dst_vhost_mac} | ${vhost_mac} -| | Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} | ${sock2} - -| Add IP Neighbors -| | [Documentation] -| | ... | Add IP neighbors to physical interfaces on DUTs. -| | ... -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} -| | ... | ${tg_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} -| | ... | ${tg_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6} -| | ... | ${dut1_to_dut2_mac} diff --git a/tests/func/lisp/eth2p-ethip6lispgpe-ip6base-func.robot b/tests/func/lisp/eth2p-ethip6lispgpe-ip6base-func.robot deleted file mode 100644 index 93399bbe35..0000000000 --- a/tests/func/lisp/eth2p-ethip6lispgpe-ip6base-func.robot +++ /dev/null @@ -1,107 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.IPv6Setup -| Library | resources.libraries.python.VPPUtil -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/vrf.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -# Import configuration and test data: -| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipv6.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP -| ... -| Test Setup | Run Keywords | Set up functional test -| ... | AND | Vpp All Ra Suppress Link Layer | ${nodes} -| ... -| Test Teardown | Tear down LISP functional test -| ... -| Documentation | *ip6-lispgpe-ip6 encapsulation test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv6-ICMPv6 on DUT1-DUT2,\ -| ... | Eth-IPv6-ICMPv6 on TG-DUTn for IPv6 routing over LISPoIPv6 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ -| ... | routing and static routes. LISPoIPv6 tunnel is configured between\ -| ... | DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in\ -| ... | both directions by TG on links to DUT1 and DUT2; on receive\ -| ... | TG verifies packets for correctness and their IPv6 src-addr, dst-addr\ -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using physical interfaces -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv6-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on\ -| | ... | TG-DUTn. -| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2. -| | ... | [Ver] Case: ip6-lispgpe-ip6 - phy2lisp -| | ... | Make TG send ICMPv6 Echo Req between its interfaces across both\ -| | ... | DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830. -| | ... -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Vpp Set If IPv6 Addr -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} | ${prefix6} -| | And Vpp Set If IPv6 Addr -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} | ${prefix6} -| | And Vpp Set If IPv6 Addr -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} | ${prefix6} -| | And Vpp Set If IPv6 Addr -| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} | ${prefix6} -| | And Add IP Neighbors -| | And Vpp All RA Suppress Link Layer | ${nodes} -| | When Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_to_dut2_ip6_static_adjacency} -| | ... | ${dut2_to_dut1_ip6_static_adjacency} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Add IP Neighbors -| | [Documentation] -| | ... | Add IP neighbors to physical interfaces on DUTs. -| | ... -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} -| | ... | ${tg_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} -| | ... | ${tg_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6} -| | ... | ${dut1_to_dut2_mac} diff --git a/tests/func/lisp/eth2p-ethip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot b/tests/func/lisp/eth2p-ethip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot deleted file mode 100644 index b41cb37d94..0000000000 --- a/tests/func/lisp/eth2p-ethip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot +++ /dev/null @@ -1,138 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.IPv6Setup -| Library | resources.libraries.python.VPPUtil -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/vrf.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -# Import configuration and test data: -| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipv6.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP -| ... -| Test Setup | Run Keywords | Set up functional test -| ... | AND | Vpp All Ra Suppress Link Layer | ${nodes} -| ... -| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node} -| ... -| Documentation | *ip6-lispgpe-ip6 encapsulation test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv6-ICMPv6 on DUT1-DUT2,\ -| ... | Eth-IPv6-ICMPv6 on TG-DUTn for IPv6 routing over LISPoIPv6 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ -| ... | routing and static routes. LISPoIPv6 tunnel is configured between\ -| ... | DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in\ -| ... | both directions by TG on links to DUT1 and DUT2; on receive\ -| ... | TG verifies packets for correctness and their IPv6 src-addr, dst-addr\ -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using vhost interfaces and VRF is enabled -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv6-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on\ -| | ... | TG-DUTn. -| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2. -| | ... | [Ver] Case: ip6-lispgpe-ip6 - vrf, virt2lisp -| | ... | Make TG send ICMPv6 Echo Req between its interfaces across both\ -| | ... | DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830. -| | ... -| | ... -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Assign Interface To Fib Table | ${dut1_node} -| | ... | ${dut1_to_tg} | ${fib_table_1} | ipv6=${TRUE} -| | And Assign Interface To Fib Table | ${dut2_node} -| | ... | ${dut2_to_tg} | ${fib_table_1} | ipv6=${TRUE} -| | And Vpp Set If IPv6 Addr -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} | ${prefix6} -| | And Vpp Set If IPv6 Addr -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} | ${prefix6} -| | And Vpp Set If IPv6 Addr -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} | ${prefix6} -| | And Vpp Set If IPv6 Addr -| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} | ${prefix6} -| | And Add IP Neighbors -| | And Vpp All RA Suppress Link Layer | ${nodes} -| | When Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_to_dut2_ip6_static_adjacency} -| | ... | ${dut2_to_dut1_ip6_static_adjacency} -| | ... | ${dut1_dut2_vni} | ${fib_table_1} -| | And Setup Qemu DUT1 | ${fib_table_1} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Setup Qemu DUT1 -| | [Documentation] | Setup Vhosts on DUT1 and setup IP on one of them. Setup\ -| | ... | Qemu and bridge the vhosts. Optionally, you can set fib table ID\ -| | ... | where the vhost2 interface should be assigned to. -| | ... -| | [Arguments] | ${fib_table}=0 -| | ... -| | ${vhost1}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock1} -| | ${vhost2}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock2} -| | Assign Interface To Fib Table | ${dut1_node} -| | ... | ${vhost2} | ${fib_table} | ipv6=${TRUE} -| | Vpp Set If IPv6 Addr | ${dut1_node} | ${vhost2} | ${vhost_ip} -| | ... | ${prefix6} -| | Set Interface State | ${dut1_node} | ${vhost1} | up -| | Set Interface State | ${dut1_node} | ${vhost2} | up -| | Create bridge domain | ${dut1_node} | ${bid} | learn=${TRUE} -| | Add interface to bridge domain | ${dut1_node} -| | ... | ${dut1_to_tg} | ${bid} | 0 -| | Add interface to bridge domain | ${dut1_node} -| | ... | ${vhost1} | ${bid} | 0 -| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2} -| | Set test variable | ${dst_vhost_mac} | ${vhost_mac} -| | Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} | ${sock2} - -| Add IP Neighbors -| | [Documentation] -| | ... | Add IP neighbors to physical interfaces on DUTs. -| | ... -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} -| | ... | ${tg_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} -| | ... | ${tg_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6} -| | ... | ${dut1_to_dut2_mac} diff --git a/tests/func/lisp/eth2p-ethip6lispgpe-ip6basevrf-func.robot b/tests/func/lisp/eth2p-ethip6lispgpe-ip6basevrf-func.robot deleted file mode 100644 index 281bbd0dda..0000000000 --- a/tests/func/lisp/eth2p-ethip6lispgpe-ip6basevrf-func.robot +++ /dev/null @@ -1,112 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.IPv6Setup -| Library | resources.libraries.python.VPPUtil -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/vrf.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -# Import configuration and test data: -| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipv6.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP -| ... -| Test Setup | Run Keywords | Set up functional test -| ... | AND | Vpp All Ra Suppress Link Layer | ${nodes} -| ... -| Test Teardown | Tear down LISP functional test -| ... -| Documentation | *ip6-lispgpe-ip6 encapsulation test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv6-ICMPv6 on DUT1-DUT2,\ -| ... | Eth-IPv6-ICMPv6 on TG-DUTn for IPv6 routing over LISPoIPv6 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ -| ... | routing and static routes. LISPoIPv6 tunnel is configured between\ -| ... | DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in\ -| ... | both directions by TG on links to DUT1 and DUT2; on receive\ -| ... | TG verifies packets for correctness and their IPv6 src-addr, dst-addr\ -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Test Cases *** -| TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using physical interfaces and VRF is enabled -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. -| | ... | [Enc] Eth-IPv6-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on\ -| | ... | TG-DUTn. -| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2. -| | ... | [Ver] Case: ip6-lispgpe-ip6 - vrf, phy2lisp -| | ... | Make TG send ICMPv6 Echo Req between its interfaces across both\ -| | ... | DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ -| | ... | received packets are correct. -| | ... | [Ref] RFC6830. -| | ... -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Assign Interface To Fib Table | ${dut1_node} -| | ... | ${dut1_to_tg} | ${fib_table_1} | ipv6=${TRUE} -| | And Assign Interface To Fib Table | ${dut2_node} -| | ... | ${dut2_to_tg} | ${fib_table_1} | ipv6=${TRUE} -| | And Vpp Set If IPv6 Addr -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} | ${prefix6} -| | And Vpp Set If IPv6 Addr -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} | ${prefix6} -| | And Vpp Set If IPv6 Addr -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} | ${prefix6} -| | And Vpp Set If IPv6 Addr -| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} | ${prefix6} -| | And Add IP Neighbors -| | And Vpp All RA Suppress Link Layer | ${nodes} -| | When Configure LISP GPE topology in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_to_dut2_ip6_static_adjacency} -| | ... | ${dut2_to_dut1_ip6_static_adjacency} -| | ... | ${dut1_dut2_vni} | ${fib_table_1} -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} -| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} -| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} -| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} -| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} - -*** Keywords *** -| Add IP Neighbors -| | [Documentation] -| | ... | Add IP neighbors to physical interfaces on DUTs. -| | ... -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} -| | ... | ${tg_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} -| | ... | ${tg_to_dut2_mac} -| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_dut1_mac} -| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6} -| | ... | ${dut1_to_dut2_mac} diff --git a/tests/func/policer/eth2p-ethip4-ip4base-ipolicemarkbase-func.robot b/tests/func/policer/eth2p-ethip4-ip4base-ipolicemarkbase-func.robot deleted file mode 100644 index 9992bb76a3..0000000000 --- a/tests/func/policer/eth2p-ethip4-ip4base-ipolicemarkbase-func.robot +++ /dev/null @@ -1,162 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | VM_ENV | HW_ENV -| Resource | resources/libraries/robot/policer.robot -| Library | resources.libraries.python.Trace -| Test Setup | Run Keywords | Set up functional test -| ... | AND | Configure topology for IPv4 policer test -| Test Teardown | Tear down functional test -| Documentation | *IPv4 policer test cases* -| ... -| ... | *[Top] Network topologies:* TG=DUT1 2-node topology with two links\ -| ... | between nodes. -| ... | *[Cfg] DUT configuration:* On DUT1 configure interfaces IPv4 adresses,\ -| ... | and static ARP record on the second interface. -| ... | *[Ver] TG verification:* Test packet is sent from TG on the first link\ -| ... | to DUT1. Packet is received on TG on the second link from DUT1. -| ... | *[Ref] Applicable standard specifications:* RFC2474, RFC2697, RFC2698. - -*** Variables *** -| ${tg_to_dut_if1_ip4}= | 192.168.122.2 -| ${tg_to_dut_if2_ip4}= | 192.168.123.2 -| ${dut_to_tg_if1_ip4}= | 192.168.122.1 -| ${dut_to_tg_if2_ip4}= | 192.168.123.1 -| ${ip4_plen}= | ${24} - -| ${cir}= | ${100} -| ${eir}= | ${150} -| ${cb}= | ${200} -| ${eb}= | ${300} - -*** Test Cases *** -| TC01: VPP policer 2R3C Color-aware marks packet -| | [Documentation] -| | ... | [Top] TG=DUT1. -| | ... | [Ref] RFC2474, RFC2698. -| | ... | [Cfg] On DUT1 configure 2R3C color-aware policer on the first\ -| | ... | interface. -| | ... | [Ver] TG sends IPv4 TCP packet on the first link to DUT1.\ -| | ... | On DUT1 packet is marked with DSCP tag. Verify if DUT1 sends\ -| | ... | correct IPv4 TCP packet with correct DSCP on the second link to TG. -| | ${dscp}= | DSCP AF22 -| | Given Policer Set Name | policer1 -| | And Policer Set Node | ${dut_node} -| | And Policer Set CIR | ${cir} -| | And Policer Set EIR | ${eir} -| | And Policer Set CB | ${cb} -| | And Policer Set EB | ${eb} -| | And Policer Set Rate Type pps -| | And Policer Set Round Type Closest -| | And Policer Set Type 2R3C 2698 -| | And Policer Set Conform Action Transmit -| | And Policer Set Exceed Action Mark and Transmit | ${dscp} -| | And Policer Set Violate Action Drop -| | And Policer Enable Color Aware -| | And Policer Classify Set Precolor Exceed -| | And Policer Classify Set Interface | ${dut_to_tg_if1} -| | And Policer Classify Set Match IP | ${tg_to_dut_if1_ip} -| | When Policer Set Configuration -| | Then Send packet and verify marking | ${tg_node} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} -| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if2_ip} | ${dscp} - -| TC02: VPP policer 2R3C Color-blind marks packet -| | [Documentation] -| | ... | [Top] TG=DUT1. -| | ... | [Ref] RFC2474, RFC2698. -| | ... | [Cfg] On DUT1 configure 2R3C color-blind policer on the first\ -| | ... | interface. -| | ... | [Ver] TG sends IPv4 TCP packet on the first link to DUT1.\ -| | ... | On DUT1 packet is marked with DSCP tag. Verify if DUT1 sends\ -| | ... | correct IPv4 TCP packet with correct DSCP on the second link to TG. -| | ${dscp}= | DSCP AF22 -| | Given Policer Set Name | policer1 -| | And Policer Set Node | ${dut_node} -| | And Policer Set CIR | ${cir} -| | And Policer Set EIR | ${eir} -| | And Policer Set CB | ${cb} -| | And Policer Set EB | ${eb} -| | And Policer Set Rate Type pps -| | And Policer Set Round Type Closest -| | And Policer Set Type 2R3C 2698 -| | And Policer Set Conform Action Mark and Transmit | ${dscp} -| | And Policer Set Exceed Action Transmit -| | And Policer Set Violate Action Drop -| | And Policer Classify Set Precolor Conform -| | And Policer Classify Set Interface | ${dut_to_tg_if1} -| | And Policer Classify Set Match IP | ${tg_to_dut_if1_ip} -| | When Policer Set Configuration -| | Then Send packet and verify marking | ${tg_node} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} -| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if2_ip} | ${dscp} - -| TC03: VPP policer 1R3C Color-aware marks packet -| | [Documentation] -| | ... | [Top] TG=DUT1. -| | ... | [Ref] RFC2474, RFC2697. -| | ... | [Cfg] On DUT1 configure 1R3C color-aware policer on the first\ -| | ... | interface. -| | ... | [Ver] TG sends IPv4 TCP packet on the first link to DUT1.\ -| | ... | On DUT1 packet is marked with DSCP tag. Verify if DUT1 sends\ -| | ... | correct IPv4 TCP packet with correct DSCP on the second link to TG. -| | ${dscp}= | DSCP AF22 -| | Given Policer Set Name | policer1 -| | And Policer Set Node | ${dut_node} -| | And Policer Set CIR | ${1} -| | And Policer Set CB | ${2} -| | And Policer Set EB | ${eb} -| | And Policer Set Rate Type pps -| | And Policer Set Round Type Closest -| | And Policer Set Type 1R3C -| | And Policer Set Conform Action Transmit -| | And Policer Set Exceed Action Mark and Transmit | ${dscp} -| | And Policer Set Violate Action Drop -| | And Policer Enable Color Aware -| | And Policer Classify Set Precolor Exceed -| | And Policer Classify Set Interface | ${dut_to_tg_if1} -| | And Policer Classify Set Match IP | ${tg_to_dut_if1_ip} -| | When Policer Set Configuration -| | Then Send packet and verify marking | ${tg_node} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} -| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if2_ip} | ${dscp} - -| TC04: VPP policer 1R3C Color-blind marks packet -| | [Documentation] -| | ... | [Top] TG=DUT1. -| | ... | [Ref] RFC2474, RFC2697. -| | ... | [Cfg] On DUT1 configure 1R3C color-blind policer on the first\ -| | ... | interface. -| | ... | [Ver] TG sends IPv4 TCP packet on the first link to DUT1.\ -| | ... | On DUT1 packet is marked with DSCP tag. Verify if DUT1 sends\ -| | ... | correct IPv4 TCP packet with correct DSCP on the second link to TG. -| | ${dscp}= | DSCP AF22 -| | Given Policer Set Name | policer1 -| | And Policer Set Node | ${dut_node} -| | And Policer Set CIR | ${cir} -| | And Policer Set CB | ${cb} -| | And Policer Set EB | ${eb} -| | And Policer Set Rate Type pps -| | And Policer Set Round Type Closest -| | And Policer Set Type 1R3C -| | And Policer Set Conform Action Mark and Transmit | ${dscp} -| | And Policer Set Exceed Action Transmit -| | And Policer Set Violate Action Drop -| | And Policer Classify Set Precolor Conform -| | And Policer Classify Set Interface | ${dut_to_tg_if1} -| | And Policer Classify Set Match IP | ${tg_to_dut_if1_ip} -| | When Policer Set Configuration -| | Then Send packet and verify marking | ${tg_node} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} -| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if2_ip} | ${dscp} \ No newline at end of file diff --git a/tests/func/policer/eth2p-ethip6-ip6base-ipolicemarkbase-func.robot b/tests/func/policer/eth2p-ethip6-ip6base-ipolicemarkbase-func.robot deleted file mode 100644 index 958607eee4..0000000000 --- a/tests/func/policer/eth2p-ethip6-ip6base-ipolicemarkbase-func.robot +++ /dev/null @@ -1,161 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | VM_ENV | HW_ENV -| Resource | resources/libraries/robot/policer.robot -| Library | resources.libraries.python.Trace -| Test Setup | Run Keywords | Set up functional test -| ... | AND | Configure topology for IPv6 policer test -| Test Teardown | Tear down functional test -| Documentation | *IPv6 policer test cases* -| ... -| ... | *[Top] Network topologies:* TG=DUT1 2-node topology with two links\ -| ... | between nodes. -| ... | *[Cfg] DUT configuration:* On DUT1 configure interfaces IPv6 adresses,\ -| ... | and static neighbor record on the second interface. -| ... | *[Ver] TG verification:* Test packet is sent from TG on the first link\ -| ... | to DUT1. Packet is received on TG on the second link from DUT1. -| ... | *[Ref] Applicable standard specifications:* RFC2474, RFC2697, RFC2698. - -*** Variables *** -| ${tg_to_dut_if1_ip6}= | 3ffe:5f::2 -| ${tg_to_dut_if2_ip6}= | 3ffe:60::2 -| ${dut_to_tg_if1_ip6}= | 3ffe:5f::1 -| ${dut_to_tg_if2_ip6}= | 3ffe:60::1 -| ${ip6_plen}= | ${64} - -| ${cir}= | ${100} -| ${eir}= | ${150} -| ${cb}= | ${200} -| ${eb}= | ${300} - -*** Test Cases *** -| TC01: VPP policer 2R3C Color-aware marks packet -| | [Documentation] -| | ... | [Top] TG=DUT1. -| | ... | [Ref] RFC2474, RFC2698. -| | ... | [Cfg] On DUT1 configure 2R3C color-aware policer on the first\ -| | ... | interface. -| | ... | [Ver] TG sends IPv6 TCP packet on the first link to DUT1.\ -| | ... | On DUT1 packet is marked with DSCP tag. Verify if DUT1 sends\ -| | ... | correct IPv6 TCP packet with correct DSCP on the second link to TG. -| | ${dscp}= | DSCP AF22 -| | Given Policer Set Name | policer1 -| | And Policer Set Node | ${dut_node} -| | And Policer Set CIR | ${cir} -| | And Policer Set EIR | ${eir} -| | And Policer Set CB | ${cb} -| | And Policer Set EB | ${eb} -| | And Policer Set Rate Type pps -| | And Policer Set Round Type Closest -| | And Policer Set Type 2R3C 2698 -| | And Policer Set Conform Action Transmit -| | And Policer Set Exceed Action Mark and Transmit | ${dscp} -| | And Policer Set Violate Action Drop -| | And Policer Enable Color Aware -| | And Policer Classify Set Precolor Exceed -| | And Policer Classify Set Interface | ${dut_to_tg_if1} -| | And Policer Classify Set Match IP | ${tg_to_dut_if1_ip} -| | When Policer Set Configuration -| | Then Send packet and verify marking | ${tg_node} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} -| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if2_ip} | ${dscp} - -| TC02: VPP policer 2R3C Color-blind marks packet -| | [Documentation] -| | ... | [Top] TG=DUT1. -| | ... | [Ref] RFC2474, RFC2698. -| | ... | [Cfg] On DUT1 configure 2R3C color-blind policer on the first\ -| | ... | interface. -| | ... | [Ver] TG sends IPv6 TCP packet on the first link to DUT1.\ -| | ... | On DUT1 packet is marked with DSCP tag. Verify if DUT1 sends\ -| | ... | correct IPv6 TCP packet with correct DSCP on the second link to TG. -| | ${dscp}= | DSCP AF22 -| | Given Policer Set Name | policer1 -| | And Policer Set Node | ${dut_node} -| | And Policer Set CIR | ${cir} -| | And Policer Set EIR | ${eir} -| | And Policer Set CB | ${cb} -| | And Policer Set EB | ${eb} -| | And Policer Set Rate Type pps -| | And Policer Set Round Type Closest -| | And Policer Set Type 2R3C 2698 -| | And Policer Set Conform Action Mark and Transmit | ${dscp} -| | And Policer Set Exceed Action Transmit -| | And Policer Set Violate Action Drop -| | And Policer Classify Set Precolor Conform -| | And Policer Classify Set Interface | ${dut_to_tg_if1} -| | And Policer Classify Set Match IP | ${tg_to_dut_if1_ip} -| | When Policer Set Configuration -| | Then Send packet and verify marking | ${tg_node} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} -| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if2_ip} | ${dscp} - -| TC03: VPP policer 1R3C Color-aware marks packet -| | [Documentation] -| | ... | [Top] TG=DUT1. -| | ... | [Ref] RFC2474, RFC2697. -| | ... | [Cfg] On DUT1 configure 1R3C color-aware policer on the first\ -| | ... | interface. -| | ... | [Ver] TG sends IPv6 TCP packet on the first link to DUT1.\ -| | ... | On DUT1 packet is marked with DSCP tag. Verify if DUT1 sends\ -| | ... | correct IPv6 TCP packet with correct DSCP on the second link to TG. -| | ${dscp}= | DSCP AF22 -| | Given Policer Set Name | policer1 -| | And Policer Set Node | ${dut_node} -| | And Policer Set CIR | ${1} -| | And Policer Set CB | ${2} -| | And Policer Set EB | ${eb} -| | And Policer Set Rate Type pps -| | And Policer Set Round Type Closest -| | And Policer Set Type 1R3C -| | And Policer Set Conform Action Transmit -| | And Policer Set Exceed Action Mark and Transmit | ${dscp} -| | And Policer Set Violate Action Drop -| | And Policer Enable Color Aware -| | And Policer Classify Set Precolor Exceed -| | And Policer Classify Set Interface | ${dut_to_tg_if1} -| | And Policer Classify Set Match IP | ${tg_to_dut_if1_ip} -| | When Policer Set Configuration -| | Then Send packet and verify marking | ${tg_node} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} -| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if2_ip} | ${dscp} - -| TC04: VPP policer 1R3C Color-blind marks packet -| | [Documentation] -| | ... | [Top] TG=DUT1. -| | ... | [Ref] RFC2474, RFC2697. -| | ... | [Cfg] On DUT1 configure 1R3C color-blind policer on the first\ -| | ... | interface. -| | ... | [Ver] TG sends IPv6 TCP packet on the first link to DUT1.\ -| | ... | On DUT1 packet is marked with DSCP tag. Verify if DUT1 sends\ -| | ... | correct IPv6 TCP packet with correct DSCP on the second link to TG. -| | ${dscp}= | DSCP AF22 -| | Given Policer Set Name | policer1 -| | And Policer Set Node | ${dut_node} -| | And Policer Set CIR | ${cir} -| | And Policer Set CB | ${cb} -| | And Policer Set Rate Type pps -| | And Policer Set Round Type Closest -| | And Policer Set Type 1R3C -| | And Policer Set Conform Action Mark and Transmit | ${dscp} -| | And Policer Set Exceed Action Transmit -| | And Policer Set Violate Action Drop -| | And Policer Classify Set Precolor Conform -| | And Policer Classify Set Interface | ${dut_to_tg_if1} -| | And Policer Classify Set Match IP | ${tg_to_dut_if1_ip} -| | When Policer Set Configuration -| | Then Send packet and verify marking | ${tg_node} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} -| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if2_ip} | ${dscp} diff --git a/tests/func/rpf/eth2p-ethip4-ip4base-rpf-func.robot b/tests/func/rpf/eth2p-ethip4-ip4base-rpf-func.robot deleted file mode 100644 index 5a704e83a0..0000000000 --- a/tests/func/rpf/eth2p-ethip4-ip4base-rpf-func.robot +++ /dev/null @@ -1,134 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/counters.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/l2_xconnect.robot -| Resource | resources/libraries/robot/traffic.robot -| Library | resources.libraries.python.Trace -| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *Source RPF check on IPv4 test cases* -| ... -| ... | *[Top] Network Topologies:* TG - DUT1 - DUT2 - TG -| ... | with one link between the nodes. -| ... | *[Cfg] DUT configuration:* DUT2 is configured with L2 Cross connect. -| ... | DUT1 is configured with IP source check on link to TG, -| ... | *[Ver] TG verification:* Test ICMP Echo Request packets are sent -| ... | in one direction by TG on link to DUT1 and received on TG link -| ... | to DUT2. On receive TG verifies if packets which source address -| ... | is not in routes are dropped. - -*** Variables *** -| ${dut1_to_tg_ip}= | 192.168.1.1 -| ${dut1_to_tg_ip_GW}= | 192.168.1.2 -| ${dut1_to_dut2_ip}= | 192.168.2.1 -| ${dut1_to_dut2_ip_GW}= | 192.168.2.2 -| ${test_dst_ip}= | 32.0.0.1 -| ${pass_test_src_ip}= | 16.0.0.1 -| ${drop_test_src_ip}= | 24.0.0.1 -| ${prefix_length}= | 24 - -*** Test Cases *** -| TC01: VPP source RPF check on IPv4 src-addr -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG -| | ... | [Cfg] On DUT1 setup IP source check. -| | ... | [Ver] Make TG verify matching packets which source address -| | ... | is not in routes are dropped. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Arp On Dut -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} | resolve_attempts=${NONE} -| | And Add Arp On Dut -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip_GW} -| | ... | ${tg_to_dut1_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${pass_test_src_ip} | ${prefix_length} -| | ... | ${dut1_to_tg_ip_GW} | ${dut1_to_tg} | resolve_attempts=${NONE} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | Then Send packet and verify headers | ${tg_node} -| | ... | ${pass_test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers | ${tg_node} -| | ... | ${drop_test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | ${dut1_to_tg_name}= | Get Interface Name | ${dut1_node} | ${dut1_to_tg} -| | When VPP IP Source Check Setup | ${dut1_node} | ${dut1_to_tg_name} -| | Then Send packet and verify headers | ${tg_node} -| | ... | ${pass_test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | And Send packet and verify headers | ${tg_node} -| | ... | ${dut1_to_tg_ip_GW} | ${test_dst_ip} | ${tg_to_dut1} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} -| | And Packet transmission from port to port should fail | ${tg_node} -| | ... | ${drop_test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} -| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} -| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} - -| TC02: VPP pass traffic on non-enabled RPF interface -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG -| | ... | [Cfg] On DUT1 setup IP source check. -| | ... | [Ver] Make TG verify matching packets on non-enabled RPF interface -| | ... | are passed. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} -| | And Add Arp On Dut -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} -| | ... | ${tg_to_dut2_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} -| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} | resolve_attempts=${NONE} -| | And Add Arp On Dut -| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip_GW} -| | ... | ${tg_to_dut1_mac} -| | And Vpp Route Add -| | ... | ${dut1_node} | ${pass_test_src_ip} | ${prefix_length} -| | ... | ${dut1_to_tg_ip_GW} | ${dut1_to_tg} | resolve_attempts=${NONE} -| | And Configure L2XC -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} -| | ${dut1_to_tg_name}= | Get Interface Name | ${dut1_node} | ${dut1_to_tg} -| | When VPP IP Source Check Setup | ${dut1_node} | ${dut1_to_tg_name} -| | Then Send packet and verify headers | ${tg_node} -| | ... | ${test_dst_ip} | ${pass_test_src_ip} | ${tg_to_dut2} -| | ... | ${tg_to_dut2_mac} | ${dut1_to_dut2_mac} | ${tg_to_dut1} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} -| | And Send packet and verify headers | ${tg_node} -| | ... | ${test_dst_ip} | ${dut1_to_tg_ip_GW} | ${tg_to_dut2} -| | ... | ${tg_to_dut2_mac} | ${dut1_to_dut2_mac} | ${tg_to_dut1} -| | ... | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} diff --git a/tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swirelw46-func.robot b/tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swirelw46-func.robot deleted file mode 100644 index 3c98d4a67b..0000000000 --- a/tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swirelw46-func.robot +++ /dev/null @@ -1,209 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/map.robot -| Library | resources.libraries.python.Trace -| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *Lightweight 4 over 6 test cases* -| ... -| ... | LW4o6 is a subset of MAP-E, with per-subscriber rules. It uses the -| ... | same tunneling mechanism and configuration as MAP-E. It does not use -| ... | embedded address bits. -| ... -| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links -| ... | between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP on TG_if1-DUT, -| ... | Eth-IPv6-IPv4-UDP on TG_if2_DUT. -| ... | *[Cfg] DUT configuration:* DUT1 is configured as lwAFTR. -| ... | *[Ver] TG verification:* Test UDP ICMP Echo Request in IPv4 are -| ... | sent to lwAFTR and are verified by TG for correctness their -| ... | encapsulation in IPv6 src-addr, dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC7596 RFC7597. - -*** Variables *** -| ${dut_ip4}= | 10.0.0.1 -| ${dut_ip6}= | 2001:0::1 -| ${tg_ip6}= | 2001:0::2 -| ${ipv4_prefix_len}= | 24 -| ${ipv6_prefix_len}= | 64 - -| ${lw_ipv4_pfx}= | 20.0.0.1/32 -| ${lw_ipv6_pfx}= | 2001:1::/64 -| ${lw_ipv6_src}= | 2001:1::1 -| ${lw_psid_length}= | ${8} -| ${lw_psid_offset}= | ${6} -| ${lw_rule_psid}= | ${52} -| ${lw_rule_ipv6_dst}= | 2001:1::2 -| ${lw_rule_2_psid}= | ${22} -| ${lw_rule_2_ipv6_dst}= | 2001:1::3 -| ${test_ipv4_inside}= | 20.0.0.1 -| ${test_ipv4_outside}= | 10.0.0.100 -# test_port depends on psid, length, offset -| ${test_port}= | ${1232} -| ${test_icmp_id}= | ${1232} -| ${test_2_port}= | ${6232} - -*** Test Cases *** -| TC01: Encapsulate IPv4 into IPv6. IPv6 dst depends on IPv4 and UDP destination -| | [Documentation] -| | ... | [Top] TG=DUT1. -| | ... | [Enc] Eth-IPv4-UDP on TG_if1-DUT, Eth-IPv6-IPv4-UDP on TG_if2_DUT. -| | ... | [Cfg] On DUT1 configure Map domain and Map rule. -| | ... | [Ver] Make TG send non-encapsulated UDP to DUT; verify TG received -| | ... | IPv4oIPv6 encapsulated packet is correct. -| | ... | [Ref] RFC7596 RFC7597 -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} -| | And Add IP Neighbor -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${tg_ip6} -| | ... | ${tg_to_dut_if2_mac} -| | And Vpp Route Add -| | ... | ${dut_node} | ${lw_rule_ipv6_dst} | 128 -| | ... | ${tg_ip6} | ${dut_to_tg_if2} | resolve_attempts=${NONE} -| | ${domain_index}= -| | ... | When Map Add Domain -| | ... | ${dut_node} | ${lw_ipv4_pfx} | ${lw_ipv6_pfx} -| | ... | ${lw_ipv6_src} | 0 | ${lw_psid_offset} -| | ... | ${lw_psid_length} -| | And Map Add Rule -| | ... | ${dut_node} | ${domain_index} | ${lw_rule_psid} -| | ... | ${lw_rule_ipv6_dst} -| | Then Send IPv4 UDP and check headers for lightweight 4over6 -| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} -| | ... | ${dut_to_tg_if1_mac} | ${test_ipv4_inside} | ${test_ipv4_outside} -| | ... | ${test_port} | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} -| | ... | ${lw_rule_ipv6_dst} | ${lw_ipv6_src} - -TC02: Encapsulate IPv4 ICMP into IPv6. IPv6 dst depends on IPv4 addr and ICMP ID -| | [Documentation] -| | ... | [Top] TG=DUT1. -| | ... | [Enc] Eth-IPv4-ICMP(type 0 and 8) on TG_if1-DUT, Eth-IPv6-IPv4-ICMP -| | ... | on TG_if2_DUT. -| | ... | [Cfg] On DUT1 configure Map domain and Map rule. -| | ... | [Ver] Make TG send non-encapsulated ICMP to DUT; verify TG received -| | ... | IPv4oIPv6 encapsulated packet is correct. Checks IPv6 -| | ... | destination based on ICMP Identifier field. -| | ... | [Ref] RFC7596 section 8.1 -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} -| | And Add IP Neighbor -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${tg_ip6} -| | ... | ${tg_to_dut_if2_mac} -| | And Vpp Route Add -| | ... | ${dut_node} | ${lw_rule_ipv6_dst} | 128 -| | ... | ${tg_ip6} | ${dut_to_tg_if2} | resolve_attempts=${NONE} -| | ${domain_index}= -| | ... | When Map Add Domain -| | ... | ${dut_node} | ${lw_ipv4_pfx} | ${lw_ipv6_pfx} -| | ... | ${lw_ipv6_src} | 0 | ${lw_psid_offset} -| | ... | ${lw_psid_length} -| | And Map Add Rule -| | ... | ${dut_node} | ${domain_index} | ${lw_rule_psid} -| | ... | ${lw_rule_ipv6_dst} -| | Then Send IPv4 ICMP and check headers for lightweight 4over6 -| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} -| | ... | ${dut_to_tg_if1_mac} | ${test_ipv4_inside} | ${test_ipv4_outside} -| | ... | ${test_icmp_id} | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} -| | ... | ${lw_rule_ipv6_dst} | ${lw_ipv6_src} - -TC03: Decapsulate IPv4 UDP from IPv6. -| | [Documentation] -| | ... | [Top] TG=DUT1. -| | ... | [Enc] Eth-IPv6-IPv4-UDP on TG_if2_DUT, Eth-IPv4-UDP on TG_if1-DUT. -| | ... | [Cfg] On DUT1 configure Map domain and Map rule. -| | ... | [Ver] Make TG send encapsulated UDP to DUT; verify TG received -| | ... | IPv4 non-encapsulated packet is correct. -| | ... | [Ref] RFC7596 RFC7597 -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} -| | And Add Arp on DUT -| | ... | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${test_ipv4_outside} -| | ... | ${tg_to_dut_if1_mac} -| | ${domain_index}= -| | ... | When Map Add Domain -| | ... | ${dut_node} | ${lw_ipv4_pfx} | ${lw_ipv6_pfx} -| | ... | ${lw_ipv6_src} | 0 | ${lw_psid_offset} -| | ... | ${lw_psid_length} -| | And Map Add Rule -| | ... | ${dut_node} | ${domain_index} | ${lw_rule_psid} -| | ... | ${lw_rule_ipv6_dst} -| | Then Send IPv4 UDP in IPv6 and check headers for lightweight 4over6 -| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if1} -| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} -| | ... | ${lw_ipv6_src} | ${lw_rule_ipv6_dst} -| | ... | ${test_ipv4_outside} | ${test_ipv4_inside} | ${test_port} -| | ... | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} - -TC04: Hairpinning of traffic between two lwB4 -| | [Documentation] -| | ... | [Top] DUT1-TG. -| | ... | [Enc] Eth-IPv6-IPv4-UDP on TG_if2_DUT, Eth-IPv6-IPv4-UDP on TG_if2_DUT. -| | ... | [Cfg] On DUT1 configure Map domain and two Map rules. -| | ... | [Ver] Make TG send encapsulated UDP to DUT; verify TG received -| | ... | encapsulated packet is correct. -| | ... | [Ref] RFC7596 RFC7597 -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} -| | And Add IP Neighbor -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${tg_ip6} -| | ... | ${tg_to_dut_if2_mac} -| | And Vpp Route Add -| | ... | ${dut_node} | ${lw_rule_2_ipv6_dst} | 128 -| | ... | ${tg_ip6} | ${dut_to_tg_if2} | resolve_attempts=${NONE} -| | ${domain_index}= -| | ... | When Map Add Domain -| | ... | ${dut_node} | ${lw_ipv4_pfx} | ${lw_ipv6_pfx} -| | ... | ${lw_ipv6_src} | 0 | ${lw_psid_offset} -| | ... | ${lw_psid_length} -| | And Map Add Rule -| | ... | ${dut_node} | ${domain_index} | ${lw_rule_psid} -| | ... | ${lw_rule_ipv6_dst} -| | And Map Add Rule -| | ... | ${dut_node} | ${domain_index} | ${lw_rule_2_psid} -| | ... | ${lw_rule_2_ipv6_dst} -| | Then Send IPv4 UDP in IPv6 and check headers for lightweight hairpinning -| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if2} -| | ... | ${dut_to_tg_if2_mac} -| | ... | ${lw_ipv6_src} | ${lw_rule_ipv6_dst} -| | ... | ${test_ipv4_inside} | ${test_ipv4_inside} -| | ... | ${test_2_port} | ${test_port} -| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} -| | ... | ${lw_rule_2_ipv6_dst} | ${lw_ipv6_src} diff --git a/tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremape-func.robot b/tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremape-func.robot deleted file mode 100644 index c509d5d0cd..0000000000 --- a/tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremape-func.robot +++ /dev/null @@ -1,483 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/map.robot -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.Trace -| Variables | resources/test_data/softwire/map_e_domains.py | ${5} -| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *Test for Basic mapping rule for MAP-E*\ -| ... | *[Top] Network Topologies:* TG - DUT1 - TG with two links between the -| ... | nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP on TG-to-DUT-if1. -| ... | Eth-IPv6-IPv4-UDP on TG-to-DUT-if2. -| ... | *[Cfg] DUT configuration:* DUT is configured with IPv4 on one DUT-to-TG -| ... | interface and IPv6 address on second DUT-to-TG interface. MAP-E domain -| ... | is configured in test template based on test parameters. -| ... | *[Ver] TG verification:* UDP packets in IPv4 are sent by TG to -| ... | destination in MAP domain. IPv6 packets with encapsulated IPv4 are -| ... | received on TG interface. -| ... | *[Ref] Applicable standard specifications:* RFC7597. - - -*** Variables *** -| ${dut_ip4}= | 10.0.0.1 -| ${dut_ip6}= | 2001:0::1 -| ${dut_ip4_gw}= | 10.0.0.2 -| ${dut_ip6_gw}= | 2001:0::2 -| ${ipv4_prefix_len}= | 24 -| ${ipv6_prefix_len}= | 64 -| ${ipv6_br_src}= | 2001:db8:ffff::1 -| ${ipv4_outside}= | 1.0.0.1 - - -*** Test Cases *** -| TC01: BMR, then an IPv4 prefix is assigned -| | [Documentation] -| | ... | Basic Mapping Rule https://tools.ietf.org/html/rfc7597#section-5.2\ -| | ... | IPv4 prefix length + ea bits length < 32 (o + r < 32) -| | ... | psid_length = 0, ip6_prefix < 64, ip4_prefix <= 32 -| | ... -| | ... | Arguments: -| | ... -| | ... | - ipv4_pfx -| | ... | - ipv6_pfx -| | ... | - ipv6_src -| | ... | - ea_bit_len -| | ... | - psid_offset -| | ... | - psid_len -| | ... | - ipv4_dst -| | ... | - dst_port -| | ... | - expected_ipv6_dst -| | ... -# TODO: replace setup when VPP-312 fixed -#| | [Setup] | Set Interfaces IP Addresses And Routes -| | [Setup] | Run Keywords -| | ... | Set up functional test | AND -| | ... | Set Interfaces IP Addresses And Routes -| | [Template] | Check MAP Configuration With Traffic Script -# |=================|===============|================|============|=============|==========|================|==========|==================================| -# | ipv4_pfx | ipv6_pfx | ipv6_src | ea_bit_len | psid_offset | psid_len | ipv4_dst | dst_port | expected_ipv6_dst | -# |=================|===============|================|============|=============|==========|================|==========|==================================| -| | 20.0.0.0/8 | 2001:db8::/32 | ${ipv6_br_src} | ${4} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:a000::14a0:0:0 | -| | 20.0.0.0/8 | 2001:db8::/32 | ${ipv6_br_src} | ${8} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:a900::14a9:0:0 | -| | 20.0.0.0/8 | 2001:db8::/32 | ${ipv6_br_src} | ${10} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:a9c0::14a9:c000:0 | -| | 20.0.0.0/8 | 2001:db8::/32 | ${ipv6_br_src} | ${16} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:a9c9::14a9:c900:0 | -| | 20.0.0.0/8 | 2001:db8::/32 | ${ipv6_br_src} | ${20} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:a9c9:d000:0:14a9:c9d0:0 | -| | 20.0.0.0/8 | 2001:db8::/32 | ${ipv6_br_src} | ${23} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:a9c9:da00:0:14a9:c9da:0 | -| | 20.169.201.0/24 | 2001:db8::/32 | ${ipv6_br_src} | ${4} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:d000::14a9:c9d0:0 | -| | 20.169.201.0/24 | 2001:db8::/32 | ${ipv6_br_src} | ${7} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:da00::14a9:c9da:0 | - - -| TC02: BMR, full IPv4 address is to be assigned -| | [Documentation] -| | ... | Basic Mapping Rule https://tools.ietf.org/html/rfc7597#section-5.2\ -| | ... | IPv4 prefix length + ea bits length == 32 (o + r == 32) -| | ... | psid_length = 0, ip6_prefix < 64, ip4_prefix <= 32 -| | ... -| | ... | Arguments: -| | ... -| | ... | - ipv4_pfx -| | ... | - ipv6_pfx -| | ... | - ipv6_src -| | ... | - ea_bit_len -| | ... | - psid_offset -| | ... | - psid_len -| | ... | - ipv4_dst -| | ... | - dst_port -| | ... | - expected_ipv6_dst -| | ... -# TODO: replace setup when VPP-312 fixed -#| | [Setup] | Set Interfaces IP Addresses And Routes -| | [Setup] | Run Keywords -| | ... | Set up functional test | AND -| | ... | Set Interfaces IP Addresses And Routes -| | [Template] | Check MAP Configuration With Traffic Script -# |===================|===============|================|============|=============|==========|================|==========|==================================| -# | ipv4_pfx | ipv6_pfx | ipv6_src | ea_bit_len | psid_offset | psid_len | ipv4_dst | dst_port | expected_ipv6_dst | -# |===================|===============|================|============|=============|==========|================|==========|==================================| -| | 20.0.0.0/8 | 2001:db8::/32 | ${ipv6_br_src} | ${24} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:a9c9:db00:0:14a9:c9db:0 | -| | 20.160.0.0/12 | 2001:db8::/32 | ${ipv6_br_src} | ${20} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:9c9d:b000:0:14a9:c9db:0 | -| | 20.169.0.0/16 | 2001:db8::/32 | ${ipv6_br_src} | ${16} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:c9db::14a9:c9db:0 | -| | 20.169.200.0/22 | 2001:db8::/32 | ${ipv6_br_src} | ${10} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:76c0::14a9:c9db:0 | -| | 20.169.201.0/24 | 2001:db8::/32 | ${ipv6_br_src} | ${8} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:db00::14a9:c9db:0 | -| | 20.169.201.208/28 | 2001:db8::/32 | ${ipv6_br_src} | ${4} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:b000::14a9:c9db:0 | -| | 20.169.201.219/32 | 2001:db8::/32 | ${ipv6_br_src} | ${0} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8::14a9:c9db:0 | -| | 20.0.0.0/8 | 2001:db8::/40 | ${ipv6_br_src} | ${24} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:a9:c9db:0:14a9:c9db:0 | -| | 20.160.0.0/12 | 2001:db8::/44 | ${ipv6_br_src} | ${20} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:9:c9db:0:14a9:c9db:0 | -| | 20.169.0.0/16 | 2001:db8::/48 | ${ipv6_br_src} | ${16} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:0:c9db:0:14a9:c9db:0 | -| | 20.169.200.0/22 | 2001:db8::/54 | ${ipv6_br_src} | ${10} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:0:1db:0:14a9:c9db:0 | - - -| TC03: BMR, shared IPv4 address is to be assigned -| | [Documentation] -| | ... | Basic Mapping Rule https://tools.ietf.org/html/rfc7597#section-5.2\ -| | ... | IPv4 prefix length + ea bits length > 32 (o + r > 32) -| | ... | ip6_prefix < 64, ip4_prefix <= 32 -| | ... -| | ... | Arguments: -| | ... -| | ... | - ipv4_pfx -| | ... | - ipv6_pfx -| | ... | - ipv6_src -| | ... | - ea_bit_len -| | ... | - psid_offset -| | ... | - psid_len -| | ... | - ipv4_dst -| | ... | - dst_port -| | ... | - expected_ipv6_dst -| | ... -# TODO: replace setup when VPP-312 fixed -#| | [Setup] | Set Interfaces IP Addresses And Routes -| | [Setup] | Run Keywords -| | ... | Set up functional test | AND -| | ... | Set Interfaces IP Addresses And Routes -| | [Template] | Check MAP Configuration With Traffic Script -# |===================|===============|================|============|=============|==========|================|==========|===================================| -# | ipv4_pfx | ipv6_pfx | ipv6_src | ea_bit_len | psid_offset | psid_len | ipv4_dst | dst_port | expected_ipv6_dst | -# |===================|===============|================|============|=============|==========|================|==========|===================================| -| | 20.0.0.0/8 | 2001::/16 | ${ipv6_br_src} | ${48} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:a9c9:db34::14a9:c9db:34 | -| | 20.169.0.0/16 | 2001::/16 | ${ipv6_br_src} | ${48} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:c9db:3400::14a9:c9db:34 | -| | 20.169.201.0/24 | 2001::/16 | ${ipv6_br_src} | ${48} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db34::14a9:c9db:34 | -| | 20.169.201.219/32 | 2001::/16 | ${ipv6_br_src} | ${48} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:3400::14a9:c9db:34 | - -| | 20.0.0.0/8 | 2001::/24 | ${ipv6_br_src} | ${40} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:a9:c9db:3400:0:14a9:c9db:34 | -| | 20.169.0.0/16 | 2001::/24 | ${ipv6_br_src} | ${40} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:c9:db34::14a9:c9db:34 | -| | 20.169.201.0/24 | 2001::/24 | ${ipv6_br_src} | ${40} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db:3400::14a9:c9db:34 | -| | 20.169.201.219/32 | 2001::/24 | ${ipv6_br_src} | ${40} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:34::14a9:c9db:34 | -| | 20.169.0.0/16 | 2001::/16 | ${ipv6_br_src} | ${40} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:c9db:3400::14a9:c9db:34 | -| | 20.169.201.219/32 | 2001::/16 | ${ipv6_br_src} | ${40} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:3400::14a9:c9db:34 | - -| | 20.0.0.0/8 | 2001:db8::/32 | ${ipv6_br_src} | ${32} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:a9c9:db34:0:14a9:c9db:34 | -| | 20.169.0.0/16 | 2001:db8::/32 | ${ipv6_br_src} | ${32} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:c9db:3400:0:14a9:c9db:34 | -| | 20.169.201.0/24 | 2001:db8::/32 | ${ipv6_br_src} | ${32} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:db34::14a9:c9db:34 | -| | 20.169.201.219/32 | 2001:db8::/32 | ${ipv6_br_src} | ${32} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:3400::14a9:c9db:34 | -| | 20.169.0.0/16 | 2001::/24 | ${ipv6_br_src} | ${32} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:c9:db34::14a9:c9db:34 | -| | 20.169.201.0/24 | 2001::/24 | ${ipv6_br_src} | ${32} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db:3400::14a9:c9db:34 | -| | 20.169.0.0/16 | 2001::/16 | ${ipv6_br_src} | ${32} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:c9db:3400::14a9:c9db:34 | -| | 20.169.201.0/24 | 2001::/16 | ${ipv6_br_src} | ${32} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db34::14a9:c9db:34 | - -| | 20.160.0.0/12 | 2001:db8::/32 | ${ipv6_br_src} | ${25} | ${6} | ${5} | 20.169.201.219 | ${1232} | 2001:db8:9c9d:b300:0:14a9:c9db:6 | -| | 20.169.0.0/16 | 2001:db8::/32 | ${ipv6_br_src} | ${25} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:c9db:3400:0:14a9:c9db:34 | -| | 20.169.201.0/24 | 2001:db8::/32 | ${ipv6_br_src} | ${25} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:db34::14a9:c9db:34 | -| | 20.169.201.219/32 | 2001:db8::/32 | ${ipv6_br_src} | ${25} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:3400::14a9:c9db:34 | - -| | 20.169.192.0/20 | 2001:db8::/32 | ${ipv6_br_src} | ${17} | ${6} | ${5} | 20.169.201.219 | ${1232} | 2001:db8:9db3::14a9:c9db:6 | -| | 20.169.201.0/24 | 2001:db8::/32 | ${ipv6_br_src} | ${17} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:db34::14a9:c9db:34 | -| | 20.169.201.219/32 | 2001:db8::/32 | ${ipv6_br_src} | ${17} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:3400::14a9:c9db:34 | - -| | 20.169.201.0/24 | 2001:db8::/32 | ${ipv6_br_src} | ${12} | ${6} | ${4} | 20.169.201.219 | ${1232} | 2001:db8:db30::14a9:c9db:3 | -| | 20.169.201.219/32 | 2001:db8::/32 | ${ipv6_br_src} | ${12} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:3400::14a9:c9db:34 | - - -| TC04: End user IPv6 prefix is 64 -| | [Documentation] -| | ... | Supported End-User IPv6 prefix length is 64 bit. -| | ... -| | ... | Arguments: -| | ... -| | ... | - ipv4_pfx -| | ... | - ipv6_pfx -| | ... | - ipv6_src -| | ... | - ea_bit_len -| | ... | - psid_offset -| | ... | - psid_len -| | ... | - ipv4_dst -| | ... | - dst_port -| | ... -# TODO: replace setup when VPP-312 fixed -#| | [Setup] | Set Interfaces IP Addresses And Routes -| | [Setup] | Run Keywords -| | ... | Set up functional test | AND -| | ... | Set Interfaces IP Addresses And Routes -| | [Template] | Check MAP Configuration With Traffic Script -# |===================|=========================|================|============|=============|==========|================|==========| -# | ipv4_pfx | ipv6_pfx | ipv6_src | ea_bit_len | psid_offset | psid_len | ipv4_dst | dst_port | -# |===================|=========================|================|============|=============|==========|================|==========| -| | 20.0.0.0/8 | 2001:db8:0012:3400::/56 | ${ipv6_br_src} | ${8} | ${0} | ${0} | 20.169.201.219 | ${1232} | -| | 20.169.201.208/28 | 2001:db8:0012:3400::/56 | ${ipv6_br_src} | ${8} | ${5} | ${4} | 20.169.201.219 | ${3280} | -| | 20.0.0.0/8 | 2001:db8:0012:3400::/64 | ${ipv6_br_src} | ${0} | ${0} | ${0} | 20.169.201.219 | ${1232} | -| | 20.169.201.219/32 | 2001:db8:0012:3400::/64 | ${ipv6_br_src} | ${0} | ${0} | ${0} | 20.169.201.219 | ${1232} | - - -| TC05: IPv4 prefix is 0 -| | [Tags] | EXPECTED_FAILING -# TODO: replace setup when VPP-312 fixed -#| | [Setup] | Set Interfaces IP Addresses And Routes -| | [Setup] | Run Keywords -| | ... | Set up functional test | AND -| | ... | Set Interfaces IP Addresses And Routes -| | [Template] | Check MAP Configuration With Traffic Script -# |===================|=========================|================|============|=============|==========|================|==========| -# | ipv4_pfx | ipv6_pfx | ipv6_src | ea_bit_len | psid_offset | psid_len | ipv4_dst | dst_port | -# |===================|=========================|================|============|=============|==========|================|==========| -| | 0.0.0.0/0 | 2001:db8:0000::/40 | ${ipv6_br_src} | ${8} | ${0} | ${0} | 20.169.201.219 | ${1232} | -| | 0.0.0.0/0 | 2001:db8:0000::/40 | ${ipv6_br_src} | ${16} | ${0} | ${0} | 20.169.201.219 | ${1232} | -| | 0.0.0.0/0 | 2001:db8::/32 | ${ipv6_br_src} | ${32} | ${0} | ${0} | 20.169.201.219 | ${1232} | -| | 0.0.0.0/0 | 2001:d00::/24 | ${ipv6_br_src} | ${40} | ${6} | ${8} | 20.169.201.219 | ${1232} | -| | 0.0.0.0/0 | 2001::/16 | ${ipv6_br_src} | ${40} | ${6} | ${8} | 20.169.201.219 | ${1232} | - - -| TC06: Multiple domain and check with traffic script IPv4 source IPv6 destination -| | [Documentation] -| | ... | [Top] TG=DUT1. -| | ... | [Cfg] Multiple MAP-E domains are configured, values from variable\ -| | ... | file. -| | ... | [Ver] Send IPv4 to destination in configured domain and receive IPv6\ -| | ... | packet. -| | ... | [Ref] RFC7597. -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} -| | And Vpp Route Add | ${dut_node} | :: | 0 | ${dut_ip6_gw} -| | ... | ${dut_to_tg_if2} | resolve_attempts=${NONE} | count=${NONE} -| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6_gw} -| | ... | ${tg_to_dut_if2_mac} -| | And Vpp Route Add | ${dut_node} | 0.0.0.0 | 0 | ${dut_ip4_gw} -| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | count=${NONE} -| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4_gw} -| | ... | ${tg_to_dut_if1_mac} -| | :FOR | ${domain_set} | IN | @{domain_sets} -| | | When Map Add Domain | ${dut_node} | @{domain_set} -| | :FOR | ${ip_set} | IN | @{ip_sets} -| | | ${ipv4}= | Get From List | ${ip_set} | 0 -| | | ${ipv6}= | Get From List | ${ip_set} | 1 -| | | ${port}= | Get From List | ${ip_set} | 2 -| | | ${ipv6_br}= | Get From List | ${ip_set} | 3 -| | | Then Send IPv4 UDP And Check Headers For Lightweight 4over6 -| | | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} -| | | ... | ${dut_to_tg_if1_mac} | ${ipv4} | ${ipv4_outside} | ${port} -| | | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} | ${ipv6} | ${ipv6_br} -| | | And Send IPv4 UDP In IPv6 And Check Headers For Lightweight 4over6 -| | | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if1} -| | | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} | ${ipv6_br} | ${ipv6} -| | | ... | ${ipv4_outside} | ${ipv4} | ${port} | ${tg_to_dut_if1_mac} -| | | ... | ${dut_to_tg_if1_mac} - - -| TC07: Multiple domain and check with traffic script IPv6 source IPv6 destination -| | [Documentation] -| | ... | [Top] TG=DUT1. -| | ... | [Cfg] Multiple MAP-E domains are configured, values from variable\ -| | ... | file. -| | ... | [Ver] Send IPv4 encapsulated in IPv6. Source and destination are from\ -| | ... | configured domains. Check if VPP translate IPv6 addresses. -| | ... | [Ref] RFC7597. -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} -| | And Vpp Route Add | ${dut_node} | :: | 0 | ${dut_ip6_gw} -| | ... | ${dut_to_tg_if2} | resolve_attempts=${NONE} | count=${NONE} -| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6_gw} -| | ... | ${tg_to_dut_if2_mac} -| | And Vpp Route Add | ${dut_node} | 0.0.0.0 | 0 | ${dut_ip4_gw} -| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | count=${NONE} -| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4_gw} -| | ... | ${tg_to_dut_if1_mac} -| | :FOR | ${domain_set} | IN | @{domain_sets} -| | | When Map Add Domain | ${dut_node} | @{domain_set} -| | ${ip_set_A}= | Get From List | ${ip_sets} | 0 -| | ${ip_set_B}= | Get From List | ${ip_sets} | 1 -| | ${ipv6_br}= | Get From List | ${ip_set_A} | 3 -| | ${port_A}= | Get From List | ${ip_set_A} | 2 -| | ${port_B}= | Get From List | ${ip_set_B} | 2 -| | ${ipv6_A}= | Get From List | ${ip_set_A} | 1 -| | ${ipv6_B}= | Get From List | ${ip_set_B} | 1 -| | ${ipv4_A}= | Get From List | ${ip_set_A} | 0 -| | ${ipv4_B}= | Get From List | ${ip_set_B} | 0 -| | Then Send IPv4 UDP In IPv6 And Check Headers For Lightweight Hairpinning -| | ... | ${tg_node} | ${tg_to_dut_if2} -| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if2_mac} -| | ... | ${ipv6_br} | ${ipv6_A} -| | ... | ${ipv4_B} | ${ipv4_A} -| | ... | ${port_B} | ${port_A} -| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} -| | ... | ${ipv6_B} | ${ipv6_br} - - -| TC08: Encapsulate IPv4 ICMP into IPv6 -| | [Documentation] -| | ... | [Top] TG=DUT1. -| | ... | [Enc] Eth-IPv4-ICMP(type 0 and 8) on TG_if1-DUT, Eth-IPv6-IPv4-ICMP\ -| | ... | on TG_if2_DUT. -| | ... | [Cfg] Multiple MAP-E domains are configured, values from variable\ -| | ... | file. -| | ... | [Ver] Make TG send non-encapsulated ICMP to DUT; verify TG received\ -| | ... | IPv4oIPv6 encapsulated packet is correct. Checks IPv6 destination\ -| | ... | based on ICMP Identifier field. -| | ... | [Ref] RFC7597 section 8.2. -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} -| | And Vpp Route Add | ${dut_node} | :: | 0 | ${dut_ip6_gw} -| | ... | ${dut_to_tg_if2} | resolve_attempts=${NONE} | count=${NONE} -| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6_gw} -| | ... | ${tg_to_dut_if2_mac} -| | And Vpp Route Add | ${dut_node} | 0.0.0.0 | 0 | ${dut_ip4_gw} -| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | count=${NONE} -| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4_gw} -| | ... | ${tg_to_dut_if1_mac} -| | :FOR | ${domain_set} | IN | @{domain_sets} -| | | When Map Add Domain | ${dut_node} | @{domain_set} -| | ${ip_set_A}= | Get From List | ${ip_sets} | 0 -| | ${ipv4_A}= | Get From List | ${ip_set_A} | 0 -| | ${ipv6_A}= | Get From List | ${ip_set_A} | 1 -| | ${icmp_id_A}= | Get From List | ${ip_set_A} | 2 -| | ${ipv6_br}= | Get From List | ${ip_set_A} | 3 -| | Then Send IPv4 ICMP And Check Headers For Lightweight 4over6 -| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} -| | ... | ${dut_to_tg_if1_mac} | ${ipv4_A} | ${ipv4_outside} -| | ... | ${icmp_id_A} | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} -| | ... | ${ipv6_A} | ${ipv6_br} - - -| TC09: Repeated ip neighbor command doesnt put FIB to broken state -| | [Documentation] | -| | ... | Original issue described in https://jira.fd.io/browse/VPP-312. -| | ... | [Top] TG=DUT1. -| | ... | [Cfg] IP address are set on interfaces, ip neighbor multiple times -| | ... | [Ver] FIB is not in broken state. The steps are add route, \ -| | ... | check with traffic then add same route -| | ... | again and check with traffic script. -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | When Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} -| | And Vpp Route Add | ${dut_node} | 2001:: | 16 | ${dut_ip6_gw} -| | ... | ${dut_to_tg_if2} | resolve_attempts=${NONE} | count=${NONE} -| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6_gw} -| | ... | ${tg_to_dut_if2_mac} -| | And Vpp Route Add | ${dut_node} | 0.0.0.0 | 0 | ${dut_ip4_gw} -| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | count=${NONE} -| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4_gw} -| | ... | ${tg_to_dut_if1_mac} -| | Then Check MAP Configuration With Traffic Script -| | ... | 20.0.0.0/8 | 2001::/16 | ${ipv6_br_src} | ${48} | ${6} | ${8} -| | ... | 20.169.201.219 | ${1232} | 2001:a9c9:db34::14a9:c9db:34 -| | When Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} -| | And Vpp Route Add | ${dut_node} | 2001:: | 16 | ${dut_ip6_gw} -| | ... | ${dut_to_tg_if2} | resolve_attempts=${NONE} | count=${NONE} -| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6_gw} -| | ... | ${tg_to_dut_if2_mac} -| | And Vpp Route Add | ${dut_node} | 0.0.0.0 | 0 | ${dut_ip4_gw} -| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | count=${NONE} -| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4_gw} -| | ... | ${tg_to_dut_if1_mac} -| | Then Check MAP Configuration With Traffic Script -| | ... | 20.0.0.0/8 | 2001::/16 | ${ipv6_br_src} | ${48} | ${6} | ${8} -| | ... | 20.169.201.219 | ${1232} | 2001:a9c9:db34::14a9:c9db:34 - - -| Bug: VPP-318 -| | [Tags] | EXPECTED_FAILING -| | [Documentation] | qlen < psid length -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} -| | Then Run Keyword And Expect Error | Unable to add map domain * -| | ... | Map Add Domain | ${dut_node} | 20.169.0.0/16 | 2001:db8::/32 -| | ... | ${ipv6_br_src} | ${20} | ${6} | ${8} - - -*** Keywords *** -| Set Interfaces IP Addresses And Routes -| | Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | Set interfaces in 2-node circular topology up -| | Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} -| | Vpp Route Add | ${dut_node} | :: | 0 | ${dut_ip6_gw} | ${dut_to_tg_if2} -| | ... | resolve_attempts=${NONE} | count=${NONE} -| | Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6_gw} -| | ... | ${tg_to_dut_if2_mac} -| | Vpp Route Add | ${dut_node} | ${ipv4_outside} | 32 | ${dut_ip4_gw} -| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | count=${NONE} -| | Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4_gw} -| | ... | ${tg_to_dut_if1_mac} - -| Check MAP Configuration With Traffic Script -| | [Documentation] -| | ... | Used as a test case template.\ -| | ... | Configure MAP-E domain with given parameters, with traffic script send -| | ... | UDP in IPv4 packet to given UDP destination port and IP destination -| | ... | address and check if correctly received IPv6 packet. Vice versa send -| | ... | IPv6 packet and check if received IPv4 packet with correct source -| | ... | address. -| | ... | The MAP domain is deleted in teardown. -| | ... | The expected IPv6 address is compared with computed IPv6 address. -| | [Arguments] | ${ipv4_pfx} | ${ipv6_pfx} | ${ipv6_br_src} | ${ea_bit_len} -| | ... | ${psid_offset} | ${psid_len} | ${ipv4_dst} | ${dst_port} -| | ... | ${expected_ipv6_dst}=${EMPTY} -| | ${domain_index}= | Map Add Domain | ${dut_node} | ${ipv4_pfx} | ${ipv6_pfx} -| | ... | ${ipv6_br_src} | ${ea_bit_len} | ${psid_offset} | ${psid_len} -| | ${computed_ipv6_dst}= | Compute IPv6 Map Destination Address -| | ... | ${ipv4_pfx} | ${ipv6_pfx} | ${ea_bit_len} | ${psid_offset} -| | ... | ${psid_len} | ${ipv4_dst} | ${dst_port} -| | ${ipv6_dst}= | Run Keyword If | "${expected_ipv6_dst}" == "${EMPTY}" -| | ... | Set Variable | ${computed_ipv6_dst} -| | ... | ELSE | Set Variable | ${expected_ipv6_dst} -| | Run Keyword If | "${expected_ipv6_dst}" != "${EMPTY}" -| | ... | IP Addresses Should Be Equal -| | ... | ${computed_ipv6_dst} | ${expected_ipv6_dst} -| | ${ipv6_dst}= | Set Variable | ${computed_ipv6_dst} -| | Check Encapsulation With Traffic Script -| | ... | ${ipv4_dst} | ${dst_port} | ${ipv6_dst} -| | Check Decapsulation With Traffic Script -| | ... | ${ipv6_dst} | ${ipv4_dst} | ${dst_port} -| | [Teardown] | Run Keywords -| | ... | Map Del Domain | ${dut_node} | ${domain_index} | AND -| | ... | Show Packet Trace On All DUTs | ${nodes} | AND -| | ... | Clear Packet Trace On All DUTs | ${nodes} | AND -| | ... | Verify VPP PID in Teardown - -| Check Encapsulation With Traffic Script -| | [Arguments] | ${ipv4_dst} | ${dst_port} | ${ipv6_dst} -| | Send IPv4 UDP And Check Headers For Lightweight 4over6 -| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} -| | ... | ${dut_to_tg_if1_mac} | ${ipv4_dst} | ${ipv4_outside} -| | ... | ${dst_port} | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} -| | ... | ${ipv6_dst} | ${ipv6_br_src} - -| Check Decapsulation With Traffic Script -| | [Arguments] | ${ipv6_ce_addr} | ${ipv4_inside} | ${port} -| | Send IPv4 UDP In IPv6 And Check Headers For Lightweight 4over6 -| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if1} -| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} -| | ... | ${ipv6_br_src} | ${ipv6_ce_addr} -| | ... | ${ipv4_outside} | ${ipv4_inside} | ${port} -| | ... | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} diff --git a/tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremapt-func.robot b/tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremapt-func.robot deleted file mode 100644 index d3550bcac3..0000000000 --- a/tests/func/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremapt-func.robot +++ /dev/null @@ -1,135 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/map.robot -| Library | resources.libraries.python.IPUtil -| Library | resources.libraries.python.Trace -| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO -| Test Setup | Run Keywords | Set up functional test -| ... | AND | Set interfaces IP addresses and routes -| Test Teardown | Tear down functional test -| Documentation | *Test for Basic mapping rule for MAP-T*\ -| ... | *[Top] Network Topologies:* TG - DUT1 - TG with two links between the -| ... | nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP on TG-to-DUT-if1. -| ... | Eth-IPv6-UDP on TG-to-DUT-if2. -| ... | *[Cfg] DUT configuration:* DUT is configured with IPv4 on one DUT-to-TG -| ... | interface and IPv6 address on second DUT-to-TG interface. MAP-T domain -| ... | is configured in test template based on test parameters. -| ... | *[Ver] TG verification:* UDP packets in IPv4 are sent by TG to -| ... | destination in MAP domain. IPv6 packets with translated IPv4 addresses -| ... | are received on TG interface. -| ... | *[Ref] Applicable standard specifications:* RFC7599 - - -*** Variables *** -| ${dut_ip4}= | 10.0.0.1 -| ${dut_ip6}= | 2001:0::1 -| ${dut_ip4_gw}= | 10.0.0.2 -| ${dut_ip6_gw}= | 2001:0::2 -| ${ipv4_prefix_len}= | 24 -| ${ipv6_prefix_len}= | 64 -| ${ipv6_br_src}= | 2001:db8:ffff::/96 - - -*** Test Cases *** -| TC01: MAP-T test -| | [Documentation] | -| | ... | Test to check map-t address translation. -| | ... -| | ... | Arguments: -| | ... -| | ... | - ipv4_pfx -| | ... | - ipv6_dst_pfx -| | ... | - ipv6_src_pfx -| | ... | - ea_bit_len -| | ... | - psid_offset -| | ... | - psid_len -| | ... | - ipv4_src -| | ... | - ipv4_dst -| | ... | - dst_port -| | ... -| | [Template] | Check MAP-T configuration with traffic script -# |===================|===============|================|============|=============|==========|===========|================|==========| -# | ipv4_pfx | ipv6_dst_pfx | ipv6_src_pfx | ea_bit_len | psid_offset | psid_len | ipv4_src | ipv4_dst | dst_port | -# |===================|===============|================|============|=============|==========|===========|================|==========| -| | 20.169.0.0/16 | 2001::/16 | ${ipv6_br_src} | ${40} | ${0} | ${0} | 100.0.0.1 | 20.169.201.219 | ${1232} | -| | 20.169.201.219/32 | 2001:db8::/32 | ${ipv6_br_src} | ${0} | ${0} | ${0} | 100.0.0.1 | 20.169.201.219 | ${1232} | -| | 20.0.0.0/8 | 2001:db8::/40 | ${ipv6_br_src} | ${24} | ${0} | ${0} | 100.0.0.1 | 20.169.201.219 | ${1232} | -#| | 20.169.201.0/32 | 2001:db8::/32 | ${ipv6_br_src} | ${0} | ${6} | ${8} | 100.0.0.1 | 20.169.201.219 | ${1232} | -#| | 20.169.201.0/24 | 2001:db8::/32 | ${ipv6_br_src} | ${0} | ${6} | ${8} | 100.0.0.1 | 20.169.201.219 | ${1232} | - - -*** Keywords *** -| Set interfaces IP addresses and routes -| | Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | Set interfaces in 2-node circular topology up -| | Configure IP addresses on interfaces -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} -| | Vpp Route Add | ${dut_node} | :: | 0 | ${dut_ip6_gw} | ${dut_to_tg_if2} -| | ... | resolve_attempts=${NONE} | count=${NONE} -| | Add IP neighbor | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6_gw} -| | ... | ${tg_to_dut_if2_mac} -| | Vpp Route Add | ${dut_node} | 0.0.0.0 | 0 | ${dut_ip4_gw} | ${dut_to_tg_if1} -| | ... | resolve_attempts=${NONE} | count=${NONE} -| | Add IP neighbor | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4_gw} -| | ... | ${tg_to_dut_if1_mac} - -| Check MAP-T configuration with traffic script -| | [Documentation] | -| | ... | Used as a test case template.\ -| | ... | Configure MAP-T domain with given parameters, with traffic script send -| | ... | UDP in IPv4 packet to given UDP destination port and IP destination -| | ... | address and check if correctly received IPv6 packet with translated -| | ... | source and destination addresses. Vice versa send IPv6 packet and -| | ... | check if received IPv4 packet with correct source and destination -| | ... | addresses. -| | ... | The MAP domain is deleted in teardown. -| | [Arguments] | ${ipv4_pfx} | ${ipv6_dst_pfx} | ${ipv6_src_pfx} -| | ... | ${ea_bit_len} | ${psid_offset} | ${psid_len} -| | ... | ${ipv4_outside} | ${ipv4_inside} | ${dst_port} -| | ${domain_index}= | Map Add Domain | ${dut_node} | ${ipv4_pfx} -| | ... | ${ipv6_dst_pfx} | ${ipv6_src_pfx} | ${ea_bit_len} | ${psid_offset} -| | ... | ${psid_len} | ${TRUE} -| | ${ipv6_ce_addr}= | Compute IPv6 map destination address -| | ... | ${ipv4_pfx} | ${ipv6_dst_pfx} | ${ea_bit_len} | ${psid_offset} -| | ... | ${psid_len} | ${ipv4_inside} | ${dst_port} -| | ${ipv6_br_addr}= | Compute IPv6 map source address -| | ... | ${ipv6_src_pfx} | ${ipv4_outside} -# Check translation from v4 to v6 with traffic script -| | Send IPv4 UDP and check IPv6 headers for MAP-T -| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} -| | ... | ${dut_to_tg_if1_mac} | ${ipv4_inside} | ${ipv4_outside} | ${dst_port} -| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} -| | ... | ${ipv6_ce_addr} | ${ipv6_br_addr} -# Check translation from v6 to v4 with traffic script -| | Send IPv6 UDP and check IPv4 headers for MAP-T -| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if1} -| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} -| | ... | ${ipv6_br_addr} | ${ipv6_ce_addr} -| | ... | ${dst_port} -| | ... | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} -| | ... | ${ipv4_outside} | ${ipv4_inside} -| | [Teardown] | Run Keywords -| | ... | Map Del Domain | ${dut_node} | ${domain_index} | AND -| | ... | Show packet trace on all DUTs | ${nodes} | AND -| | ... | Clear packet trace on all DUTs | ${nodes} | AND -| | ... | Verify VPP PID in Teardown diff --git a/tests/func/tap/api-crud-tap-func.robot b/tests/func/tap/api-crud-tap-func.robot deleted file mode 100644 index c1a830937c..0000000000 --- a/tests/func/tap/api-crud-tap-func.robot +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/traffic.robot -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.Tap -| Library | resources.libraries.python.Namespaces -| Library | resources.libraries.python.IPUtil -| ... -| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO -| ... -| Test Setup | Set up TAP functional test -| ... -| Test Teardown | Tear down TAP functional test -| ... -| Documentation | *Tap Interface CRUD Tests* -| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links -| ... | between nodes. -| ... | *[Enc] Packet Encapsulations:* No packet sent. -| ... | *[Cfg] DUT configuration:* Add/Modify/Delete linux-TAP on DUT1. -| ... | *[Ver] Verification:* Check dump of tap interfaces for correctness. -| ... | *[Ref] Applicable standard specifications:* - -*** Variables *** -| ${tap_int1}= | tap_int1 -| ${tap_int2}= | tap_int2 -| ${mod_tap_name}= | tap_int1MOD - -*** Test Cases *** -| TC01: Tap Interface Modify And Delete -| | [Documentation] -| | ... | [Top] TG-DUT1-TG. -| | ... | [Enc] Eth-IPv4-ICMPv4. -| | ... | [Cfg] Set two TAP interfaces. -| | ... | [Ver] Verify that TAP interface can be modified, deleted, and no\ -| | ... | other TAP interface is affected. -| | ... -| | Given Configure path in 2-node circular topology | ${nodes['TG']} -| | ... | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1} -| | ${int2}= | And Add Tap Interface | ${dut_node} | ${tap_int2} -| | And Set Interface State | ${dut_node} | ${int1} | up -| | And Set Interface State | ${dut_node} | ${int2} | up -| | When Modify Tap Interface | ${dut_node} | ${int1} | ${mod_tap_name} -| | Then Check Tap Present | ${dut_node} | ${mod_tap_name} -| | When Delete Tap Interface | ${dut_node} | ${int1} -| | Then Run Keyword And Expect Error -| | ... | Tap interface :${mod_tap_name} does not exist -| | ... | Check Tap Present | ${dut_node} | ${mod_tap_name} -| | And Check Tap Present | ${dut_node} | ${tap_int2} -| | When Delete Tap Interface | ${dut_node} | ${int2} -| | Then Run Keyword And Expect Error -| | ... | ValueError: No JSON object could be decoded -| | ... | Check Tap Present | ${dut_node} | ${tap_int2} diff --git a/tests/func/tap/eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot b/tests/func/tap/eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot deleted file mode 100644 index 984b6e42ef..0000000000 --- a/tests/func/tap/eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot +++ /dev/null @@ -1,88 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/traffic.robot -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.Tap -| Library | resources.libraries.python.Namespaces -| Library | resources.libraries.python.IPUtil -| ... -| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO -| ... -| Test Setup | Set up TAP functional test -| ... -| Test Teardown | Tear down TAP functional test with Linux bridge | ${bid_TAP} -| ... -| Documentation | *Tap Interface Traffic Tests* -| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links -| ... | between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of -| ... | IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | bridge-domain (L2BD) MAC learning enabled; Split Horizon Groups (SHG) -| ... | are set depending on test case; Namespaces (NM) -| ... | are set on DUT1 with attached linux-TAP. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets -| ... | are sent by TG on link to DUT1; On receipt TG verifies packets -| ... | for correctness and their IPv4 src-addr, dst-addr, and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* - -*** Variables *** -| ${bid_from_TG}= | 19 -| ${bid_to_TG}= | 20 -| ${bid_TAP}= | tapBr - -| ${tap_int1}= | tap_int1 -| ${tap_int2}= | tap_int2 - -*** Test Cases *** -| TC01: Tap Interface Simple BD -| | [Documentation] -| | ... | [Top] TG-DUT1-TG. -| | ... | [Enc] Eth-IPv4-ICMPv4. -| | ... | [Cfg] On DUT1 configure two L2BD with two if's for each L2BD with MAC\ -| | ... | learning and one L2BD joining two linux-TAP interfaces created by VPP\ -| | ... | located in namespace. -| | ... | [Ver] Packet sent from TG is passed through all L2BD and received\ -| | ... | back on TG. Then src_ip, dst_ip and MAC are checked. -| | ... -| | Given Configure path in 2-node circular topology | ${nodes['TG']} -| | ... | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1} -| | ${int2}= | And Add Tap Interface | ${dut_node} | ${tap_int2} -| | And Set Interface State | ${dut_node} | ${int1} | up -| | And Set Interface State | ${dut_node} | ${int2} | up -| | And Create bridge domain | ${dut_node} -| | ... | ${bid_from_TG} | learn=${TRUE} -| | And Create bridge domain | ${dut_node} -| | ... | ${bid_to_TG} | learn=${TRUE} -| | And Linux Add Bridge | ${dut_node} -| | ... | ${bid_TAP} | ${tap_int1} | ${tap_int2} -| | And Add interface to bridge domain | ${dut_node} -| | ... | ${int1} | ${bid_to_TG} | 0 -| | And Add interface to bridge domain | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${bid_to_TG} | 0 -| | And Add interface to bridge domain | ${dut_node} -| | ... | ${int2} | ${bid_from_TG} | 0 -| | And Add interface to bridge domain | ${dut_node} -| | ... | ${dut_to_tg_if2} | ${bid_from_TG} | 0 -| | Then Send ICMP packet and verify received packet | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2} diff --git a/tests/func/tap/eth2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot b/tests/func/tap/eth2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot deleted file mode 100644 index 8cfd10ac25..0000000000 --- a/tests/func/tap/eth2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot +++ /dev/null @@ -1,176 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/traffic.robot -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.Tap -| Library | resources.libraries.python.Namespaces -| Library | resources.libraries.python.IPUtil -| ... -| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO -| ... -| Test Setup | Set up TAP functional test -| ... -| Test Teardown | Tear down TAP functional test -| ... -| Documentation | *Tap Interface Traffic Tests* -| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links -| ... | between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of -| ... | IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | bridge-domain (L2BD) MAC learning enabled; Split Horizon Groups (SHG) -| ... | are set depending on test case; Namespaces (NM) -| ... | are set on DUT1 with attached linux-TAP. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets -| ... | are sent by TG on link to DUT1; On receipt TG verifies packets -| ... | for correctness and their IPv4 src-addr, dst-addr, and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* - -*** Variables *** -| ${tap1_NM_ip}= | 16.0.10.2 -| ${tap2_NM_SHG}= | 16.0.10.3 - -| ${bd_id1}= | 21 -| ${shg1}= | 2 -| ${shg2}= | 3 - -| ${tap1_NM_mac}= | 02:00:00:00:00:02 -| ${tap2_NM_mac}= | 02:00:00:00:00:04 - -| ${tap_int1}= | tap_int1 -| ${tap_int2}= | tap_int2 - -| ${namespace1}= | nmspace1 -| ${namespace2}= | nmspace2 - -| ${tg_ip_address_SHG}= | 16.0.10.20 -| ${prefix}= | 24 - -*** Test Cases *** -| TC01: Tap Interface BD - Different Split Horizon -| | [Documentation] -| | ... | [Top] TG-DUT1-TG. -| | ... | [Enc] Eth-IPv4-ICMPv4. -| | ... | [Cfg] On DUT1 configure one if into L2BD with MAC learning. Add two\ -| | ... | TAP interfaces into this L2BD and assign them different SHG. Setup\ -| | ... | two namespaces and assign two linux-TAP interfaces to it respectively. -| | ... | [Ver] Packet is sent from TG to both linux-TAP interfaces and reply\ -| | ... | is checked. Ping from First linux-TAP to another should pass. -| | ... -| | Given Configure path in 2-node circular topology | ${nodes['TG']} -| | ... | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1} -| | ${int2}= | And Add Tap Interface | ${dut_node} | ${tap_int2} -| | And Set Interface State | ${dut_node} | ${int1} | up -| | And Set Interface State | ${dut_node} | ${int2} | up -| | When Create Namespace | ${dut_node} | ${namespace1} -| | And Attach Interface To Namespace | ${dut_node} -| | ... | ${namespace1} | ${tap_int1} -| | And Create Namespace | ${dut_node} | ${namespace2} -| | And Attach Interface To Namespace | ${dut_node} -| | ... | ${namespace2} | ${tap_int2} -| | And Set Linux Interface IP | ${dut_node} | ${tap_int1} -| | ... | ${tap1_NM_ip} | ${prefix} | ${namespace1} -| | And Set Linux Interface IP | ${dut_node} | ${tap_int2} -| | ... | ${tap2_NM_SHG} | ${prefix} | ${namespace2} -| | And Set Linux Interface MAC | ${dut_node} -| | ... | ${tap_int1} | ${tap1_NM_mac} | ${namespace1} -| | And Set Linux Interface MAC | ${dut_node} -| | ... | ${tap_int2} | ${tap2_NM_mac} | ${namespace2} -| | And Set Linux Interface ARP | ${dut_node} | ${tap_int1} -| | ... | ${tg_ip_address_SHG} | ${tg_to_dut_if1_mac} | ${namespace1} -| | And Set Linux Interface ARP | ${dut_node} | ${tap_int2} -| | ... | ${tg_ip_address_SHG} | ${tg_to_dut_if1_mac} | ${namespace2} -| | And Create bridge domain | ${dut_node} -| | ... | ${bd_id1} | learn=${TRUE} -| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut_node} | ${int1} -| | ... | ${bd_id1} | ${shg1} -| | And Add interface to bridge domain | ${dut_node} | ${int2} -| | ... | ${bd_id1} | ${shg2} -| | Then Send ICMP echo request and verify answer | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${tap1_NM_mac} | ${tg_to_dut_if1_mac} -| | ... | ${tap1_NM_ip} | ${tg_ip_address_SHG} -| | And Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut_if1} -| | ... | ${tap2_NM_mac} | ${tg_to_dut_if1_mac} -| | ... | ${tap2_NM_SHG} | ${tg_ip_address_SHG} -| | And Send Ping From Node To Dst | ${dut_node} | ${tap1_NM_ip} -| | ... | namespace=${namespace2} -| | And Send Ping From Node To Dst | ${dut_node} | ${tap2_NM_SHG} -| | ... | namespace=${namespace1} - -| TC02: Tap Interface BD - Same Split Horizon -| | [Documentation] -| | ... | [Top] TG-DUT1-TG. -| | ... | [Enc] Eth-IPv4-ICMPv4. -| | ... | [Cfg] On DUT1 configure one if into L2BD with MAC learning. Add two\ -| | ... | TAP interfaces into this L2BD and assign them same SHG. Setup two\ -| | ... | namespaces and assign two linux-TAP interfaces to it respectively. -| | ... | [Ver] Packet is sent from TG to both linux-TAP interfaces and reply\ -| | ... | is checked. Ping from First linux-TAP to another should fail. -| | ... -| | Given Configure path in 2-node circular topology | ${nodes['TG']} -| | ... | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1} -| | ${int2}= | And Add Tap Interface | ${dut_node} | ${tap_int2} -| | And Set Interface State | ${dut_node} | ${int1} | up -| | And Set Interface State | ${dut_node} | ${int2} | up -| | When Create Namespace | ${dut_node} | ${namespace1} -| | And Attach Interface To Namespace | ${dut_node} -| | ... | ${namespace1} | ${tap_int1} -| | And Create Namespace | ${dut_node} | ${namespace2} -| | And Attach Interface To Namespace | ${dut_node} -| | ... | ${namespace2} | ${tap_int2} -| | And Set Linux Interface IP | ${dut_node} | ${tap_int1} -| | ... | ${tap1_NM_ip} | ${prefix} | ${namespace1} -| | And Set Linux Interface IP | ${dut_node} | ${tap_int2} -| | ... | ${tap2_NM_SHG} | ${prefix} | ${namespace2} -| | And Set Linux Interface MAC | ${dut_node} -| | ... | ${tap_int1} | ${tap1_NM_mac} | ${namespace1} -| | And Set Linux Interface MAC | ${dut_node} -| | ... | ${tap_int2} | ${tap2_NM_mac} | ${namespace2} -| | And Set Linux Interface ARP | ${dut_node} | ${tap_int1} -| | ... | ${tg_ip_address_SHG} | ${tg_to_dut_if1_mac} | ${namespace1} -| | And Set Linux Interface ARP | ${dut_node} | ${tap_int2} -| | ... | ${tg_ip_address_SHG} | ${tg_to_dut_if1_mac} | ${namespace2} -| | And Create bridge domain | ${dut_node} -| | ... | ${bd_id1} | learn=${TRUE} -| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut_node} | ${int1} -| | ... | ${bd_id1} | ${shg1} -| | And Add interface to bridge domain | ${dut_node} | ${int2} -| | ... | ${bd_id1} | ${shg1} -| | Then Send ICMP echo request and verify answer | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${tap1_NM_mac} | ${tg_to_dut_if1_mac} -| | ... | ${tap1_NM_ip} | ${tg_ip_address_SHG} -| | And Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut_if1} -| | ... | ${tap2_NM_mac} | ${tg_to_dut_if1_mac} -| | ... | ${tap2_NM_SHG} | ${tg_ip_address_SHG} -| | And Run Keyword And Expect Error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${dut_node} | ${tap2_NM_SHG} -| | ... | namespace=${namespace1} -| | And Run Keyword And Expect Error | Ping Not Successful -| | ... | Send Ping From Node To Dst | ${dut_node} | ${tap1_NM_ip} -| | ... | namespace=${namespace2} diff --git a/tests/func/tap/eth2p-ethip4-ip4base-eth-1tap-func.robot b/tests/func/tap/eth2p-ethip4-ip4base-eth-1tap-func.robot deleted file mode 100644 index 9500debfbc..0000000000 --- a/tests/func/tap/eth2p-ethip4-ip4base-eth-1tap-func.robot +++ /dev/null @@ -1,126 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/traffic.robot -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.Tap -| Library | resources.libraries.python.Namespaces -| Library | resources.libraries.python.IPUtil -| ... -| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO -| ... -| Test Setup | Set up TAP functional test -| ... -| Test Teardown | Tear down TAP functional test -| ... -| Documentation | *Tap Interface Traffic Tests* -| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links -| ... | between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of -| ... | IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | bridge-domain (L2BD) MAC learning enabled; Split Horizon Groups (SHG) -| ... | are set depending on test case; Namespaces (NM) -| ... | are set on DUT1 with attached linux-TAP. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets -| ... | are sent by TG on link to DUT1; On receipt TG verifies packets -| ... | for correctness and their IPv4 src-addr, dst-addr, and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* - -*** Variables *** -| ${tap1_VPP_ip}= | 16.0.10.1 -| ${tap1_NM_ip}= | 16.0.10.2 -| ${tap1_NM_mac}= | 02:00:00:00:00:02 -| ${tap_int1}= | tap_int1 - -| ${namespace1}= | nmspace1 - -| ${dut_ip_address}= | 192.168.0.1 -| ${tg_ip_address}= | 192.168.0.2 -| ${tg_ip_address_GW}= | 192.168.0.0 -| ${prefix}= | 24 - -*** Test Cases *** -| TC01: Tap Interface IP Ping Without Namespace -| | [Documentation] -| | ... | [Top] TG-DUT1-TG. -| | ... | [Enc] Eth-IPv4-ICMPv4. -| | ... | [Cfg] On DUT1 configure two interface addresses with IPv4 of which\ -| | ... | one is TAP interface (dut_to_tg_if and TAP) and one is linux-TAP. -| | ... | [Ver] Packet sent from TG gets to the destination and ICMP-reply is\ -| | ... | received on TG. -| | ... -| | Given Configure path in 2-node circular topology | ${nodes['TG']} -| | ... | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1} | -| | And Set Interface Address -| | ... | ${dut_node} | ${int1} | ${tap1_VPP_ip} | ${prefix} -| | And Set Interface Address -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip_address} | ${prefix} -| | And Set Interface State | ${dut_node} | ${int1} | up -| | And Set Linux Interface MAC | ${dut_node} | ${tap_int1} | ${tap1_NM_mac} -| | And Set Linux Interface IP | ${dut_node} -| | ... | ${tap_int1} | ${tap1_NM_ip} | ${prefix} -| | And Add Route | ${dut_node} -| | ... | ${tg_ip_address_GW} | ${prefix} | ${tap1_VPP_ip} -| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${tg_ip_address} | ${tg_to_dut_if1_mac} -| | And Add Arp On Dut | ${dut_node} | ${int1} -| | ... | ${tap1_NM_ip} | ${tap1_NM_mac} -| | Then Send ICMP echo request and verify answer | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} | ${tg_to_dut_if1_mac} -| | ... | ${tap1_NM_ip} | ${tg_ip_address} - -| TC02: Tap Interface IP Ping With Namespace -| | [Documentation] -| | ... | [Top] TG-DUT1-TG. -| | ... | [Enc] Eth-IPv4-ICMPv4. -| | ... | [Cfg] On DUT1 configure two interface addresses with IPv4 of which\ -| | ... | one is TAP interface (dut_to_tg_if and TAP) and one is linux-TAP in\ -| | ... | namespace. -| | ... | [Ver] Packet sent from TG gets to the destination and ICMP-reply is\ -| | ... | received on TG. -| | ... -| | Given Configure path in 2-node circular topology | ${nodes['TG']} -| | ... | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1} | -| | And Set Interface Address -| | ... | ${dut_node} | ${int1} | ${tap1_VPP_ip} | ${prefix} -| | And Set Interface Address -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip_address} | ${prefix} -| | And Set Interface State | ${dut_node} | ${int1} | up -| | When Create Namespace | ${dut_node} | ${namespace1} -| | And Attach Interface To Namespace | ${dut_node} -| | ... | ${namespace1} | ${tap_int1} -| | And Set Linux Interface MAC | ${dut_node} -| | ... | ${tap_int1} | ${tap1_NM_mac} | ${namespace1} -| | And Set Linux Interface IP | ${dut_node} -| | ... | ${tap_int1} | ${tap1_NM_ip} | ${prefix} | ${namespace1} -| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${tg_ip_address} | ${tg_to_dut_if1_mac} -| | And Add Arp On Dut | ${dut_node} | ${int1} -| | ... | ${tap1_NM_ip} | ${tap1_NM_mac} -| | And Add Route | ${dut_node} -| | ... | ${tg_ip_address_GW} | ${prefix} | ${tap1_VPP_ip} | ${namespace1} -| | Then Send ICMP echo request and verify answer | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} | ${tg_to_dut_if1_mac} -| | ... | ${tap1_NM_ip} | ${tg_ip_address} diff --git a/tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixbase-func.robot b/tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixbase-func.robot deleted file mode 100644 index e5ec8dce9a..0000000000 --- a/tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixbase-func.robot +++ /dev/null @@ -1,201 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/telemetry/ipfix.robot -| Library | resources.libraries.python.Classify.Classify -| Library | resources.libraries.python.telemetry.IPFIXSetup -| Library | resources.libraries.python.Trace - -| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO | EXPECTED_FAILING -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *IPFIX ipv4 test cases* -| ... -| ... | IPFIX tests use 3-node topology TG - DUT1 - DUT2 - TG with -| ... | one link between the nodes. DUT1 is configured with IPv4 -| ... | routing and static routes. IPFIX is configured on DUT1 with -| ... | DUT1->TG interface as collector. Test packets are -| ... | sent from TG to DUT1. TG listens for flow report packets -| ... | and verifies that they contains flow record of test packets sent. - -*** Variables *** -| ${dut1_to_tg_ip}= | 192.168.1.1 -| ${tg_to_dut1_ip}= | 192.168.1.2 -| ${dut2_to_dut1_ip}= | 192.168.2.1 -| ${prefix_length}= | 24 -| ${ip_version}= | ip4 -| ${port}= | 80 - -*** Test Cases *** -| TC01: DUT sends IPFIX template and data packets -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface -| | ... | address as collector and a basic classify session. -| | ... | [Ver] Make TG listen for IPFIX template and data packets, verify -| | ... | that packet is received and correct. No packets are sent from TG. -| | ... | [Ref] RFC 7011 -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} -| | ... | ${tg_to_dut1_mac} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | src -| | And VPP configures classify session L3 | ${dut1_node} | permit -| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | src -| | ... | ${tg_to_dut1_ip} -| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} -| | ... | ${table_index} | ip_version=${ip_version} -| | And Setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip} -| | ... | ${dut1_to_tg_ip} | interval=5 -| | And Set IPFIX stream | ${dut1_node} | ${1} -| | And Assign classify table to exporter | ${dut1_node} | ${table_index} -| | ... | ${ip_version} -| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} -| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} -| | ... | count=0 - -| TC02: DUT reports packet flow for traffic by source address -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface -| | ... | address as collector and add classify session with TG source address. -| | ... | [Ver] Make TG send a packet to DUT1, then listen for IPFIX template -| | ... | and data packets, verify that IPFIX reported the received packet. -| | ... | [Ref] RFC 7011 -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} -| | ... | ${tg_to_dut1_mac} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | src -| | And VPP configures classify session L3 | ${dut1_node} | permit -| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | src -| | ... | ${tg_to_dut1_ip} -| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} -| | ... | ${table_index} | ip_version=${ip_version} -| | And Setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip} -| | ... | ${dut1_to_tg_ip} | interval=5 -| | And Set IPFIX stream | ${dut1_node} | ${1} -| | And Assign classify table to exporter | ${dut1_node} | ${table_index} -| | ... | ${ip_version} -| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} -| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} - -| TC03: DUT reports packet flow for traffic with local destination address -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface -| | ... | address as collector and add classify session with destination -| | ... | address of DUT1. -| | ... | [Ver] Make TG send a packet to DUT1, then listen for IPFIX template -| | ... | and data packets, verify that IPFIX reported the received packet. -| | ... | [Ref] RFC 7011 -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} -| | ... | ${tg_to_dut1_mac} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | dst -| | And VPP configures classify session L3 | ${dut1_node} | permit -| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | dst -| | ... | ${dut1_to_tg_ip} -| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} -| | ... | ${table_index} | ip_version=${ip_version} -| | And Setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip} -| | ... | ${dut1_to_tg_ip} | interval=5 -| | And Set IPFIX stream | ${dut1_node} | ${1} -| | And Assign classify table to exporter | ${dut1_node} | ${table_index} -| | ... | ${ip_version} -| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} -| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} - -| TC04: DUT reports packet flow for traffic with remote destination address -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface -| | ... | address as collector and add classify session with destination -| | ... | address of DUT2. -| | ... | [Ver] Make TG send a packet to DUT2 through DUT1, then listen -| | ... | for IPFIX template and data packets, verify that IPFIX reported -| | ... | the received packet. -| | ... | [Ref] RFC 7011 -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} -| | ... | ${tg_to_dut1_mac} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip} -| | ... | ${dut2_to_dut1_mac} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | dst -| | And VPP configures classify session L3 | ${dut1_node} | permit -| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | dst -| | ... | ${dut2_to_dut1_ip} -| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} -| | ... | ${table_index} | ip_version=${ip_version} -| | And Setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip} -| | ... | ${dut1_to_tg_ip} | interval=5 -| | And Set IPFIX stream | ${dut1_node} | ${1} -| | And Assign classify table to exporter | ${dut1_node} | ${table_index} -| | ... | ${ip_version} -| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} -| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut2_to_dut1_ip} - -| TC05: DUT reports packet flow for traffic by source and destination port -| | [Tags] | SKIP_VPP_PATCH -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface -| | ... | address as collector and add classify session with TG source address -| | ... | and source and destination ports. -| | ... | [Ver] Make TG send a packet to DUT1, then listen for IPFIX template -| | ... | and data packets, verify that IPFIX reported the received packet. -| | ... | [Ref] RFC 7011 -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} -| | ... | ${tg_to_dut1_mac} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} -| | ... | src proto l4 src_port dst_port -| | And VPP configures classify session generic | ${dut1_node} -| | ... | acl-hit-next permit | ${table_index} | ${skip_n} | ${match_n} -| | ... | l3 ${ip_version} src ${tg_to_dut1_ip} -| | ... | proto 6 l4 src_port ${port} dst_port ${port} -| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} -| | ... | ${table_index} | ip_version=${ip_version} -| | And Setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip} -| | ... | ${dut1_to_tg_ip} | interval=5 -| | And Set IPFIX stream | ${dut1_node} | ${1} -| | And Assign classify table to exporter | ${dut1_node} | ${table_index} -| | ... | ${ip_version} -| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} -| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} -| | ... | port=${port} - -# TODO: DUT reports packet flow when ACL is configured with wildcards diff --git a/tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixscale-func.robot b/tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixscale-func.robot deleted file mode 100644 index cfa67ee53e..0000000000 --- a/tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixscale-func.robot +++ /dev/null @@ -1,111 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/telemetry/ipfix.robot -| Library | resources.libraries.python.Classify.Classify -| Library | resources.libraries.python.telemetry.IPFIXSetup -| Library | resources.libraries.python.Trace - -| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO | EXPECTED_FAILING -| ... | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *IPFIX ipv4 test cases* -| ... -| ... | IPFIX tests use 3-node topology TG - DUT1 - DUT2 - TG with -| ... | one link between the nodes. DUT1 is configured with IPv4 -| ... | routing and static routes. IPFIX is configured on DUT1 with -| ... | DUT1->TG interface as collector. Test packets are -| ... | sent from TG to DUT1. TG listens for flow report packets -| ... | and verifies that they contains flow record of test packets sent. - -*** Variables *** -| ${dut1_to_tg_ip}= | 192.168.1.1 -| ${tg_to_dut1_ip}= | 192.168.1.2 -| ${prefix_length}= | 24 -| ${ip_version}= | ip4 -| ${sessions}= | 80 - -*** Test Cases *** -| TC01: DUT reports packet flow with a large number of packets -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface -| | ... | address as collector and add classify session with TG source address. -| | ... | [Ver] Make TG send packets to DUT1, then listen for IPFIX template -| | ... | and data packets, verify that IPFIX reported the received packets. -| | ... | [Ref] RFC 7011 -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} -| | ... | ${tg_to_dut1_mac} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | src -| | And VPP configures classify session L3 | ${dut1_node} | permit -| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | src -| | ... | ${tg_to_dut1_ip} -| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} -| | ... | ${table_index} | ip_version=${ip_version} -| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip} -| | ... | ${dut1_to_tg_ip} | interval=5 -| | And Set IPFIX stream | ${dut1_node} | ${1} -| | And Assign classify table to exporter | ${dut1_node} | ${table_index} -| | ... | ${ip_version} -| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} -| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} -| | ... | count=20000 | timeout=10 - -| TC02: DUT reports packet flow when multiple sessions are configured -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface -| | ... | address as collector and add several classify sessions with different -| | ... | ports. -| | ... | [Ver] Make TG send packets to DUT1 using a range of ports matching -| | ... | configured sessions, then listen for IPFIX template and data packets, -| | ... | verify that IPFIX reported the received packets for each session. -| | ... | [Ref] RFC 7011 -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} -| | ... | ${tg_to_dut1_mac} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} -| | ... | src proto l4 src_port dst_port -| | :FOR | ${index} | IN RANGE | ${sessions} -| | | VPP configures classify session generic | ${dut1_node} -| | | ... | acl-hit-next permit | ${table_index} | ${skip_n} | ${match_n} -| | | ... | l3 ${ip_version} src ${tg_to_dut1_ip} -| | | ... | proto 6 l4 src_port ${index} dst_port ${index} -| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} -| | ... | ${table_index} | ip_version=${ip_version} -| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip} -| | ... | ${dut1_to_tg_ip} -| | ... | mtu=1450 | interval=5 -| | And Set IPFIX stream | ${dut1_node} | ${1} -| | And Assign classify table to exporter | ${dut1_node} | ${table_index} -| | ... | ${ip_version} -| | Then Send session sweep and verify IPFIX | ${tg_node} | ${dut1_node} -| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} -| | ... | ${sessions} | timeout=10 | count=3 - -# TODO: DUT reports packet flow when ACL is configured with wildcards diff --git a/tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixbase-func.robot b/tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixbase-func.robot deleted file mode 100644 index 8557c234d5..0000000000 --- a/tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixbase-func.robot +++ /dev/null @@ -1,198 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/telemetry/ipfix.robot -| Library | resources.libraries.python.Classify.Classify -| Library | resources.libraries.python.telemetry.IPFIXSetup -| Library | resources.libraries.python.IPv6Setup -| Library | resources.libraries.python.Trace - -| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO | EXPECTED_FAILING -# TODO: Remove EXPECTED_FAILING tag once functionality is implemented (VPP-204) -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *IPFIX ipv6 test cases* -| ... -| ... | IPFIX tests use 3-node topology TG - DUT1 - DUT2 - TG with -| ... | one link between the nodes. DUT1 is configured with IPv4 and IPV6 -| ... | routing and static routes. IPFIX is configured on DUT1 with -| ... | DUT1->TG interface as collector.Test packets are -| ... | sent from TG to or through DUT1. TG listens for flow report packets -| ... | and verifies that they contains flow records of test packets sent. - -*** Variables *** -| ${dut1_to_tg_ip}= | 10::10 -| ${dut2_to_dut1_ip}= | 11::10 -| ${tg_to_dut1_ip}= | 12::10 -| ${prefix_length}= | 64 -| ${ip_version}= | ip6 -| ${port}= | 80 - -# IPv4 addresses used for IPFIX exporter. Export over IPv6 not (yet?) supported. -| ${dut1_to_tg_ip4}= | 192.168.1.1 -| ${tg_to_dut1_ip4}= | 192.168.1.2 - -*** Test Cases *** -| TC01: DUT reports packet flow for traffic by source address -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface -| | ... | address as collector and add classify session with TG source address. -| | ... | [Ver] Make TG send a packet to DUT1, then listen for IPFIX template -| | ... | and data packets, verify that IPFIX reported the received packet. -| | ... | [Ref] RFC 7011 -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${24} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip4} -| | ... | ${tg_to_dut1_mac} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} -| | ... | ${tg_to_dut1_mac} -| | And VPP RA suppress link layer | ${dut1_node} | ${dut1_to_tg} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | src -| | And VPP configures classify session L3 | ${dut1_node} | permit -| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | src -| | ... | ${tg_to_dut1_ip} -| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} -| | ... | ${table_index} | ip_version=${ip_version} -| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip4} -| | ... | ${dut1_to_tg_ip4} | interval=5 -| | And Set IPFIX stream | ${dut1_node} | ${1} -| | And Assign classify table to exporter | ${dut1_node} | ${table_index} -| | ... | ${ip_version} -| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} -| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} - -| TC02: DUT reports packet flow for traffic with local destination address -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface -| | ... | address as collector and add classify session with destination -| | ... | address of DUT1. -| | ... | [Ver] Make TG send a packet to DUT1, then listen for IPFIX template -| | ... | and data packets, verify that IPFIX reported the received packet. -| | ... | [Ref] RFC 7011 -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${24} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip4} -| | ... | ${tg_to_dut1_mac} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} -| | ... | ${tg_to_dut1_mac} -| | And VPP RA suppress link layer | ${dut1_node} | ${dut1_to_tg} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | dst -| | And VPP configures classify session L3 | ${dut1_node} | permit -| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | dst -| | ... | ${dut1_to_tg_ip} -| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} -| | ... | ${table_index} | ip_version=${ip_version} -| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip4} -| | ... | ${dut1_to_tg_ip4} | interval=5 -| | And Set IPFIX stream | ${dut1_node} | ${1} -| | And Assign classify table to exporter | ${dut1_node} | ${table_index} -| | ... | ${ip_version} -| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} -| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} - -| TC03: DUT reports packet flow for traffic with remote destination address -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface -| | ... | address as collector and add classify session with destination -| | ... | address of DUT2. -| | ... | [Ver] Make TG send a packet to DUT2 through DUT1, then listen -| | ... | for IPFIX template and data packets, verify that IPFIX reported -| | ... | the received packet. -| | ... | [Ref] RFC 7011 -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${24} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip4} -| | ... | ${tg_to_dut1_mac} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} -| | ... | ${tg_to_dut1_mac} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip} -| | ... | ${dut2_to_dut1_mac} -| | And VPP RA suppress link layer | ${dut1_node} | ${dut1_to_tg} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | dst -| | And VPP configures classify session L3 | ${dut1_node} | permit -| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | dst -| | ... | ${dut2_to_dut1_ip} -| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} -| | ... | ${table_index} | ip_version=${ip_version} -| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip4} -| | ... | ${dut1_to_tg_ip4} | interval=5 -| | And Set IPFIX stream | ${dut1_node} | ${1} -| | And Assign classify table to exporter | ${dut1_node} | ${table_index} -| | ... | ${ip_version} -| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} -| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} -| | ... | ${dut2_to_dut1_ip} - -| TC04: DUT reports packet flow for traffic by source and destination port -| | [Tags] | SKIP_VPP_PATCH -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface -| | ... | address as collector and add classify session with TG source address -| | ... | and source and destination ports. -| | ... | [Ver] Make TG send a packet to DUT1, then listen for IPFIX template -| | ... | and data packets, verify that IPFIX reported the received packet. -| | ... | [Ref] RFC 7011 -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${24} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip4} -| | ... | ${tg_to_dut1_mac} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} -| | ... | ${tg_to_dut1_mac} -| | And VPP RA suppress link layer | ${dut1_node} | ${dut1_to_tg} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} -| | ... | src proto l4 src_port dst_port -| | And VPP configures classify session generic | ${dut1_node} -| | ... | acl-hit-next permit | ${table_index} | ${skip_n} | ${match_n} -| | ... | l3 ${ip_version} src ${tg_to_dut1_ip} -| | ... | proto 6 l4 src_port ${port} dst_port ${port} -| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} -| | ... | ${table_index} | ip_version=${ip_version} -| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip4} -| | ... | ${dut1_to_tg_ip4} | interval=5 -| | And Set IPFIX stream | ${dut1_node} | ${1} -| | And Assign classify table to exporter | ${dut1_node} | ${table_index} -| | ... | ${ip_version} -| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} -| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} -| | ... | port=${port} - -# TODO: DUT reports packet flow when ACL is configured with wildcards diff --git a/tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixscale-func.robot b/tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixscale-func.robot deleted file mode 100644 index ee5caef306..0000000000 --- a/tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixscale-func.robot +++ /dev/null @@ -1,127 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/telemetry/ipfix.robot -| Library | resources.libraries.python.Classify.Classify -| Library | resources.libraries.python.telemetry.IPFIXSetup -| Library | resources.libraries.python.IPv6Setup -| Library | resources.libraries.python.Trace - -| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO | EXPECTED_FAILING -| ... | SKIP_VPP_PATCH -# TODO: Remove EXPECTED_FAILING tag once functionality is implemented (VPP-204) -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *IPFIX ipv6 test cases* -| ... -| ... | IPFIX tests use 3-node topology TG - DUT1 - DUT2 - TG with -| ... | one link between the nodes. DUT1 is configured with IPv4 and IPV6 -| ... | routing and static routes. IPFIX is configured on DUT1 with -| ... | DUT1->TG interface as collector.Test packets are -| ... | sent from TG to or through DUT1. TG listens for flow report packets -| ... | and verifies that they contains flow records of test packets sent. - -*** Variables *** -| ${dut1_to_tg_ip}= | 10::10 -| ${tg_to_dut1_ip}= | 12::10 -| ${prefix_length}= | 64 -| ${ip_version}= | ip6 -| ${sessions}= | 45 - -# IPv4 addresses used for IPFIX exporter. Export over IPv6 not (yet?) supported. -| ${dut1_to_tg_ip4}= | 192.168.1.1 -| ${tg_to_dut1_ip4}= | 192.168.1.2 - -*** Test Cases *** -| TC01: DUT reports packet flow with a large number of packets -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface -| | ... | address as collector and add classify session with TG source address. -| | ... | [Ver] Make TG send packets to DUT1, then listen for IPFIX template -| | ... | and data packets, verify that IPFIX reported the received packets. -| | ... | [Ref] RFC 7011 -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${24} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip4} -| | ... | ${tg_to_dut1_mac} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} -| | ... | ${tg_to_dut1_mac} -| | And VPP RA suppress link layer | ${dut1_node} | ${dut1_to_tg} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | src -| | And VPP configures classify session L3 | ${dut1_node} | permit -| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | src -| | ... | ${tg_to_dut1_ip} -| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} -| | ... | ${table_index} | ip_version=${ip_version} -| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip4} -| | ... | ${dut1_to_tg_ip4} | interval=5 -| | And Set IPFIX stream | ${dut1_node} | ${1} -| | And Assign classify table to exporter | ${dut1_node} | ${table_index} -| | ... | ${ip_version} -| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} -| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} -| | ... | count=20000 | timeout=10 - -| TC02: DUT reports packet flow when multiple sessions are configured -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface -| | ... | address as collector and add several classify sessions with different -| | ... | ports. -| | ... | [Ver] Make TG send packets to DUT1 using a range of ports matching -| | ... | configured sessions, then listen for IPFIX template and data packets, -| | ... | verify that IPFIX reported the received packets for each session. -| | ... | [Ref] RFC 7011 -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${24} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip4} -| | ... | ${tg_to_dut1_mac} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} -| | ... | ${tg_to_dut1_mac} -| | And VPP RA suppress link layer | ${dut1_node} | ${dut1_to_tg} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} -| | ... | src proto l4 src_port dst_port -| | :FOR | ${index} | IN RANGE | ${sessions} -| | | VPP configures classify session generic | ${dut1_node} -| | | ... | acl-hit-next permit | ${table_index} | ${skip_n} | ${match_n} -| | | ... | l3 ${ip_version} src ${tg_to_dut1_ip} -| | | ... | proto 6 l4 src_port ${index} dst_port ${index} -| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} -| | ... | ${table_index} | ip_version=${ip_version} -| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip4} -| | ... | ${dut1_to_tg_ip4} | interval=5 -| | ... | mtu=1450 | interval=5 -| | And Set IPFIX stream | ${dut1_node} | ${1} -| | And Assign classify table to exporter | ${dut1_node} | ${table_index} -| | ... | ${ip_version} -| | Then Send session sweep and verify IPFIX | ${tg_node} | ${dut1_node} -| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} -| | ... | ${sessions} | timeout=10 | count=3 - -# TODO: DUT reports packet flow when ACL is configured with wildcards diff --git a/tests/func/telemetry/span/eth2p-ethip4-ip4base-spanrx-func.robot b/tests/func/telemetry/span/eth2p-ethip4-ip4base-spanrx-func.robot deleted file mode 100644 index b7929493a5..0000000000 --- a/tests/func/telemetry/span/eth2p-ethip4-ip4base-spanrx-func.robot +++ /dev/null @@ -1,79 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/telemetry/span.robot -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPv4Util -| Library | resources.libraries.python.IPv4Setup -| Library | resources.libraries.python.telemetry.SPAN -| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *SPAN test suite* -| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two -| ... | links between nodes. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with SPAN mirroring from -| ... | the first DUT1-TG interface to the second one. -| ... | *[Ver] TG verification:* Test ARP or ICMP packets are sent by TG -| ... | on first link to DUT1; On receipt through second link TG verifies -| ... | the copy of packet sent and the copy of DUT's reply packet. -| ... | *[Ref] Applicable standard specifications: None?* - -*** Variables *** -| ${tg_to_dut_if1_ip4}= | 192.168.1.1 -| ${dut_to_tg_if1_ip4}= | 192.168.1.2 -| ${prefix}= | 24 - -*** Test Cases *** -| TC01: DUT mirrors L2 packets from one interface to another -| | [Documentation] -| | ... | [Top] TG=DUT1 -| | ... | [Cfg] On DUT1 configure IPv4 address and set SPAN mirroring\ -| | ... | from one DUT interface to the other. -| | ... | [Ver] Make TG send an ARP packet to DUT through one interface,\ -| | ... | then receive a copy of sent packet and of DUT's ARP reply\ -| | ... | on the second interface. -| | Given Configure path in 2-node circular topology | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And Set interface Address | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${dut_to_tg_if1_ip4} | ${prefix} -| | And Set SPAN Mirroring | ${dut_node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} -| | Then Send Packet And Check Received Copies | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${dut_to_tg__if1_mac} | ${tg_to_dut_if2} -| | ... | ${tg_to_dut_if1_ip4} | ${dut_to_tg_if1_ip4} | ARP - -| TC02: DUT mirrors IPv4 packets from one interface to another -| | [Documentation] -| | ... | [Top] TG=DUT1 -| | ... | [Cfg] On DUT1 configure IPv4 address, add ARP entry for one TG \ -| | ... | interface and set SPAN mirroring from one DUT interface to the other. -| | ... | [Ver] Make TG send an ICMP packet to DUT through one interface,\ -| | ... | then receive a copy of sent packet and of DUT's ICMP reply\ -| | ... | on the other interface. -| | Given Configure path in 2-node circular topology | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And Set interface Address | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${dut_to_tg_if1_ip4} | ${prefix} -| | And Add ARP on DUT | ${dut_node} | ${dut_to_tg_if1} | ${tg_to_dut_if1_ip4} -| | ... | ${tg_to_dut_if1_mac} -| | And Set SPAN Mirroring | ${dut_node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} -| | Then Send Packet And Check Received Copies | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${dut_to_tg__if1_mac} | ${tg_to_dut_if2} -| | ... | ${tg_to_dut_if1_ip4} | ${dut_to_tg_if1_ip4} | ICMP diff --git a/tests/func/telemetry/span/eth2p-ethip6-ip6base-spanrx-func.robot b/tests/func/telemetry/span/eth2p-ethip6-ip6base-spanrx-func.robot deleted file mode 100644 index 1d98bdf722..0000000000 --- a/tests/func/telemetry/span/eth2p-ethip6-ip6base-spanrx-func.robot +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/telemetry/span.robot -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPv6Util -| Library | resources.libraries.python.IPv6Setup -| Library | resources.libraries.python.Routing -| Library | resources.libraries.python.telemetry.SPAN -| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *SPAN test suite* -| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two -| ... | links between nodes. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with SPAN mirroring from -| ... | the first DUT1-TG interface to the second one. -| ... | *[Ver] TG verification:* Test ARP or ICMP packets are sent by TG -| ... | on first link to DUT1; On receipt through second link TG verifies -| ... | the copy of packet sent and the copy of DUT's reply packet. -| ... | *[Ref] Applicable standard specifications: None?* - -*** Variables *** -| ${tg_to_dut_if1_ip6}= | 11::1 -| ${dut_to_tg_if1_ip6}= | 10::1 -| ${prefix}= | 24 - -*** Test Cases *** -| TC01: DUT mirrors IPv6 packets from one interface to another -| | [Documentation] -| | ... | [Top] TG=DUT1 -| | ... | [Cfg] On DUT1 configure IPv6 address, add ARP entry for one TG \ -| | ... | interface and set SPAN mirroring from one DUT interface to the other. -| | ... | [Ver] Make TG send an ICMP packet to DUT through one interface,\ -| | ... | then receive a copy of sent packet and of DUT's ICMP reply\ -| | ... | on the other interface. -| | Given Configure path in 2-node circular topology | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And Vpp Ra Suppress Link Layer | ${dut_node} | ${dut_to_tg_if1} -| | And Vpp Set If Ipv6 Addr | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${dut_to_tg_if1_ip6} | ${prefix} -| | And Add Ip Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${tg_to_dut_if1_ip6} -| | ... | ${tg_to_dut_if1_mac} -| | And Vpp Route Add | ${dut_node} | ${tg_to_dut_if1_ip6} | ${prefix} -| | ... | ${dut_to_tg_if1_ip6} | ${dut_to_tg_if1} -| | And Set SPAN Mirroring | ${dut_node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} -| | Then Send Packet And Check Received Copies | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${dut_to_tg__if1_mac} | ${tg_to_dut_if2} -| | ... | ${tg_to_dut_if1_ip6} | ${dut_to_tg_if1_ip6} | ICMPv6 diff --git a/tests/func/vhost/eth2p-ethip4-l2bdbase-vhost-client-reconnect-2vm-func.robot b/tests/func/vhost/eth2p-ethip4-l2bdbase-vhost-client-reconnect-2vm-func.robot deleted file mode 100644 index 958acc2c5d..0000000000 --- a/tests/func/vhost/eth2p-ethip4-l2bdbase-vhost-client-reconnect-2vm-func.robot +++ /dev/null @@ -1,231 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/vxlan.robot -| Library | resources.libraries.python.Trace -| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO | VPP_VM_ENV -| Test Setup | Set up functional test -| Test Teardown | Run Keywords -| ... | resources.libraries.python.QemuUtils.Qemu Kill All | ${dut_node} | AND -| ... | Tear down functional test -| Documentation | *Vhost-User Interface Traffic Tests* -| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links -| ... | between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-VXLAN-ETH-IP on TG-DUT link. -| ... | ETH-IP on VirtualEthernet-VM interface. -| ... | *[Cfg] DUT configuration:* On DUT is running 2 VM with 2 vhost-user -| ... | interface on each VM. DUT is configured with VXLAN and vhost-user -| ... | interfaces in bridge-domain (L2BD). -| ... | *[Cfg] VM configuration:* VM has both vhost-user interfaces added into -| ... | Linux Bridge. -| ... | *[Ver] TG verification:* -| ... | VXLAN packet is send to DUT where is decapsulated and send bridged to -| ... | vhost-user inteface. VM forwards frame to its second interface and VPP -| ... | encapsulates it to another VXLAN tunnel. Packets -| ... | are sent and received by TG on link to DUT. - -*** Variables *** -| ${tg_if1_ip}= | 192.168.0.1 -| ${dut_if1_ip}= | 192.168.0.2 -| ${prefix_length}= | ${24} - -| ${sock_vm1_1}= | /tmp/sock1 -| ${sock_vm1_2}= | /tmp/sock2 -| ${sock_vm2_1}= | /tmp/sock3 -| ${sock_vm2_2}= | /tmp/sock4 - -*** Test Cases *** -| TC01: Qemu reconnects to VPPs vhost-user when Qemu is killed and restarted -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And Set Interface Address | ${dut_node} | ${dut_to_tg_if1} | ${dut_if1_ip} -| | ... | ${prefix_length} -| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${tg_if1_ip} -| | ... | ${tg_to_dut_if1_mac} -| | ${vxlan1}= | And Create VXLAN interface | ${dut_node} | ${101} -| | ... | ${dut_if1_ip} | ${tg_if1_ip} -| | ${vxlan2}= | And Create VXLAN interface | ${dut_node} | ${102} -| | ... | ${dut_if1_ip} | ${tg_if1_ip} -| | ${vxlan3}= | And Create VXLAN interface | ${dut_node} | ${103} -| | ... | ${dut_if1_ip} | ${tg_if1_ip} -| | ${vxlan4}= | And Create VXLAN interface | ${dut_node} | ${104} -| | ... | ${dut_if1_ip} | ${tg_if1_ip} -| | And Set Interface State | ${dut_node} | ${vxlan1} | up -| | And Set Interface State | ${dut_node} | ${vxlan2} | up -| | And Set Interface State | ${dut_node} | ${vxlan3} | up -| | And Set Interface State | ${dut_node} | ${vxlan4} | up -| | ${vhost_if1}= | And Vpp Create Vhost User Interface -| | ... | ${dut_node} | ${sock_vm1_1} -| | ${vhost_if2}= | And Vpp Create Vhost User Interface -| | ... | ${dut_node} | ${sock_vm1_2} -| | ${vhost_if3}= | And Vpp Create Vhost User Interface -| | ... | ${dut_node} | ${sock_vm2_1} -| | ${vhost_if4}= | And Vpp Create Vhost User Interface -| | ... | ${dut_node} | ${sock_vm2_2} -| | And Set Interface State | ${dut_node} | ${vhost_if1} | up -| | And Set Interface State | ${dut_node} | ${vhost_if2} | up -| | And Set Interface State | ${dut_node} | ${vhost_if3} | up -| | And Set Interface State | ${dut_node} | ${vhost_if4} | up -| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${101} | ${vxlan1} -| | ... | ${vhost_if1} -| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${102} | ${vxlan2} -| | ... | ${vhost_if2} -| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${103} | ${vxlan3} -| | ... | ${vhost_if3} -| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${104} | ${vxlan4} -| | ... | ${vhost_if4} -| | And Configure QEMU vhost and run it VM | ${dut_node} | ${sock_vm1_1} -| | ... | ${sock_vm1_2} | ${1} -| | And Configure QEMU vhost and run it VM | ${dut_node} | ${sock_vm2_1} -| | ... | ${sock_vm2_2} | ${2} -| | And Check traffic through VM -| | When Run keyword | qemu-1.Qemu Kill -| | ${vm1}= | And Run Keyword | qemu-1.Qemu Start -| | ${vhost_int_1}= | And Get Vhost User If Name By Sock | ${vm1} -| | ... | ${sock_vm1_1} -| | ${vhost_int_2}= | And Get Vhost User If Name By Sock | ${vm1} -| | ... | ${sock_vm1_2} -| | And Linux Add Bridge | ${vm1} | br0 | ${vhost_int_1} | ${vhost_int_2} -| | And Set Interface State | ${vm1} | ${vhost_int_1} | up | if_type=name -| | And Set Interface State | ${vm1} | ${vhost_int_2} | up | if_type=name -| | Then Check traffic through VM - - -| TC02: VPP reconnects to Qemu vhost-user when Restart VPP and reconfigured -| | [Tags] | EXPECTED_FAILING -| | [Documentation] -| | ... | *Failing:* Qemu doesn't support reconnect prior to version 2.7. -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | And Set Interface Address | ${dut_node} | ${dut_to_tg_if1} | ${dut_if1_ip} -| | ... | ${prefix_length} -| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${tg_if1_ip} -| | ... | ${tg_to_dut_if1_mac} -| | ${vxlan1}= | And Create VXLAN interface | ${dut_node} | ${101} -| | ... | ${dut_if1_ip} | ${tg_if1_ip} -| | ${vxlan2}= | And Create VXLAN interface | ${dut_node} | ${102} -| | ... | ${dut_if1_ip} | ${tg_if1_ip} -| | ${vxlan3}= | And Create VXLAN interface | ${dut_node} | ${103} -| | ... | ${dut_if1_ip} | ${tg_if1_ip} -| | ${vxlan4}= | And Create VXLAN interface | ${dut_node} | ${104} -| | ... | ${dut_if1_ip} | ${tg_if1_ip} -| | And Set Interface State | ${dut_node} | ${vxlan1} | up -| | And Set Interface State | ${dut_node} | ${vxlan2} | up -| | And Set Interface State | ${dut_node} | ${vxlan3} | up -| | And Set Interface State | ${dut_node} | ${vxlan4} | up -| | ${vhost_if1}= | And Vpp Create Vhost User Interface | ${dut_node} -| | ... | ${sock_vm1_1} -| | ${vhost_if2}= | And Vpp Create Vhost User Interface | ${dut_node} -| | ... | ${sock_vm1_2} -| | ${vhost_if3}= | And Vpp Create Vhost User Interface | ${dut_node} -| | ... | ${sock_vm2_1} -| | ${vhost_if4}= | And Vpp Create Vhost User Interface | ${dut_node} -| | ... | ${sock_vm2_2} -| | And Set Interface State | ${dut_node} | ${vhost_if1} | up -| | And Set Interface State | ${dut_node} | ${vhost_if2} | up -| | And Set Interface State | ${dut_node} | ${vhost_if3} | up -| | And Set Interface State | ${dut_node} | ${vhost_if4} | up -| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${101} | ${vxlan1} -| | ... | ${vhost_if1} -| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${102} | ${vxlan2} -| | ... | ${vhost_if2} -| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${103} | ${vxlan3} -| | ... | ${vhost_if3} -| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${104} | ${vxlan4} -| | ... | ${vhost_if4} -| | And Configure QEMU vhost and run it VM | ${dut_node} | ${sock_vm1_1} -| | ... | ${sock_vm1_2} | ${1} -| | And Configure QEMU vhost and run it VM | ${dut_node} | ${sock_vm2_1} -| | ... | ${sock_vm2_2} | ${2} -| | And Check traffic through VM -| | And Verify VPP PID in Teardown -| | When Setup All Duts | ${nodes} -| | And Save VPP PIDs -| | And Set interfaces in 2-node circular topology up -| | And Set Interface Address | ${dut_node} | ${dut_to_tg_if1} | ${dut_if1_ip} -| | ... | ${prefix_length} -| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${tg_if1_ip} -| | ... | ${tg_to_dut_if1_mac} -| | ${vxlan1}= | And Create VXLAN interface | ${dut_node} | ${101} -| | ... | ${dut_if1_ip} | ${tg_if1_ip} -| | ${vxlan2}= | And Create VXLAN interface | ${dut_node} | ${102} -| | ... | ${dut_if1_ip} | ${tg_if1_ip} -| | ${vxlan3}= | And Create VXLAN interface | ${dut_node} | ${103} -| | ... | ${dut_if1_ip} | ${tg_if1_ip} -| | ${vxlan4}= | And Create VXLAN interface | ${dut_node} | ${104} -| | ... | ${dut_if1_ip} | ${tg_if1_ip} -| | And Set Interface State | ${dut_node} | ${vxlan1} | up -| | And Set Interface State | ${dut_node} | ${vxlan2} | up -| | And Set Interface State | ${dut_node} | ${vxlan3} | up -| | And Set Interface State | ${dut_node} | ${vxlan4} | up -| | ${vhost_if1}= | And Vpp Create Vhost User Interface | ${dut_node} -| | ... | ${sock_vm1_1} -| | ${vhost_if2}= | And Vpp Create Vhost User Interface | ${dut_node} -| | ... | ${sock_vm1_2} -| | ${vhost_if3}= | And Vpp Create Vhost User Interface | ${dut_node} -| | ... | ${sock_vm2_1} -| | ${vhost_if4}= | And Vpp Create Vhost User Interface | ${dut_node} -| | ... | ${sock_vm2_2} -| | And Set Interface State | ${dut_node} | ${vhost_if1} | up -| | And Set Interface State | ${dut_node} | ${vhost_if2} | up -| | And Set Interface State | ${dut_node} | ${vhost_if3} | up -| | And Set Interface State | ${dut_node} | ${vhost_if4} | up -| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${101} | ${vxlan1} -| | ... | ${vhost_if1} -| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${102} | ${vxlan2} -| | ... | ${vhost_if2} -| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${103} | ${vxlan3} -| | ... | ${vhost_if3} -| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${104} | ${vxlan4} -| | ... | ${vhost_if4} -| | Then Check traffic through VM - - -*** Keywords *** -| Configure QEMU vhost and run it VM -| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${qemu_id} -| | Import Library | resources.libraries.python.QemuUtils | qemu_id=${qemu_id} -| | ... | WITH NAME | qemu-${qemu_id} -| | ${q_add_vhost}= | Replace Variables | qemu-${qemu_id}.Qemu Add Vhost User If -| | ${q_set_node}= | Replace Variables | qemu-${qemu_id}.Qemu Set Node -| | ${q_start}= | Replace Variables | qemu-${qemu_id}.Qemu Start -| | Run keyword | ${q_set_node} | ${dut_node} -| | Run keyword | ${q_add_vhost} | ${sock1} -| | Run keyword | ${q_add_vhost} | ${sock2} -| | ${vm}= | Run keyword | ${q_start} -| | ${vhost1}= | Get Vhost User If Name By Sock | ${vm} | ${sock1} -| | ${vhost2}= | Get Vhost User If Name By Sock | ${vm} | ${sock2} -| | Linux Add Bridge | ${vm} | br0 | ${vhost1} | ${vhost2} -| | Set Interface State | ${vm} | ${vhost1} | up | if_type=name -| | Set Interface State | ${vm} | ${vhost2} | up | if_type=name -| | Set Test Variable | ${qemu-${qemu_id}} | ${vm} - -| Check traffic through VM -| | [Documentation] | Send VXLAN traffic through both configured VMs. -| | Send VXLAN encapsulated packet and verify received packet | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} -| | ... | ${tg_if1_ip} | ${dut_if1_ip} | ${101} -| | ... | ${dut_if1_ip} | ${tg_if1_ip} | ${102} -| | Send VXLAN encapsulated packet and verify received packet | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} -| | ... | ${tg_if1_ip} | ${dut_if1_ip} | ${103} -| | ... | ${dut_if1_ip} | ${tg_if1_ip} | ${104} diff --git a/tests/func/vlan/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot b/tests/func/vlan/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot deleted file mode 100644 index 249e0dea33..0000000000 --- a/tests/func/vlan/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot +++ /dev/null @@ -1,221 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/tagging.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *L2BD with VLAN tag rewrite test cases - transalte-2-1* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-dot1ad-IPv4-ICMPv4 or -| ... | Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, Eth-dot1q-IPv4-ICMPv4 or -| ... | Eth-dot1q-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv4-ICMPv4 or Eth-IPv6-ICMPv6 -| ... | on TG-DUT2 for L2 switching of IPv4/IPv6. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with bridge domain (L2BD) -| ... | switching combined with MAC learning enabled and added VLAN -| ... | sub-interface with VLAN tag rewrite translate-2-1 method of interface -| ... | towards TG and interface towards DUT2. DUT2 is configured with L2 -| ... | bridge domain (L2BD) switching between VLAN sub-interface with VLAN tag -| ... | rewrite pop-1 method of interface towards DUT1 and interface towards TG. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are -| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; -| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, -| ... | dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. - -*** Variables *** -| ${bd_id1}= | 1 - -| ${subid}= | 10 - -| ${outer_vlan_id1}= | 110 -| ${outer_vlan_id2}= | 120 -| ${outer_vlan_wrong}= | 150 - -| ${inner_vlan_id1}= | 210 - -| ${src_ip6}= | 3ffe:63::1 -| ${dst_ip6}= | 3ffe:63::2 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2BD and VLAN translate-2-1 (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1, \ -| | ... | Eth-dot1q-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to -| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite -| | ... | translate-2-1 method; on DUT2 configure L2 bridge domain (L2BD) with -| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv4 Echo Req -| | ... | tagged with Dot1ad tags from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-1 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1ad -| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} - -| TC02: DUT1 and DUT2 with L2BD and VLAN translate-2-1 with wrong tag used (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1, \ -| | ... | Eth-dot1q-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to -| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite -| | ... | translate-2-1 method to set tag different from tag set on VLAN -| | ... | sub-interface of DUT2; on DUT2 configure L2 bridge domain (L2BD) with -| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv4 Echo Req -| | ... | tagged with Dot1ad tags from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is not received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-1 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} -| | ... | vlan2=${inner_vlan_id1} - - -| TC03: DUT1 and DUT2 with L2BD and VLAN translate-2-1 (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, \ -| | ... | Eth-dot1q-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to -| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite -| | ... | translate-2-1 method; on DUT2 configure L2 bridge domain (L2BD) with -| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv6 Echo Req -| | ... | tagged with Dot1ad tags from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-1 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip6} -| | ... | dst_ip=${dst_ip6} | encaps=Dot1ad | vlan1=${outer_vlan_id1} -| | ... | vlan2=${inner_vlan_id1} - -| TC04: DUT1 and DUT2 with L2BD and VLAN translate-2-1 with wrong tag used (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, \ -| | ... | Eth-dot1q-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to -| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite -| | ... | translate-2-1 method to set tag different from tag set on VLAN -| | ... | sub-interface of DUT2; on DUT2 configure L2 bridge domain (L2BD) with -| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv6 Echo Req -| | ... | tagged with Dot1ad tags from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is not received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-1 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1ad -| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} diff --git a/tests/func/vlan/eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot b/tests/func/vlan/eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot deleted file mode 100644 index f3643be8bb..0000000000 --- a/tests/func/vlan/eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot +++ /dev/null @@ -1,189 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/tagging.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *L2XC with VLAN tag rewrite test cases - translate-2-1* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-dot1ad-IPv4-ICMPv4 or -| ... | Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, Eth-dot1q-IPv4-ICMPv4 or -| ... | Eth-dot1aq-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2 -| ... | for L2 switching of IPv4/IPv6. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect -| ... | (L2XC) switching between VLAN sub-interface with VLAN tag rewrite -| ... | translate-2-1 method of interface towards TG and interface towards DUT2. -| ... | DUT2 is configured configured with L2 cross-connect (L2XC) switching -| ... | between VLAN sub-interface with VLAN tag rewrite pop-1 method -| ... | of interface towards DUT1 and interface towards TG. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are -| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; -| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, -| ... | dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. - -*** Variables *** -| ${subid}= | 10 - -| ${outer_vlan_id1}= | 110 -| ${outer_vlan_id2}= | 120 -| ${outer_vlan_wrong}= | 150 - -| ${inner_vlan_id1}= | 210 - -| ${src_ip}= | 3ffe:63::1 -| ${dst_ip}= | 3ffe:63::2 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2XC and VLAN translate-2-1 (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1, \ -| | ... | Eth-dot1q-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to -| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite -| | ... | translate-2-1 method; on DUT2 configure L2 cross-connect (L2XC) with -| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv4 Echo Req -| | ... | tagged with Dot1ad tags from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-1 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1ad -| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} - -| TC02: DUT1 and DUT2 with L2XC and VLAN translate-2-1 with wrong tag used (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1, \ -| | ... | Eth-dot1q-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to -| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite -| | ... | translate-2-1 method to set tag different from tag set on VLAN -| | ... | sub-interface of DUT2; on DUT2 configure L2 cross-connect (L2XC) with -| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv4 Echo Req -| | ... | tagged with Dot1ad tags from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is not received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-1 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} -| | ... | vlan2=${inner_vlan_id1} - -| TC03: DUT1 and DUT2 with L2XC and VLAN translate-2-1 (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, \ -| | ... | Eth-dot1q-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to -| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite -| | ... | translate-2-1 method; on DUT2 configure L2 cross-connect (L2XC) with -| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv6 Echo Req -| | ... | tagegd with Dot1ad tags from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-1 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip} -| | ... | dst_ip=${dst_ip} | encaps=Dot1ad | vlan1=${outer_vlan_id1} -| | ... | vlan2=${inner_vlan_id1} - -| TC04: DUT1 and DUT2 with L2XC and VLAN translate-2-1 with wrong tag used (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, \ -| | ... | Eth-dot1q-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to -| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite -| | ... | translate-2-1 method to set tag different from tag set on VLAN -| | ... | sub-interface of DUT2; on DUT2 configure L2 cross-connect (L2XC) with -| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv6 Echo Req -| | ... | tagegd with Dot1ad tags from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is not received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-1 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1ad -| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} diff --git a/tests/func/vlan/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot b/tests/func/vlan/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot deleted file mode 100644 index 6efc508423..0000000000 --- a/tests/func/vlan/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot +++ /dev/null @@ -1,405 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/tagging.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *L2BD with VLAN tag rewrite test cases - translate-2-2* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-dot1ad-IPv4-ICMPv4 or -| ... | Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and DUT1-DUT2, Eth-IPv4-ICMPv4 or -| ... | Eth-IPv6-ICMPv6 on TG-DUT2 for L2 switching of IPv4/IPv6. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with bridge domain (L2BD) -| ... | switching combined with MAC learning enabled and added VLAN -| ... | sub-interface with VLAN tag rewrite translate-2-2 method of interface -| ... | towards TG and interface towards DUT2. DUT2 is configured with L2 -| ... | bridge domain (L2BD) switching between VLAN sub-interface with VLAN tag -| ... | rewrite pop-2 method of interface towards DUT1 and interface towards TG. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are -| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; -| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, -| ... | dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. - -*** Variables *** -| ${bd_id1}= | 1 - -| ${subid}= | 10 - -| ${outer_vlan_id1}= | 110 -| ${outer_vlan_id2}= | 120 -| ${outer_vlan_wrong}= | 150 - -| ${inner_vlan_id1}= | 210 -| ${inner_vlan_id2}= | 220 -| ${inner_vlan_wrong}= | 250 - -| ${src_ip6}= | 3ffe:63::1 -| ${dst_ip6}= | 3ffe:63::2 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2BD and VLAN translate-2-2 switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ -| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad -| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method; -| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG and -| | ... | one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-2 -| | ... | tagged with Dot1ad tags from one of its interfaces to another one -| | ... | method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; verify -| | ... | that packet is received. [Ref] IEEE 802.1ad -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1ad -| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} - -| TC02: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong inner tag used (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ -| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad -| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to -| | ... | set inner tag different from inner tag set on Dot1ad sub-interface of -| | ... | DUT2; on DUT2 configure L2 bridge domain (L2BD) with one interface to -| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite -| | ... | pop-2 tagged with Dot1ad tags from one of its interfaces to another -| | ... | one method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; -| | ... | verify that packet is not received. [Ref] IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} -| | ... | vlan2=${inner_vlan_id1} - -| TC03: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong outer tag used (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ -| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad -| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to -| | ... | set outer tag different from outer tag set on Dot1ad sub-interface of -| | ... | DUT2; on DUT2 configure L2 bridge domain (L2BD) with one interface to -| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite -| | ... | pop-2 tagged with Dot1ad tags from one of its interfaces to another -| | ... | one method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; -| | ... | verify that packet is not received. [Ref] IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} -| | ... | vlan2=${inner_vlan_id1} - -| TC04: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong outer and inner tags used (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ -| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad -| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to -| | ... | set tags different from tags set on Dot1ad sub-interface of DUT2; -| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG -| | ... | and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-2 -| | ... | tagged with Dot1ad tags from one of its interfaces to another one -| | ... | method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; verify -| | ... | that packet is not received. [Ref] IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} -| | ... | vlan2=${inner_vlan_id1} - -| TC05: DUT1 and DUT2 with L2BD and VLAN translate-2-2 switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ -| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad -| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method; -| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG and -| | ... | one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1 -| | ... | tagged with Dot1ad tags from one of its interfaces to another one -| | ... | method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; verify -| | ... | that packet is received. [Ref] IEEE 802.1ad -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip6} -| | ... | dst_ip=${dst_ip6} | encaps=Dot1ad | vlan1=${outer_vlan_id1} -| | ... | vlan2=${inner_vlan_id1} - -| TC06: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong inner tag used (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ -| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad -| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to -| | ... | set inner tag different from inner tag set on Dot1ad sub-interface of -| | ... | DUT2; on DUT2 configure L2 bridge domain (L2BD) with one interface to -| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite -| | ... | pop-1 tagged with Dot1ad tags from one of its interfaces to another -| | ... | one method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; -| | ... | verify that packet is not received. [Ref] IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1ad -| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} - -| TC07: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong outer tag used (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ -| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad -| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to -| | ... | set outer tag different from outer tag set on Dot1ad sub-interface of -| | ... | DUT2; on DUT2 configure L2 bridge domain (L2BD) with one interface to -| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite -| | ... | pop-1 tagged with Dot1ad tags from one of its interfaces to another -| | ... | one method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; -| | ... | verify that packet is not received. [Ref] IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1ad -| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} - -| TC08: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong outer and inner tags used (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ -| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad -| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to -| | ... | set tags different from tags set on Dot1ad sub-interface of DUT2; -| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG -| | ... | and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1 -| | ... | tagged with Dot1ad tags from one of its interfaces to another one -| | ... | method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; verify -| | ... | that packet is not received. [Ref] IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1ad -| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} diff --git a/tests/func/vlan/eth2p-dot1ad-l2xcbase-func.robot b/tests/func/vlan/eth2p-dot1ad-l2xcbase-func.robot deleted file mode 100644 index 488f9fa822..0000000000 --- a/tests/func/vlan/eth2p-dot1ad-l2xcbase-func.robot +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/tagging.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *L2 cross-connect with QinQ test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology with -| ... | single links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, -| ... | Eth-IPv4-ICMPv4 on TG-DUTn for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | cross-connect (L2XC) switching with 802.1ad QinQ VLAN tag push and pop. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are -| ... | sent in both directions by TG on links to DUT1 and DUT2; on receive TG -| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr and -| ... | MAC addresses. -| ... | *[Ref] Applicable standard specifications:* IEEE 802.1ad. - -*** Variables *** -| ${subid}= | 10 -| ${outer_vlan_id}= | 100 -| ${inner_vlan_id}= | 200 -| ${type_subif}= | two_tags -| ${tag_rewrite_method}= | pop-2 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2XC and two VLAN push-pop switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on \ -| | ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 and DUT2 -| | ... | configure L2 cross-connect (L2XC), each with one interface to TG -| | ... | and one Ethernet interface towards the other DUT; each DUT -| | ... | pushes two VLAN tags on packets received from local TG, and -| | ... | popping two VLAN tags on packets transmitted to local TG. [Ver] -| | ... | Make TG send ICMPv4 Echo Req in both directions between two of -| | ... | its interfaces to be switched by DUT1 and DUT2; verify all -| | ... | packets are received. [Ref] IEEE 802.1ad. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1_node} | ${subif_index_1} | ${dut2_node} | ${subif_index_2} -| | ... | ${tag_rewrite_method} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subif_index_1} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${subif_index_2} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/func/vlan/eth2p-dot1ad-l2xcbase-vlantrans22-func.robot b/tests/func/vlan/eth2p-dot1ad-l2xcbase-vlantrans22-func.robot deleted file mode 100644 index c646cbcd03..0000000000 --- a/tests/func/vlan/eth2p-dot1ad-l2xcbase-vlantrans22-func.robot +++ /dev/null @@ -1,346 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/tagging.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *L2XC with VLAN tag rewrite test cases - translate-2-2* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-dot1ad-IPv4-ICMPv4 or -| ... | Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and DUT1-DUT2, Eth-IPv4-ICMPv4 or -| ... | Eth-IPv6-ICMPv6 on TG-DUT2 for L2 switching of IPv4/IPv6. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect -| ... | (L2XC) switching between VLAN sub-interface with VLAN tag rewrite -| ... | translate-2-2 method of interface towards TG and interface towards DUT2. -| ... | DUT2 is configured configured with L2 cross-connect (L2XC) switching -| ... | between VLAN sub-interface with VLAN tag rewrite pop-2 method -| ... | of interface towards DUT1 and interface towards TG. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are -| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; -| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, -| ... | dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. - -*** Variables *** -| ${subid}= | 10 - -| ${outer_vlan_id1}= | 110 -| ${outer_vlan_id2}= | 120 -| ${outer_vlan_wrong}= | 150 - -| ${inner_vlan_id1}= | 210 -| ${inner_vlan_id2}= | 220 -| ${inner_vlan_wrong}= | 250 - -| ${src_ip}= | 3ffe:63::1 -| ${dst_ip}= | 3ffe:63::2 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2XC and VLAN translate-2-2 switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ -| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad -| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method; -| | ... | on DUT2 configure L2 cross-connect (L2XC) with one interface to TG and -| | ... | one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1 -| | ... | tagged with Dot1ad tags from one of its interfaces to another one -| | ... | method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; verify -| | ... | that packet is received. [Ref] IEEE 802.1ad -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1ad -| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} - -| TC02: DUT1 and DUT2 with L2XC and VLAN translate-2-2 with wrong inner tag used (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ -| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad -| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to -| | ... | set inner tag different from inner tag set on Dot1ad sub-interface of -| | ... | DUT2; on DUT2 configure L2 cross-connect (L2XC) with one interface to -| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite -| | ... | pop-1 tagged with Dot1ad tags from one of its interfaces to another one -| | ... | method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; verify -| | ... | that packet is not received. [Ref] IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} -| | ... | vlan2=${inner_vlan_id1} - -| TC03: DUT1 and DUT2 with L2XC and VLAN translate-2-2 with wrong outer tag used (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ -| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad -| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to -| | ... | set outer tag different from outer tag set on Dot1ad sub-interface of -| | ... | DUT2; on DUT2 configure L2 cross-connect (L2XC) with one interface to -| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite -| | ... | pop-1 tagged with Dot1ad tags from one of its interfaces to another -| | ... | one method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; -| | ... | verify that packet is not received. [Ref] IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} -| | ... | vlan2=${inner_vlan_id1} - -| TC04: DUT1 and DUT2 with L2XC and VLAN translate-2-2 with wrong outer and inner tags used (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ -| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad -| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to -| | ... | set tags different from tags set on Dot1ad sub-interface of DUT2; -| | ... | on DUT2 configure L2 cross-connect (L2XC) with one interface to TG -| | ... | and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1 -| | ... | tagged with Dot1ad tags from one of its interfaces to another one -| | ... | method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; verify -| | ... | that packet is not received. [Ref] IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} -| | ... | vlan2=${inner_vlan_id1} - -| TC05: DUT1 and DUT2 with L2XC and VLAN translate-2-2 switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ -| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad -| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method; -| | ... | on DUT2 configure L2 cross-connect (L2XC) with one interface to TG and -| | ... | one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1 -| | ... | tagegd with Dot1ad tags from one of its interfaces to another one -| | ... | method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; verify -| | ... | that packet is received. [Ref] IEEE 802.1ad -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip} -| | ... | dst_ip=${dst_ip} | encaps=Dot1ad | vlan1=${outer_vlan_id1} -| | ... | vlan2=${inner_vlan_id1} - -| TC06: DUT1 and DUT2 with L2XC and VLAN translate-2-2 with wrong inner tag used (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ -| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad -| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to -| | ... | set inner tag different from inner tag set on Dot1ad sub-interface of -| | ... | DUT2; on DUT2 configure L2 cross-connect (L2XC) with one interface to -| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite -| | ... | pop-1 tagegd with Dot1ad tags from one of its interfaces to another one -| | ... | method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; verify -| | ... | that packet is not received. [Ref] IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1ad -| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} - -| TC07: DUT1 and DUT2 with L2XC and VLAN translate-2-2 with wrong outer tag used (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ -| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad -| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to -| | ... | set outer tag different from outer tag set on Dot1ad sub-interface of -| | ... | DUT2; on DUT2 configure L2 cross-connect (L2XC) with one interface to -| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite -| | ... | pop-1 tagegd with Dot1ad tags from one of its interfaces to another -| | ... | one method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; -| | ... | verify that packet is not received. [Ref] IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1ad -| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} - -| TC08: DUT1 and DUT2 with L2XC and VLAN translate-2-2 with wrong outer and inner tags used (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ -| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad -| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to -| | ... | set tags different from tags set on Dot1ad sub-interface of DUT2; -| | ... | on DUT2 configure L2 cross-connect (L2XC) with one interface to TG -| | ... | and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1 -| | ... | tagegd with Dot1ad tags from one of its interfaces to another one -| | ... | method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; verify -| | ... | that packet is not received. [Ref] IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1ad -| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} diff --git a/tests/func/vlan/eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot b/tests/func/vlan/eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot deleted file mode 100644 index b5fbb41138..0000000000 --- a/tests/func/vlan/eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot +++ /dev/null @@ -1,394 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/tagging.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *L2BD with VLAN tag rewrite test cases - translate-1-2* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-dot1q-IPv4-ICMPv4 or -| ... | Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, Eth-dot1ad-IPv4-ICMPv4 or -| ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv4-ICMPv4 or Eth-IPv6-ICMPv6 -| ... | on TG-DUT2 for L2 switching of IPv4/IPv6. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with bridge domain (L2BD) -| ... | switching combined with MAC learning enabled and added VLAN -| ... | sub-interface with VLAN tag rewrite translate-1-2 method of interface -| ... | towards TG and interface towards DUT2. DUT2 is configured with L2 -| ... | bridge domain (L2BD) switching between VLAN sub-interface with VLAN tag -| ... | rewrite pop-2 method of interface towards DUT1 and interface towards TG. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are -| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; -| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, -| ... | dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. - -*** Variables *** -| ${bd_id1}= | 1 - -| ${subid}= | 10 - -| ${outer_vlan_id1}= | 110 -| ${outer_vlan_id2}= | 120 -| ${outer_vlan_wrong}= | 150 - -| ${inner_vlan_id1}= | 210 -| ${inner_vlan_id2}= | 220 -| ${inner_vlan_wrong}= | 250 - -| ${src_ip6}= | 3ffe:63::1 -| ${dst_ip6}= | 3ffe:63::2 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2BD and VLAN translate-1-2 (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ -| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to -| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | translate-1-2 method; on DUT2 configure L2 bridge domain (L2BD) with -| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv4 Echo Req -| | ... | tagged with one Dot1q tag from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id1} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1q -| | ... | vlan1=${outer_vlan_id1} - -| TC02: DUT1 and DUT2 with L2BD and VLAN translate-1-2 with wrong inner tag used (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ -| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to -| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | translate-1-2 method to set inner tag different from inner tag set on -| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 bridge domain with -| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv4 Echo Req -| | ... | tagged with one Dot1q tag from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is not received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} - -| TC03: DUT1 and DUT2 with L2BD and VLAN translate-1-2 with wrong outer tag used (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ -| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to -| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | translate-1-2 method to set outer tag different from outer tag set on -| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 bridge domain with -| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv4 Echo Req -| | ... | tagged with one Dot1q tag from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is not received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id1} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} - -| TC04: DUT1 and DUT2 with L2BD and VLAN translate-1-2 with wrong outer and inner tag used (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ -| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to -| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | translate-1-2 method to set outer and inner tags different from tags -| | ... | set on Dot1ad sub-interface of DUT2; on DUT2 configure L2 -| | ... | bridge domain with one interface to TG and one Dot1ad sub-interface -| | ... | towards DUT1 with VLAN tag rewrite pop-2 method. [Ver] Make TG send -| | ... | ICMPv4 Echo Req tagged with one Dot1q tag from one of its interfaces -| | ... | to another one via DUT1 and DUT2; verify that packet is not received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} - -| TC05: DUT1 and DUT2 with L2BD and VLAN translate-1-2 (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ -| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to -| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | translate-1-2 method; on DUT2 configure L2 bridge domain (L2BD) with -| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv6 Echo Req -| | ... | tagged with one Dot1q tag from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip6} -| | ... | dst_ip=${dst_ip6} | encaps=Dot1q | vlan1=${outer_vlan_id1} - -| TC06: DUT1 and DUT2 with L2BD and VLAN translate-1-2 with wrong inner tag used (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ -| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to -| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | translate-1-2 method to set inner tag different from inner tag set on -| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 bridge domain with -| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv6 Echo Req -| | ... | tagged with one Dot1q tag from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is not received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1q -| | ... | vlan1=${outer_vlan_id1} - -| TC07: DUT1 and DUT2 with L2BD and VLAN translate-1-2 with wrong outer tag used (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ -| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to -| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | translate-1-2 method to set outer tag different from outer tag set on -| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 bridge domain with -| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv6 Echo Req -| | ... | tagged with one Dot1q tag from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is not received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1q -| | ... | vlan1=${outer_vlan_id1} - -| TC08: DUT1 and DUT2 with L2BD and VLAN translate-1-2 with wrong outer and inner tag used (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ -| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to -| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | translate-1-2 method to set outer and inner tags different from tags -| | ... | set on Dot1ad sub-interface of DUT2; on DUT2 configure L2 -| | ... | bridge domain with one interface to TG and one Dot1ad sub-interface -| | ... | towards DUT1 with VLAN tag rewrite pop-2 method. [Ver] Make TG send -| | ... | ICMPv6 Echo Req tagged with one Dot1q tag from one of its interfaces -| | ... | to another one via DUT1 and DUT2; verify that packet is not received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1q -| | ... | vlan1=${outer_vlan_id1} diff --git a/tests/func/vlan/eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot b/tests/func/vlan/eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot deleted file mode 100644 index bd1cebfd1e..0000000000 --- a/tests/func/vlan/eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot +++ /dev/null @@ -1,335 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/tagging.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *L2XC with VLAN tag rewrite test cases - translate-1-2* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-dot1q-IPv4-ICMPv4 or -| ... | Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, Eth-dot1ad-IPv4-ICMPv4 or -| ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv4-ICMPv4 or Eth-IPv6-ICMPv6 -| ... | on TG-DUT2 for L2 switching of IPv4/IPv6. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect -| ... | (L2XC) switching between VLAN sub-interface with VLAN tag rewrite -| ... | translate-1-2 method of interface towards TG and interface towards DUT2. -| ... | DUT2 is configured configured with L2 cross-connect (L2XC) switching -| ... | between VLAN sub-interface with VLAN tag rewrite pop-2 method -| ... | of interface towards DUT1 and interface towards TG. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are -| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; -| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, -| ... | dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. - -*** Variables *** -| ${subid}= | 10 - -| ${outer_vlan_id1}= | 110 -| ${outer_vlan_id2}= | 120 -| ${outer_vlan_wrong}= | 150 - -| ${inner_vlan_id1}= | 210 -| ${inner_vlan_id2}= | 220 -| ${inner_vlan_wrong}= | 250 - -| ${src_ip}= | 3ffe:63::1 -| ${dst_ip}= | 3ffe:63::2 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2XC and VLAN translate-1-2 (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ -| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to -| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | translate-1-2 method; on DUT2 configure L2 cross-connect (L2XC) with -| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv4 Echo Req -| | ... | tagged with one Dot1q tag from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id1} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1q -| | ... | vlan1=${outer_vlan_id1} - -| TC02: DUT1 and DUT2 with L2XC and VLAN translate-1-2 with wrong inner tag used (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ -| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to -| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | translate-1-2 method to set inner tag different from inner tag set on -| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 cross-connect with -| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv4 Echo Req -| | ... | tagged with one Dot1q tag from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is not received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} - -| TC03: DUT1 and DUT2 with L2XC and VLAN translate-1-2 with wrong outer tag used (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ -| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to -| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | translate-1-2 method to set outer tag different from outer tag set on -| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 cross-connect with -| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv4 Echo Req -| | ... | tagged with one Dot1q tag from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is not received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id1} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} - -| TC04: DUT1 and DUT2 with L2XC and VLAN translate-1-2 with wrong outer and inner tag used (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ -| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to -| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | translate-1-2 method to set outer and inner tags different from tags -| | ... | set on Dot1ad sub-interface of DUT2; on DUT2 configure L2 -| | ... | cross-connect with one interface to TG and one Dot1ad sub-interface -| | ... | towards DUT1 with VLAN tag rewrite pop-2 method. [Ver] Make TG send -| | ... | ICMPv4 Echo Req tagged with one Dot1q tag from one of its interfaces -| | ... | to another one via DUT1 and DUT2; verify that packet is not received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} - -| TC05: DUT1 and DUT2 with L2XC and VLAN translate-1-2 (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ -| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to -| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | translate-1-2 method; on DUT2 configure L2 cross-connect (L2XC) with -| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv6 Echo Req -| | ... | tagegd with one Dot1q tag from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip} -| | ... | dst_ip=${dst_ip} | encaps=Dot1q | vlan1=${outer_vlan_id1} - -| TC06: DUT1 and DUT2 with L2XC and VLAN translate-1-2 with wrong inner tag used (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ -| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to -| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | translate-1-2 method to set inner tag different from inner tag set on -| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 cross-connect with -| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv6 Echo Req -| | ... | tagegd with one Dot1q tag from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is not received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1q -| | ... | vlan1=${outer_vlan_id1} - -| TC07: DUT1 and DUT2 with L2XC and VLAN translate-1-2 with wrong outer tag used (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ -| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to -| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | translate-1-2 method to set outer tag different from outer tag set on -| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 cross-connect with -| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with -| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv6 Echo Req -| | ... | tagegd with one Dot1q tag from one of its interfaces to another one -| | ... | via DUT1 and DUT2; verify that packet is not received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1q -| | ... | vlan1=${outer_vlan_id1} - -| TC08: DUT1 and DUT2 with L2XC and VLAN translate-1-2 with wrong outer and inner tag used (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ -| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. -| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to -| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | translate-1-2 method to set outer and inner tags different from tags -| | ... | set on Dot1ad sub-interface of DUT2; on DUT2 configure L2 -| | ... | cross-connect with one interface to TG and one Dot1ad sub-interface -| | ... | towards DUT1 with VLAN tag rewrite pop-2 method. [Ver] Make TG send -| | ... | ICMPv6 Echo Req tagegd with one Dot1q tag from one of its interfaces -| | ... | to another one via DUT1 and DUT2; verify that packet is not received. -| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} -| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} -| | ... | type_subif=two_tags dot1ad -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} -| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-2 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1q -| | ... | vlan1=${outer_vlan_id1} diff --git a/tests/func/vlan/eth2p-dot1q-ip4base-func.robot b/tests/func/vlan/eth2p-dot1q-ip4base-func.robot deleted file mode 100644 index 19247b00ce..0000000000 --- a/tests/func/vlan/eth2p-dot1q-ip4base-func.robot +++ /dev/null @@ -1,107 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/tagging.robot -| Resource | resources/libraries/robot/traffic.robot -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPv6Util -| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | VM_ENV | HW_ENV | VPP_VM_ENV -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *IPv4 with VLAN subinterfaces* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology -| ... | with double links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-IPv4-ICMPv4 on TG-DUT1-IF1, -| ... | Eth-dot1q-IPv4-ICMPv4 on TG-DUT1-IF2. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with 2 Vlan subinterfaces -| ... | on DUT1-IF2. The subinterfaces and DUT1-IF1 have IP addresses set and -| ... | corresponding IP neighbor entries are configured. -| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q. - -*** Variables *** - -| ${ip4_net0_1}= | 192.168.0.1 -| ${ip4_net0_2}= | 192.168.0.2 -| ${ip4_net1_1}= | 192.168.100.1 -| ${ip4_net1_2}= | 192.168.100.2 -| ${ip4_net2_1}= | 192.168.200.1 -| ${ip4_net2_2}= | 192.168.200.2 -| ${ip4_prefix}= | 24 -| ${tag_1}= | ${10} -| ${tag_2}= | ${20} - -*** Test Cases *** -| TC01: Process untagged send tagged -| | Given Vlan Test Setup -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${ip4_net0_2} | ${ip4_net2_2} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} | ${tg_to_dut_if2} -| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} -| | ... | encaps_rx=Dot1q | vlan_rx=${tag_2} - -| TC02: Process tagged send untagged -# It doesn't work with virtio -| | [Tags] | EXPECTED_FAILING -| | Given Vlan Test Setup -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${ip4_net2_2} | ${ip4_net0_2} | ${tg_to_dut_if2} -| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} | ${tg_to_dut_if1} -| | ... | ${dut_to_tg_if1_mac} | ${tg_to_dut_if1_mac} -| | ... | encaps_tx=Dot1q | vlan_tx=${tag_2} - -| TC03: Process tagged send tagged -# It doesn't work with virtio -| | [Tags] | EXPECTED_FAILING -| | Given Vlan Test Setup -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${ip4_net1_2} | ${ip4_net2_2} | ${tg_to_dut_if2} -| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2} -| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} -| | ... | encaps_tx=Dot1q | vlan_tx=${tag_1} -| | ... | encaps_rx=Dot1q | vlan_rx=${tag_2} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${ip4_net2_2} | ${ip4_net1_2} | ${tg_to_dut_if2} -| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2} -| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} -| | ... | encaps_tx=Dot1q | vlan_tx=${tag_2} -| | ... | encaps_rx=Dot1q | vlan_rx=${tag_1} - -*** Keywords *** -| Vlan Test Setup -| | Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | Set interfaces in 2-node circular topology up -| | -| | ${vlan1_name} | ${vlan1_index}= | Create vlan sub-interface -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${tag_1} -| | ${vlan2_name} | ${vlan2_index}= | Create vlan sub-interface -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${tag_2} -| | -| | Set Interface Address | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${ip4_net0_1} | ${ip4_prefix} -| | Set Interface Address | ${dut_node} -| | ... | ${vlan1_index} | ${ip4_net1_1} | ${ip4_prefix} -| | Set Interface Address | ${dut_node} -| | ... | ${vlan2_index} | ${ip4_net2_1} | ${ip4_prefix} -| | -| | Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${ip4_net0_2} -| | ... | ${tg_to_dut_if1_mac} -| | Add IP Neighbor | ${dut_node} | ${vlan1_index} | ${ip4_net1_2} -| | ... | ${tg_to_dut_if2_mac} -| | Add IP Neighbor | ${dut_node} | ${vlan2_index} | ${ip4_net2_2} -| | ... | ${tg_to_dut_if2_mac} diff --git a/tests/func/vlan/eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-func.robot b/tests/func/vlan/eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-func.robot deleted file mode 100644 index 28ab67b266..0000000000 --- a/tests/func/vlan/eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-func.robot +++ /dev/null @@ -1,145 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/tagging.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/double_qemu_setup.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | HW_ENV | VM_ENV | VPP_VM_ENV -| Test Setup | Set up functional test -| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes} -| ... | AND | Show vpp trace dump on all DUTs -| ... | AND | Stop and clear QEMU | ${dut_node} | ${vm_node} -| ... | AND | Verify VPP PID in Teardown -| Documentation | *L2 bridge domain with VLAN tag over VM test cases* -| ... -| ... | *[Top] Network Topologies:* TG=DUT 2-node circular topology -| ... | with double links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-dot1q-IPv4-ICMPv4 or -| ... | Eth-dot1q-IPv6-ICMPv6 on TG=DUT and on DUT=VM. -| ... | *[Cfg] DUT configuration:* DUT is configured with two bridge domains -| ... | (L2BD) with MAC learning enabled; each one with added VLAN -| ... | sub-interface towards TG and vhost-user interface to local VM. Configure -| ... | linux bridge on VM to pass traffic between both vhost-user interfaces. -| ... | *[Ver] TG verification:* Make TG send ICMPv4/ICMPv6 Echo Req between two -| ... | of its interfaces to be switched by DUT via VM; verify packets are -| ... | switched between these TG interfaces; on receive TG verifies packets for -| ... | correctness and their IPv4 src-addr, dst-addr, MAC addresses and -| ... | VLAN tag. -| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q. - -*** Variables *** -| ${bd_id1}= | 1 -| ${bd_id2}= | 2 - -| ${vlan_id1}= | 110 -| ${vlan_wrong}= | 150 - -| ${sock1}= | /tmp/sock1 -| ${sock2}= | /tmp/sock2 - -| ${ip4_1}= | 192.168.100.1 -| ${ip4_2}= | 192.168.100.2 - -| ${ip6_1}= | 3ffe:63::1 -| ${ip6_2}= | 3ffe:63::2 - -*** Test Cases *** -| TC01: eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm - ipv4 -| | [Documentation] -| | ... | [Top] TG=DUT. -| | ... | [Enc] Eth-dot1q-IPv4-ICMPv4 on TG=DUT and on DUT=VM. -| | ... | [Cfg] On DUT configure two L2BDs (MAC learning enabled); first L2BD -| | ... | with Dot1Q tagged interface to TG-if1 and vhost-user interface to -| | ... | local VM, second one with vhost-user interface to local VM and Dot1Q -| | ... | tagged interface towards TG-if2. Configure linux bridge on VM to pass -| | ... | traffic between both vhost-user interfaces. -| | ... | [Ver] Make TG send ICMPv4 Echo Req tagged with one Dot1q tag -| | ... | from one of its interfaces to another one via DUT and VM; verify -| | ... | that packet is received. -| | ... | [Ref] IEEE 802.1q -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${vlan_id1} -| | And Configure vhost interfaces for L2BD forwarding -| | ... | ${dut_node} | ${sock1} | ${sock2} -| | And Configure VM for vhost L2BD forwarding -| | ... | ${dut_node} | ${sock1} | ${sock2} -| | And Add interface to bridge domain | ${dut_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut_node} | ${vhost_if1} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut_node} | ${vlan2_index} -| | ... | ${bd_id2} -| | And Add interface to bridge domain | ${dut_node} | ${vhost_if2} -| | ... | ${bd_id2} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} | ${ip4_1} | ${ip4_2} -| | ... | encaps=Dot1q | vlan1=${vlan_id1} | encaps_rx=Dot1q -| | And Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if1} | ${ip4_2} | ${ip4_1} -| | ... | encaps=Dot1q | vlan1=${vlan_id1} | encaps_rx=Dot1q - -| TC01: eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm - ipv6 -| | [Documentation] -| | ... | [Top] TG=DUT. -| | ... | [Enc] Eth-dot1q-IPv6-ICMPv6 on TG=DUT and on DUT=VM. -| | ... | [Cfg] On DUT configure two L2BDs (MAC learning enabled); first L2BD -| | ... | with Dot1Q tagged interface to TG-if1 and vhost-user interface to -| | ... | local VM, second one with vhost-user interface to local VM and Dot1Q -| | ... | tagged interface towards TG-if2. Configure linux bridge on VM to pass -| | ... | traffic between both vhost-user interfaces. -| | ... | [Ver] Make TG send ICMPv6 Echo Req tagged with one Dot1q tag -| | ... | from one of its interfaces to another one via DUT and VM; verify -| | ... | that packet is received. -| | ... | [Ref] IEEE 802.1q -| | ... -| | Given Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | And Set interfaces in 2-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${vlan_id1} -| | And Configure vhost interfaces for L2BD forwarding -| | ... | ${dut_node} | ${sock1} | ${sock2} -| | And Configure VM for vhost L2BD forwarding -| | ... | ${dut_node} | ${sock1} | ${sock2} -| | And Add interface to bridge domain | ${dut_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut_node} | ${vhost_if1} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut_node} | ${vlan2_index} -| | ... | ${bd_id2} -| | And Add interface to bridge domain | ${dut_node} | ${vhost_if2} -| | ... | ${bd_id2} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} | ${ip6_1} | ${ip6_2} -| | ... | encaps=Dot1q | vlan1=${vlan_id1} | encaps_rx=Dot1q -| | And Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if1} | ${ip6_2} | ${ip6_1} -| | ... | encaps=Dot1q | vlan1=${vlan_id1} | encaps_rx=Dot1q - - - - diff --git a/tests/func/vlan/eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot b/tests/func/vlan/eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot deleted file mode 100644 index 379d9a4ab6..0000000000 --- a/tests/func/vlan/eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot +++ /dev/null @@ -1,206 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/bridge_domain.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/tagging.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *L2BD with VLAN tag rewrite test cases - translate-1-1* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-dot1q-IPv4-ICMPv4 or -| ... | Eth-dot1q-IPv6-ICMPv6 on TG-DUT1 and DUT1-DUT2, Eth-IPv4-ICMPv4 or -| ... | Eth-IPv6-ICMPv6 on TG-DUT2 for L2 switching of IPv4/IPv6. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with bridge domain (L2BD) -| ... | switching combined with MAC learning enabled and added VLAN -| ... | sub-interface with VLAN tag rewrite translate-1-1 method of interface -| ... | towards TG and interface towards DUT2. DUT2 is configured with L2 -| ... | bridge domain (L2BD) switching between VLAN sub-interface with VLAN tag -| ... | rewrite pop-1 method of interface towards DUT1 and interface towards TG. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are -| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; -| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, -| ... | dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. - -*** Variables *** -| ${bd_id1}= | 1 - -| ${subid}= | 10 - -| ${outer_vlan_id1}= | 110 -| ${outer_vlan_id2}= | 120 -| ${outer_vlan_wrong}= | 150 - -| ${inner_vlan_id1}= | 210 -| ${inner_vlan_wrong}= | 250 - -| ${src_ip6}= | 3ffe:63::1 -| ${dst_ip6}= | 3ffe:63::2 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2BD and VLAN translate-1-1 (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1 and \ -| | ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | bridge domain with one interface to DUT2 and one VLAN -| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method; -| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG -| | ... | and one VLAN sub-interface towards DUT1 with VLAN tag rewrite pop-1 -| | ... | method. [Ver] Make TG send ICMPv4 Echo Req tagged with one Dot1q tag -| | ... | from one of its interfaces to another one via DUT1 and DUT2; verify -| | ... | that packet is received. [Ref] IEEE 802.1q -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-1 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1q -| | ... | vlan1=${outer_vlan_id1} - -| TC02: DUT1 and DUT2 with L2BD and VLAN translate-1-1 with wrong tag used (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1 and \ -| | ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | bridge domain (L2BD) with one interface to DUT2 and one VLAN -| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method -| | ... | to set tag different from tag set on VLAN sub-interface of DUT2; -| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG -| | ... | and one VLAN sub-interface towards DUT1 with VLAN tag rewrite pop-1 -| | ... | method. [Ver] Make TG send ICMPv4 Echo Req tagged with one Dot1q tag -| | ... | from one of its interfaces to another one via DUT1 and DUT2; verify -| | ... | that packet is not received. [Ref] IEEE 802.1q -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-1 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} - -| TC03: DUT1 and DUT2 with L2BD and VLAN translate-1-1 (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1 and \ -| | ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | bridge domain (L2BD) with one interface to DUT2 and one VLAN -| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method; -| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG -| | ... | and one VLAN sub-interface towards DUT1 with VLAN tag rewrite pop-1 -| | ... | method. [Ver] Make TG send ICMPv6 Echo Req tagged with one Dot1q tag -| | ... | from one of its interfaces to another one via DUT1 and DUT2; verify -| | ... | that packet is received. [Ref] IEEE 802.1q -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-1 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip6} -| | ... | dst_ip=${dst_ip6} | encaps=Dot1q | vlan1=${outer_vlan_id1} - -| TC04: DUT1 and DUT2 with L2BD and VLAN translate-1-1 with wrong tag used (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1 and \ -| | ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | bridge domain (L2BD) with one interface to DUT2 and one VLAN -| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method -| | ... | to set tag different from tag set on VLAN sub-interface of DUT2; -| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG -| | ... | and one VLAN sub-interface towards DUT1 with VLAN tag rewrite pop-1 -| | ... | method. [Ver] Make TG send ICMPv6 Echo Req tagged with one Dot1q tag -| | ... | from one of its interfaces to another one via DUT1 and DUT2; verify -| | ... | that packet is not received. [Ref] IEEE 802.1q -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-1 -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} -| | ... | ${bd_id1} -| | And Create bridge domain | ${dut2_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} -| | ... | ${bd_id1} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1q -| | ... | vlan1=${outer_vlan_id1} diff --git a/tests/func/vlan/eth2p-dot1q-l2xcbase-vlantrans11-func.robot b/tests/func/vlan/eth2p-dot1q-l2xcbase-vlantrans11-func.robot deleted file mode 100644 index bb91940a32..0000000000 --- a/tests/func/vlan/eth2p-dot1q-l2xcbase-vlantrans11-func.robot +++ /dev/null @@ -1,171 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/tagging.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *L2XC with VLAN tag rewrite test cases - translate-1-1* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-dot1q-IPv4-ICMPv4 or -| ... | Eth-dot1q-IPv6-ICMPv6 on TG-DUT1 and DUT1-DUT2, Eth-IPv4-ICMPv4 or -| ... | Eth-IPv4-ICMPv4 on TG-DUT2 for L2 switching of IPv4/IPv6. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect -| ... | (L2XC) switching between VLAN sub-interface with VLAN tag rewrite -| ... | translate-1-1 method of interface towards TG and interface towards DUT2. -| ... | DUT2 is configured configured with L2 cross-connect (L2XC) switching -| ... | between VLAN sub-interface with VLAN tag rewrite pop-1 method -| ... | of interface towards DUT1 and interface towards TG. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are -| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; -| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, -| ... | dst-addr and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. - -*** Variables *** -| ${subid}= | 10 - -| ${outer_vlan_id1}= | 110 -| ${outer_vlan_id2}= | 120 -| ${outer_vlan_wrong}= | 150 - -| ${src_ip}= | 3ffe:63::1 -| ${dst_ip}= | 3ffe:63::2 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2XC and VLAN translate-1-1 (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1 and \ -| | ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | cross-connect (L2XC) with one interface to DUT2 and one VLAN -| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method; -| | ... | on DUT2 configure L2 cross-connect (L2XC) with one interface to TG -| | ... | and one VLAN sub-interface towards DUT1 with VLAN tag rewrite pop-1 -| | ... | method. [Ver] Make TG send ICMPv4 Echo Req tagged with one Dot1q tag -| | ... | from one of its interfaces to another one via DUT1 and DUT2; verify -| | ... | that packet is received. [Ref] IEEE 802.1q -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-1 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1q -| | ... | vlan1=${outer_vlan_id1} - -| TC02: DUT1 and DUT2 with L2XC and VLAN translate-1-1 with wrong tag used (DUT1) switch ICMPv4 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1 and \ -| | ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | cross-connect (L2XC) with one VLAN tagged sub-interface to DUT2 and -| | ... | one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | (translate-1-1) on sub-interface to DUT2; on DUT2 configure L2XC with -| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with VLAN -| | ... | tag pop-1. [Ver] Make TG send ICMPv4 Echo Req tagged with one dot1q -| | ... | tag from one of its interfaces to another one via DUT1 and DUT2; -| | ... | verify that packet is not received. [Ref] IEEE 802.1q -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-1 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} - -| TC03: DUT1 and DUT2 with L2XC and VLAN translate-1-1 (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1 and \ -| | ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | cross-connect (L2XC) with one interface to DUT2 and one VLAN -| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method; -| | ... | on DUT2 configure L2 cross-connect (L2XC) with one interface to TG -| | ... | and one VLAN sub-interface towards DUT1 with VLAN tag rewrite pop-1 -| | ... | method. [Ver] Make TG send ICMPv6 Echo Req tagegd with one Dot1q tag -| | ... | from one of its interfaces to another one via DUT1 and DUT2; verify -| | ... | that packet is received. [Ref] IEEE 802.1q -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-1 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip} -| | ... | dst_ip=${dst_ip} | encaps=Dot1q | vlan1=${outer_vlan_id1} - -| TC04: DUT1 and DUT2 with L2XC and VLAN translate-1-1 with wrong tag used (DUT1) switch ICMPv6 between two TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1 and \ -| | ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 -| | ... | cross-connect (L2XC) with one interface to DUT2 and one VLAN -| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method -| | ... | to set tag different from tag set on VLAN sub-interface of DUT2; -| | ... | on DUT2 configure L2 cross-connect (L2XC) with one interface to TG -| | ... | and one VLAN sub-interface towards DUT1 with VLAN tag rewrite pop-1 -| | ... | method. [Ver] Make TG send ICMPv6 Echo Req tagegd with one Dot1q tag -| | ... | from one of its interfaces to another one via DUT1 and DUT2; verify -| | ... | that packet is not received. [Ref] IEEE 802.1q -| | [Tags] | SKIP_PATCH -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface -| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} -| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} -| | And Configure L2 tag rewrite method on interface | ${dut1_node} -| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_wrong} -| | And Configure L2 tag rewrite method on interface | ${dut2_node} -| | ... | ${vlan2_index} | pop-1 -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} -| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1q -| | ... | vlan1=${outer_vlan_id1} diff --git a/tests/func/vrf/eth2p-ethip4-ip4basevrf-func.robot b/tests/func/vrf/eth2p-ethip4-ip4basevrf-func.robot deleted file mode 100644 index 841077203b..0000000000 --- a/tests/func/vrf/eth2p-ethip4-ip4basevrf-func.robot +++ /dev/null @@ -1,391 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *Vpn routed forwarding - baseline IPv4* -| ... | *[Top] Network Topologies:* TG=DUT1=DUT2=TG 3-node topology with two -| ... | links in between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of -| ... | IPv4. -| ... | *[Cfg] DUT configuration:* Each DUT is configured with two VRF tables; -| ... | Separation of traffic is tested by IP packets; Basic ARP and ROUTES are -| ... | set on DUT nodes; IP addresses are set on DUT interfaces. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets -| ... | are sent by TG on link to DUT1, DUT2 or back to TG; On receipt TG -| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr, -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* - -*** Variables *** -| ${fib_table_1}= | 9 -| ${fib_table_2}= | 99 - -| ${dut1_to_tg_ip1}= | 10.0.0.3 -| ${dut1_to_tg_ip2}= | 10.0.0.4 -| ${dut2_to_tg_ip1}= | 30.0.0.3 -| ${dut2_to_tg_ip2}= | 30.0.0.4 - -| ${dut1_to_dut2_ip1}= | 20.0.0.1 -| ${dut1_to_dut2_ip2}= | 20.0.0.2 -| ${dut2_to_dut1_ip1}= | 20.0.0.3 -| ${dut2_to_dut1_ip2}= | 20.0.0.4 - -| ${tg_dut1_ip1}= | 10.0.0.1 -| ${tg_dut1_ip2}= | 10.0.0.2 -| ${tg_dut2_ip1}= | 30.0.0.1 -| ${tg_dut2_ip2}= | 30.0.0.2 - -| ${ip_prefix}= | 24 - -*** Test Cases *** -| TC01: TG packets routed to DUT ingress interface, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG -| | ... | [Enc] Eth-IPv4-ICMPv4. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. On every ingress -| | ... | and egress port on DUT is configured ARP and each DUT is configured -| | ... | with one route. -| | ... | [Ver] Packet is send from TG->DUT1-if1 to DUT1->TG-if1 and from -| | ... | TG->DUT1-if2 to DUT1->TG-if2 and checked if arrived. -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Send ICMP echo request and verify answer | ${tg_node} -| | ... | ${tg_to_dut1_if1} | ${dut1_to_tg_if1_mac} -| | ... | ${tg_to_dut1_if1_mac} | ${dut1_to_tg_ip1} | ${tg_dut1_ip1} | 5 -| | And Send ICMP echo request and verify answer | ${tg_node} -| | ... | ${tg_to_dut1_if2} | ${dut1_to_tg_if2_mac} -| | ... | ${tg_to_dut1_if2_mac} | ${dut1_to_tg_ip2} | ${tg_dut1_ip2} | 5 - -| TC02: TG packets routed to DUT egress interface, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG -| | ... | [Enc] Eth-IPv4-ICMPv4. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. On every ingress -| | ... | and egress port on DUT is configured ARP and each DUT is configured -| | ... | with one route. -| | ... | [Ver] Packet is send from TG->DUT1-if1 to DUT1->DUT2-if1 and from -| | ... | TG->DUT1-if2 to DUT1->DUT2-if2 and checked if arrived. -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if1} -| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} -| | ... | ${dut1_to_dut2_ip1} | ${tg_dut1_ip1} | 5 -| | And Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if2} -| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} -| | ... | ${dut1_to_dut2_ip2} | ${tg_dut1_ip2} | 5 - -| TC03: TG packets routed to DUT2 ingress interface through DUT1, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG -| | ... | [Enc] Eth-IPv4-ICMPv4. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. On every ingress -| | ... | and egress port on DUT is configured ARP and each DUT is configured -| | ... | with one route. -| | ... | [Ver] Packet is send from TG->DUT1-if1 to DUT2->DUT1-if1 and from -| | ... | TG->DUT1-if2 to DUT2->DUT1-if2 and checked if arrived. -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if1} -| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} -| | ... | ${dut2_to_dut1_ip1} | ${tg_dut1_ip1} | 5 -| | And Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if2} -| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} -| | ... | ${dut2_to_dut1_ip2} | ${tg_dut1_ip2} | 5 - -| TC04: TG packets routed to DUT2 egress interface through DUT1, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG -| | ... | [Enc] Eth-IPv4-ICMPv4. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. On every ingress -| | ... | and egress port on DUT is configured ARP and each DUT is configured -| | ... | with one route. -| | ... | [Ver] Packet is send from TG->DUT1-if1 to DUT2->TG-if1 and from -| | ... | TG->DUT1-if2 to DUT2->TG-if2 and checked if arrived. -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if1} -| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} -| | ... | ${dut2_to_tg_ip1} | ${tg_dut1_ip1} | 5 -| | And Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if2} -| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} -| | ... | ${dut2_to_tg_ip2} | ${tg_dut1_ip2} | 5 - -| TC05: TG packets routed to TG through DUT1 and DUT2, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG -| | ... | [Enc] Eth-IPv4-ICMPv4. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. On every ingress -| | ... | and egress port on DUT is configured ARP and each DUT is configured -| | ... | with one route. -| | ... | [Ver] Packet is send from TG->DUT1-if1 to TG->DUT2-if1 and from -| | ... | TG->DUT1-if2 to TG->DUT2-if2 and checked if arrived. -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Send packet and verify headers | ${tg_node} | ${tg_dut1_ip1} -| | ... | ${tg_dut2_ip1} | ${tg_to_dut1_if1} | ${tg_to_dut1_if1_mac} -| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut2_if1} | ${dut2_to_tg_if1_mac} -| | ... | ${tg_to_dut2_if1_mac} -| | And Send packet and verify headers | ${tg_node} -| | ... | ${tg_dut1_ip2} | ${tg_dut2_ip2} | ${tg_to_dut1_if2} -| | ... | ${tg_to_dut1_if2_mac} | ${dut1_to_tg_if2_mac} | ${tg_to_dut2_if2} -| | ... | ${dut2_to_tg_if2_mac} | ${tg_to_dut2_if2_mac} - -| TC06: TG packets not routed to DUT ingress interface in different VRF, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG -| | ... | [Enc] Eth-IPv4-ICMPv4. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. On every ingress -| | ... | and egress port on DUT is configured ARP and each DUT is configured -| | ... | with one route. -| | ... | [Ver] Packet is send from TG->DUT1-if1 to DUT1->TG-if2 where it -| | ... | should not arrive. -| | [Tags] | SKIP_PATCH -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP echo request and verify answer -| | ... | ${tg_node} | ${tg_to_dut1_if1} -| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} -| | ... | ${dut1_to_tg_ip2} | ${tg_dut1_ip1} | 5 - -| TC07: TG packets not routed to DUT egress interface in different VRF, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG -| | ... | [Enc] Eth-IPv4-ICMPv4. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. On every ingress -| | ... | and egress port on DUT is configured ARP and each DUT is configured -| | ... | with one route. -| | ... | [Ver] Packet is send from TG->DUT1-if1 to DUT1->DUT2-if2 where it -| | ... | should not arrive. -| | [Tags] | SKIP_PATCH -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP echo request and verify answer -| | ... | ${tg_node} | ${tg_to_dut1_if1} -| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} -| | ... | ${dut1_to_dut2_ip2} | ${tg_dut1_ip1} | 5 - -| TC08: TG packets not routed to DUT2 ingress interface in different VRF through DUT1, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG -| | ... | [Enc] Eth-IPv4-ICMPv4. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. On every ingress -| | ... | and egress port on DUT is configured ARP and each DUT is configured -| | ... | with one route. -| | ... | [Ver] Packet is send from TG->DUT1-if1 to DUT2->DUT1-if2 where it -| | ... | should not arrive. -| | [Tags] | SKIP_PATCH -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP echo request and verify answer -| | ... | ${tg_node} | ${tg_to_dut1_if1} -| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} -| | ... | ${dut2_to_dut1_ip2} | ${tg_dut1_ip1} | 5 - -| TC09: TG packets not routed to DUT2 egress interface in different VRF through DUT1, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG -| | ... | [Enc] Eth-IPv4-ICMPv4. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. On every ingress -| | ... | and egress port on DUT is configured ARP and each DUT is configured -| | ... | with one route. -| | ... | [Ver] Packet is send from TG->DUT1-if1 to DUT2->TG-if2 where it -| | ... | should not arrive. -| | [Tags] | SKIP_PATCH -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP echo request and verify answer -| | ... | ${tg_node} | ${tg_to_dut1_if1} -| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} -| | ... | ${dut2_to_tg_ip2} | ${tg_dut1_ip1} | 5 - -| TC10: TG packets not routed to TG in different VRF through DUT1 and DUT2, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG. -| | ... | [Enc] Eth-IPv4-ICMPv4. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. On every ingress -| | ... | and egress port on DUT is configured ARP and each DUT is configured -| | ... | with one route. -| | ... | [Ver] Packet is send from TG->DUT1-if1 to TG->DUT2-if2 where it -| | ... | should not arrive. -| | [Tags] | SKIP_PATCH -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send packet and verify headers | ${tg_node} | ${tg_dut1_ip1} -| | ... | ${tg_dut2_ip2} | ${tg_to_dut1_if1} -| | ... | ${tg_to_dut1_if1_mac} | ${dut1_to_tg_if1_mac} | ${tg_to_dut2_if2} -| | ... | ${dut2_to_tg_if2_mac} | ${tg_to_dut2_if2_mac} - -*** Keywords *** -| Setup Env - 2xVRF Each Node -| | [Documentation] -| | ... | Environment is set up with 2 fib tables on each DUT. DUT1-TG-IF1 and \ -| | ... | DUT1-DUT2-IF1 are assigned to FIB1, and DUT1-TG-IF2 and DUT1-DUT2-IF2 -| | ... | are assigned to FIB2 (the some done on DUT2, just opposite). IP -| | ... | addresses are subsequently set on interfaces, and ARP is set for -| | ... | neighbors. The last setting is route for each fib table. -| | ... -| | ${dut1_if1_idx}= | Get Interface SW Index -| | ... | ${dut1_node} | ${dut1_to_dut2_if1} -| | ${dut1_if2_idx}= | Get Interface SW Index -| | ... | ${dut1_node} | ${dut1_to_dut2_if2} -| | ${dut2_if1_idx}= | Get Interface SW Index -| | ... | ${dut2_node} | ${dut2_to_dut1_if1} -| | ${dut2_if2_idx}= | Get Interface SW Index -| | ... | ${dut2_node} | ${dut2_to_dut1_if2} -| | And Add fib table | ${dut1_node} -| | ... | ${tg_dut2_ip1} | ${ip_prefix} | ${fib_table_1} -| | ... | via ${dut2_to_dut1_ip1} sw_if_index ${dut1_if1_idx} multipath -| | And Add fib table | ${dut1_node} -| | ... | ${tg_dut2_ip2} | ${ip_prefix} | ${fib_table_2} -| | ... | via ${dut1_to_dut2_ip2} sw_if_index ${dut1_if2_idx} multipath -| | And Add fib table | ${dut2_node} -| | ... | ${tg_dut1_ip1} | ${ip_prefix} | ${fib_table_1} -| | ... | via ${dut2_to_dut1_ip1} sw_if_index ${dut2_if1_idx} multipath -| | And Add fib table | ${dut2_node} -| | ... | ${tg_dut1_ip2} | ${ip_prefix} | ${fib_table_2} -| | ... | via ${dut2_to_dut1_ip2} sw_if_index ${dut2_if2_idx} multipath - -| | Assign Interface To Fib Table -| | ... | ${dut1_node} | ${dut1_to_dut2_if1} | ${fib_table_1} -| | Assign Interface To Fib Table -| | ... | ${dut1_node} | ${dut1_to_dut2_if2} | ${fib_table_2} -| | Assign Interface To Fib Table -| | ... | ${dut1_node} | ${dut1_to_tg_if1} | ${fib_table_1} -| | Assign Interface To Fib Table -| | ... | ${dut1_node} | ${dut1_to_tg_if2} | ${fib_table_2} - -| | Assign Interface To Fib Table -| | ... | ${dut2_node} | ${dut2_to_dut1_if1} | ${fib_table_1} -| | Assign Interface To Fib Table -| | ... | ${dut2_node} | ${dut2_to_dut1_if2} | ${fib_table_2} -| | Assign Interface To Fib Table -| | ... | ${dut2_node} | ${dut2_to_tg_if1} | ${fib_table_1} -| | Assign Interface To Fib Table -| | ... | ${dut2_node} | ${dut2_to_tg_if2} | ${fib_table_2} - -| | And Set Interface Address -| | ... | ${dut1_node} | ${dut1_to_tg_if1} | ${dut1_to_tg_ip1} | ${ip_prefix} -| | And Set Interface Address -| | ... | ${dut1_node} | ${dut1_to_tg_if2} | ${dut1_to_tg_ip2} | ${ip_prefix} -| | And Set Interface Address -| | ... | ${dut1_node} | ${dut1_to_dut2_if1} -| | ... | ${dut1_to_dut2_ip1} | ${ip_prefix} -| | And Set Interface Address -| | ... | ${dut1_node} | ${dut1_to_dut2_if2} -| | ... | ${dut1_to_dut2_ip2} | ${ip_prefix} - -| | And Set Interface Address -| | ... | ${dut2_node} | ${dut2_to_tg_if1} | ${dut2_to_tg_ip1} | ${ip_prefix} -| | And Set Interface Address -| | ... | ${dut2_node} | ${dut2_to_tg_if2} | ${dut2_to_tg_ip2} | ${ip_prefix} -| | And Set Interface Address -| | ... | ${dut2_node} | ${dut2_to_dut1_if1} -| | ... | ${dut2_to_dut1_ip1} | ${ip_prefix} -| | And Set Interface Address -| | ... | ${dut2_node} | ${dut2_to_dut1_if2} -| | ... | ${dut2_to_dut1_ip2} | ${ip_prefix} - -| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_tg_if1} -| | ... | ${tg_dut1_ip1} | ${tg_to_dut1_if1_mac} -| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_dut2_if1} -| | ... | ${dut2_to_dut1_ip1} | ${dut2_to_dut1_if1_mac} -| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg_if1} -| | ... | ${tg_dut2_ip1} | ${tg_to_dut2_if1_mac} -| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_dut1_if1} -| | ... | ${dut1_to_dut2_ip1} | ${dut1_to_dut2_if1_mac} - -| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_tg_if2} -| | ... | ${tg_dut1_ip2} | ${tg_to_dut1_if2_mac} -| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_dut2_if2} -| | ... | ${dut2_to_dut1_ip2} | ${dut2_to_dut1_if2_mac} -| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg_if2} -| | ... | ${tg_dut2_ip2} | ${tg_to_dut2_if2_mac} -| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_dut1_if2} -| | ... | ${dut1_to_dut2_ip2} | ${dut1_to_dut2_if2_mac} - -| | And Vpp Route Add | ${dut1_node} | ${tg_dut2_ip1} | ${ip_prefix} -| | ... | ${dut2_to_dut1_ip1} | ${dut1_to_dut2_if1} | vrf=${fib_table_1} -| | And Vpp Route Add | ${dut2_node} | ${tg_dut1_ip1} | ${ip_prefix} -| | ... | ${dut1_to_dut2_ip1} | ${dut2_to_dut1_if1} | vrf=${fib_table_1} - -| | And Vpp Route Add | ${dut1_node} | ${tg_dut2_ip2} | ${ip_prefix} -| | ... | ${dut2_to_dut1_ip2} | ${dut1_to_dut2_if2} | vrf=${fib_table_2} -| | And Vpp Route Add | ${dut2_node} | ${tg_dut1_ip2} | ${ip_prefix} -| | ... | ${dut1_to_dut2_ip2} | ${dut2_to_dut1_if2} | vrf=${fib_table_2} diff --git a/tests/func/vrf/eth2p-ethip6-ip6basevrf-func.robot b/tests/func/vrf/eth2p-ethip6-ip6basevrf-func.robot deleted file mode 100644 index 64a34c4458..0000000000 --- a/tests/func/vrf/eth2p-ethip6-ip6basevrf-func.robot +++ /dev/null @@ -1,409 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/ipv4.robot -| Resource | resources/libraries/robot/ipv6.robot -| Resource | resources/libraries/robot/interfaces.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/traffic.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPUtil -| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *Vpn routed forwarding - baseline IPv6* -| ... | *[Top] Network Topologies:* TG=DUT1=DUT2=TG 3-node topology with two -| ... | links in between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-ICMPv6 -| ... | *[Cfg] DUT configuration:* Each DUT is configured with two VRF tables; -| ... | Separation of traffic is tested by IP packets; Neighbors and Routes are -| ... | set on DUT nodes; IP addresses are set on DUT interfaces. -| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets -| ... | are sent by TG on link to DUT1, DUT2 or back to TG; On receipt TG -| ... | verifies packets for correctness and their IPv6 src-addr, dst-addr, -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* - -*** Variables *** -| ${fib_table_1}= | 9 -| ${fib_table_2}= | 99 - -| ${dut1_to_tg_ip1}= | 2001:62::3 -| ${dut1_to_tg_ip2}= | 2001:62::4 -| ${dut2_to_tg_ip1}= | 2003:62::3 -| ${dut2_to_tg_ip2}= | 2003:62::4 - -| ${dut1_to_dut2_ip1}= | 2002:62::1 -| ${dut1_to_dut2_ip2}= | 2002:62::2 -| ${dut2_to_dut1_ip1}= | 2002:62::3 -| ${dut2_to_dut1_ip2}= | 2002:62::4 - -| ${tg_dut1_ip1}= | 2001:62::1 -| ${tg_dut1_ip2}= | 2001:62::2 -| ${tg_dut2_ip1}= | 2003:62::1 -| ${tg_dut2_ip2}= | 2003:62::2 - -| ${ip_prefix}= | 64 -| ${timeout}= | 5 - -*** Test Cases *** -| TC01: TG packets routed to DUT ingress interface, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG -| | ... | [Enc] Eth-IPv6-ICMPv6. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. Neighbors are -| | ... | configured for each DUTs ingress/egress ports, and each VRF is -| | ... | configured with just one route. -| | ... | [Ver] Packet is sent from TG->DUT1-if1 to DUT1->TG-if1 and from -| | ... | TG->DUT1-if2 to DUT1->TG-if2 and checked if arrived. -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Send ICMP echo request and verify answer | ${tg_node} -| | ... | ${tg_to_dut1_if1} | ${dut1_to_tg_if1_mac} -| | ... | ${tg_to_dut1_if1_mac} | ${dut1_to_tg_ip1} -| | ... | ${tg_dut1_ip1} | ${timeout} -| | And Send ICMP echo request and verify answer | ${tg_node} -| | ... | ${tg_to_dut1_if2} | ${dut1_to_tg_if2_mac} -| | ... | ${tg_to_dut1_if2_mac} | ${dut1_to_tg_ip2} -| | ... | ${tg_dut1_ip2} | ${timeout} - -| TC02: TG packets routed to DUT egress interface, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG -| | ... | [Enc] Eth-IPv6-ICMPv6. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. Neighbors are -| | ... | configured for each DUTs ingress/egress ports, and each VRF is -| | ... | configured with just one route. -| | ... | [Ver] Packet is sent from TG->DUT1-if1 to DUT1->DUT2-if1 and from -| | ... | TG->DUT1-if2 to DUT1->DUT2-if2 and checked if arrived. -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if1} -| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} -| | ... | ${dut1_to_dut2_ip1} | ${tg_dut1_ip1} | ${timeout} -| | And Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if2} -| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} -| | ... | ${dut1_to_dut2_ip2} | ${tg_dut1_ip2} | ${timeout} - -| TC03: TG packets routed to DUT2 ingress interface through DUT1, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG -| | ... | [Enc] Eth-IPv6-ICMPv6. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. Neighbors are -| | ... | configured for each DUTs ingress/egress ports, and each VRF is -| | ... | configured with just one route. -| | ... | [Ver] Packet is sent from TG->DUT1-if1 to DUT2->DUT1-if1 and from -| | ... | TG->DUT1-if2 to DUT2->DUT1-if2 and checked if arrived. -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if1} -| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} -| | ... | ${dut2_to_dut1_ip1} | ${tg_dut1_ip1} | ${timeout} -| | And Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if2} -| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} -| | ... | ${dut2_to_dut1_ip2} | ${tg_dut1_ip2} | ${timeout} - -| TC04: TG packets routed to DUT2 egress interface through DUT1, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG -| | ... | [Enc] Eth-IPv6-ICMPv6. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. Neighbors are -| | ... | configured for each DUTs ingress/egress ports, and each VRF is -| | ... | configured with just one route. -| | ... | [Ver] Packet is sent from TG->DUT1-if1 to DUT2->TG-if1 and from -| | ... | TG->DUT1-if2 to DUT2->TG-if2 and checked if arrived. -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if1} -| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} -| | ... | ${dut2_to_tg_ip1} | ${tg_dut1_ip1} | ${timeout} -| | And Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if2} -| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} -| | ... | ${dut2_to_tg_ip2} | ${tg_dut1_ip2} | ${timeout} - -| TC05: TG packets routed to TG through DUT1 and DUT2, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG -| | ... | [Enc] Eth-IPv6-ICMPv6. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. Neighbors are -| | ... | configured for each DUTs ingress/egress ports, and each VRF is -| | ... | configured with just one route. -| | ... | [Ver] Packet is sent from TG->DUT1-if1 to TG->DUT2-if1 and from -| | ... | TG->DUT1-if2 to TG->DUT2-if2 and checked if arrived. -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Send packet and verify headers | ${tg_node} | ${tg_dut1_ip1} -| | ... | ${tg_dut2_ip1} | ${tg_to_dut1_if1} | ${tg_to_dut1_if1_mac} -| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut2_if1} | ${dut2_to_tg_if1_mac} -| | ... | ${tg_to_dut2_if1_mac} -| | And Send packet and verify headers | ${tg_node} -| | ... | ${tg_dut1_ip2} | ${tg_dut2_ip2} | ${tg_to_dut1_if2} -| | ... | ${tg_to_dut1_if2_mac} | ${dut1_to_tg_if2_mac} | ${tg_to_dut2_if2} -| | ... | ${dut2_to_tg_if2_mac} | ${tg_to_dut2_if2_mac} - -| TC06: TG packets not routed to DUT ingress interface in different VRF, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG -| | ... | [Enc] Eth-IPv6-ICMPv6. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. Neighbors are -| | ... | configured for each DUTs ingress/egress ports, and each VRF is -| | ... | configured with just one route. -| | ... | [Ver] Packet is sent from TG->DUT1-if1 to DUT1->TG-if2 where it -| | ... | should not arrive. -| | [Tags] | SKIP_PATCH -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP echo request and verify answer -| | ... | ${tg_node} | ${tg_to_dut1_if1} -| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} -| | ... | ${dut1_to_tg_ip2} | ${tg_dut1_ip1} | ${timeout} -| | And Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP echo request and verify answer -| | ... | ${tg_node} | ${tg_to_dut1_if2} -| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} -| | ... | ${dut1_to_tg_ip1} | ${tg_dut1_ip2} | ${timeout} - -| TC07: TG packets not routed to DUT egress interface in different VRF, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG -| | ... | [Enc] Eth-IPv6-ICMPv6. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. Neighbors are -| | ... | configured for each DUTs ingress/egress ports, and each VRF is -| | ... | configured with just one route. -| | ... | [Ver] Packet is sent from TG->DUT1-if1 to DUT1->DUT2-if2 where it -| | ... | should not arrive. -| | [Tags] | SKIP_PATCH -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP echo request and verify answer -| | ... | ${tg_node} | ${tg_to_dut1_if1} -| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} -| | ... | ${dut1_to_dut2_ip2} | ${tg_dut1_ip1} | ${timeout} -| | And Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP echo request and verify answer -| | ... | ${tg_node} | ${tg_to_dut1_if2} -| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} -| | ... | ${dut1_to_dut2_ip1} | ${tg_dut1_ip2} | ${timeout} - - -| TC08: TG packets not routed to DUT2 ingress interface in different VRF through DUT1, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG -| | ... | [Enc] Eth-IPv6-ICMPv6. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. Neighbors are -| | ... | configured for each DUTs ingress/egress ports, and each VRF is -| | ... | configured with just one route. -| | ... | [Ver] Packet is sent from TG->DUT1-if1 to DUT2->DUT1-if2 where it -| | ... | should not arrive. -| | [Tags] | SKIP_PATCH -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP echo request and verify answer -| | ... | ${tg_node} | ${tg_to_dut1_if1} -| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} -| | ... | ${dut2_to_dut1_ip2} | ${tg_dut1_ip1} | ${timeout} -| | And Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP echo request and verify answer -| | ... | ${tg_node} | ${tg_to_dut1_if2} -| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} -| | ... | ${dut2_to_dut1_ip1} | ${tg_dut1_ip2} | ${timeout} - -| TC09: TG packets not routed to DUT2 egress interface in different VRF through DUT1, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG -| | ... | [Enc] Eth-IPv6-ICMPv6. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. Neighbors are -| | ... | configured for each DUTs ingress/egress ports, and each VRF is -| | ... | configured with just one route. -| | ... | [Ver] Packet is sent from TG->DUT1-if1 to DUT2->TG-if2 where it -| | ... | should not arrive. -| | [Tags] | SKIP_PATCH -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP echo request and verify answer -| | ... | ${tg_node} | ${tg_to_dut1_if1} -| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} -| | ... | ${dut2_to_tg_ip2} | ${tg_dut1_ip1} | ${timeout} -| | And Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMP echo request and verify answer -| | ... | ${tg_node} | ${tg_to_dut1_if2} -| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} -| | ... | ${dut2_to_tg_ip1} | ${tg_dut1_ip2} | ${timeout} - -| TC10: TG packets not routed to TG in different VRF through DUT1 and DUT2, VPP configured with two VRFs -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG. -| | ... | [Enc] Eth-IPv6-ICMPv6. -| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each -| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces -| | ... | are configured with IP addresses from *Variables*. Neighbors are -| | ... | configured for each DUTs ingress/egress ports, and each VRF is -| | ... | configured with just one route. -| | ... | [Ver] Packet is sent from TG->DUT1-if1 to TG->DUT2-if2 where it -| | ... | should not arrive. -| | [Tags] | SKIP_PATCH -| | Given Configure path in double-link 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in double-link 3-node circular topology up -| | When Setup Env - 2xVRF Each Node -| | Then Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send packet and verify headers | ${tg_node} | ${tg_dut1_ip1} -| | ... | ${tg_dut2_ip2} | ${tg_to_dut1_if1} -| | ... | ${tg_to_dut1_if1_mac} | ${dut1_to_tg_if1_mac} | ${tg_to_dut2_if2} -| | ... | ${dut2_to_tg_if2_mac} | ${tg_to_dut2_if2_mac} -| | And Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send packet and verify headers | ${tg_node} | ${tg_dut1_ip2} -| | ... | ${tg_dut2_ip1} | ${tg_to_dut1_if2} -| | ... | ${tg_to_dut1_if2_mac} | ${dut1_to_tg_if2_mac} | ${tg_to_dut2_if1} -| | ... | ${dut2_to_tg_if1_mac} | ${tg_to_dut2_if1_mac} - -*** Keywords *** -| Setup Env - 2xVRF Each Node -| | [Documentation] -| | ... | Environment is set up with 2 fib tables on each DUT. DUT1-TG-IF1 and \ -| | ... | DUT1-DUT2-IF1 are assigned to FIB1, and DUT1-TG-IF2 and DUT1-DUT2-IF2 -| | ... | are assigned to FIB2 (the same done on DUT2, just opposite). -| | ... | IP addresses and IP Neighbors are subsequently set for interfaces. -| | ... | The last setting is route for each fib table. -| | ... -| | ${dut1_if1_idx}= | Get Interface SW Index -| | ... | ${dut1_node} | ${dut1_to_dut2_if1} -| | ${dut1_if2_idx}= | Get Interface SW Index -| | ... | ${dut1_node} | ${dut1_to_dut2_if2} -| | ${dut2_if1_idx}= | Get Interface SW Index -| | ... | ${dut2_node} | ${dut2_to_dut1_if1} -| | ${dut2_if2_idx}= | Get Interface SW Index -| | ... | ${dut2_node} | ${dut2_to_dut1_if2} - -| | Assign Interface To Fib Table -| | ... | ${dut1_node} | ${dut1_to_dut2_if1} | ${fib_table_1} | ipv6=${TRUE} -| | Assign Interface To Fib Table -| | ... | ${dut1_node} | ${dut1_to_dut2_if2} | ${fib_table_2} | ipv6=${TRUE} -| | Assign Interface To Fib Table -| | ... | ${dut1_node} | ${dut1_to_tg_if1} | ${fib_table_1} | ipv6=${TRUE} -| | Assign Interface To Fib Table -| | ... | ${dut1_node} | ${dut1_to_tg_if2} | ${fib_table_2} | ipv6=${TRUE} - -| | Assign Interface To Fib Table -| | ... | ${dut2_node} | ${dut2_to_dut1_if1} | ${fib_table_1} | ipv6=${TRUE} -| | Assign Interface To Fib Table -| | ... | ${dut2_node} | ${dut2_to_dut1_if2} | ${fib_table_2} | ipv6=${TRUE} -| | Assign Interface To Fib Table -| | ... | ${dut2_node} | ${dut2_to_tg_if1} | ${fib_table_1} | ipv6=${TRUE} -| | Assign Interface To Fib Table -| | ... | ${dut2_node} | ${dut2_to_tg_if2} | ${fib_table_2} | ipv6=${TRUE} - -| | And Set Interface Address -| | ... | ${dut1_node} | ${dut1_to_tg_if1} | ${dut1_to_tg_ip1} | ${ip_prefix} -| | And Set Interface Address -| | ... | ${dut1_node} | ${dut1_to_tg_if2} | ${dut1_to_tg_ip2} | ${ip_prefix} -| | And Set Interface Address -| | ... | ${dut1_node} | ${dut1_to_dut2_if1} -| | ... | ${dut1_to_dut2_ip1} | ${ip_prefix} -| | And Set Interface Address -| | ... | ${dut1_node} | ${dut1_to_dut2_if2} -| | ... | ${dut1_to_dut2_ip2} | ${ip_prefix} - -| | And Set Interface Address -| | ... | ${dut2_node} | ${dut2_to_tg_if1} | ${dut2_to_tg_ip1} | ${ip_prefix} -| | And Set Interface Address -| | ... | ${dut2_node} | ${dut2_to_tg_if2} | ${dut2_to_tg_ip2} | ${ip_prefix} -| | And Set Interface Address -| | ... | ${dut2_node} | ${dut2_to_dut1_if1} -| | ... | ${dut2_to_dut1_ip1} | ${ip_prefix} -| | And Set Interface Address -| | ... | ${dut2_node} | ${dut2_to_dut1_if2} -| | ... | ${dut2_to_dut1_ip2} | ${ip_prefix} - -| | And Add IP Neighbor | ${dut1_node} | ${dut1_to_tg_if1} -| | ... | ${tg_dut1_ip1} | ${tg_to_dut1_if1_mac} -| | And Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2_if1} -| | ... | ${dut2_to_dut1_ip1} | ${dut2_to_dut1_if1_mac} -| | And Add IP Neighbor | ${dut2_node} | ${dut2_to_tg_if1} -| | ... | ${tg_dut2_ip1} | ${tg_to_dut2_if1_mac} -| | And Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1_if1} -| | ... | ${dut1_to_dut2_ip1} | ${dut1_to_dut2_if1_mac} - -| | And Add IP Neighbor | ${dut1_node} | ${dut1_to_tg_if2} -| | ... | ${tg_dut1_ip2} | ${tg_to_dut1_if2_mac} -| | And Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2_if2} -| | ... | ${dut2_to_dut1_ip2} | ${dut2_to_dut1_if2_mac} -| | And Add IP Neighbor | ${dut2_node} | ${dut2_to_tg_if2} -| | ... | ${tg_dut2_ip2} | ${tg_to_dut2_if2_mac} -| | And Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1_if2} -| | ... | ${dut1_to_dut2_ip2} | ${dut1_to_dut2_if2_mac} - -| | And Vpp Route Add | ${dut1_node} | ${tg_dut2_ip1} | ${ip_prefix} -| | ... | ${dut2_to_dut1_ip1} | ${dut1_to_dut2_if1} | vrf=${fib_table_1} -| | And Vpp Route Add | ${dut2_node} | ${tg_dut1_ip1} | ${ip_prefix} -| | ... | ${dut1_to_dut2_ip1} | ${dut2_to_dut1_if1} | vrf=${fib_table_1} - -| | And Vpp Route Add | ${dut1_node} | ${tg_dut2_ip2} | ${ip_prefix} -| | ... | ${dut2_to_dut1_ip2} | ${dut1_to_dut2_if2} | vrf=${fib_table_2} -| | And Vpp Route Add | ${dut2_node} | ${tg_dut1_ip2} | ${ip_prefix} -| | ... | ${dut1_to_dut2_ip2} | ${dut2_to_dut1_if2} | vrf=${fib_table_2} - -| | Vpp All RA Suppress Link Layer | ${nodes} diff --git a/tests/func/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot b/tests/func/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot deleted file mode 100644 index 0155b4953d..0000000000 --- a/tests/func/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/vxlan.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *RFC7348 VXLAN: Bridge-domain with VXLAN over VLAN test cases* -| ... -| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology with -| ... | single links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-dot1q-IPv4-VXLAN-Eth-IPv4-ICMPv4 on -| ... | DUT1-DUT2, Eth-dot1q-IPv4-ICMPv4 on TG-DUTn for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | bridge-domain (L2BD) switching combined with static MACs, MAC learning -| ... | enabled and Split Horizon Groups (SHG) depending on test case; VXLAN -| ... | tunnels are configured between L2BDs on DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are -| ... | sent in both directions by TG on links to DUT1 and DUT2; on receive TG -| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr and -| ... | MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC7348. - -*** Variables *** -| ${VNI}= | 23 -| ${BID}= | 23 -| ${VLAN}= | 10 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv4oVLAN tunnels switch ICMPv4 between TG links -| | [Tags] | EXPECTED_FAILING -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-VXLAN-Eth-IPv4-ICMPv4 on\ -| | ... | DUT1-DUT2; Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 and DUT2 -| | ... | configure L2 bridge-domain (MAC learning enabled), each with one -| | ... | interface to TG and one VXLAN tunnel interface towards the other DUT -| | ... | over VLAN sub-interface. [Ver] Make TG send ICMPv4 Echo Req between -| | ... | two of its interfaces, verify all packets are received. [Ref] RFC7348. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Create vlan interfaces for VXLAN | ${VLAN} -| | ... | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${dut2_node} | ${dut2_to_dut1} -| | And Configure IP addresses and neighbors on interfaces -| | ... | ${dut1_node} | ${dut1s_vlan_name} | ${dut1s_vlan_index} -| | ... | ${dut2_node} | ${dut2s_vlan_name} | ${dut2s_vlan_index} -| | ${dut1s_vxlan}= | When Create VXLAN interface | ${dut1_node} | ${VNI} -| | | ... | ${dut1s_ip_address} | ${dut2s_ip_address} -| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan} -| | ... | up -| | And Add interfaces to L2BD | ${dut1_node} | ${BID} -| | ... | ${dut1_to_tg} | ${dut1s_vxlan} -| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${VNI} -| | | ... | ${dut2s_ip_address} | ${dut1s_ip_address} -| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan} -| | ... | up -| | And Add interfaces to L2BD | ${dut2_node} | ${BID} -| | ... | ${dut2_to_tg} | ${dut2s_vxlan} -| | Then Send ICMPv4 bidirectionally and verify received packets -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot b/tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot deleted file mode 100644 index b69abb09d5..0000000000 --- a/tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot +++ /dev/null @@ -1,116 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/vxlan.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/double_qemu_setup.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV | VPP_VM_ENV -| Test Setup | Set up functional test -| Test Teardown | Run Keywords | Tear down functional test -| ... | AND | Run keyword | Tear down QEMU | ${dut1_node} -| ... | ${${qemu1}} | ${qemu1} -| ... | AND | Run keyword | Tear down QEMU | ${dut2_node} -| ... | ${${qemu2}} | ${qemu2} -| Documentation | *L2BD with VM combined with VXLAN test cases - IPv4* -| ... -| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on -| ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | bridge-domain (L2BD) switching combined with MAC learning enabled; -| ... | VXLAN tunnels are configured between L2BDs on DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent -| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG -| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC7348. - -*** Variables *** -| ${vni_1}= | 23 - -| ${bd_id1}= | 10 -| ${bd_id2}= | 20 - -| ${ip4_addr1}= | 172.16.0.1 -| ${ip4_addr2}= | 172.16.0.2 -| ${ip4_prefix}= | 24 - -| ${sock1}= | /tmp/sock1 -| ${sock2}= | /tmp/sock2 - -| ${qemu1}= | qemu_instance_1 -| ${qemu2}= | qemu_instance_2 - -| ${dut1_vhost1}= | dut1_vhost_if1 -| ${dut1_vhost2}= | dut1_vhost_if2 -| ${dut2_vhost1}= | dut2_vhost_if1 -| ${dut2_vhost2}= | dut2_vhost_if2 - -*** Test Cases *** -| TC01:DUT1 and DUT2 with two L2BDs and VXLANoIPv4 tunnel switch ICMPv4 between TG links and VM links -| | [Documentation] -| | ... | [Top] TG-DUT1-VM-DUT1-DUT2-VM-DUT2-TG. -| | ... | [Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on DUT1-DUT2; Eth-IPv4-ICMPv4 -| | ... | on TG-DUTn and DUTn=VM. -| | ... | [Cfg] On both DUTs configure two L2BDs (MAC learning enabled); first -| | ... | L2BD with untagged interface to TG and vhost-user interface to local -| | ... | VM, second one with vhost-user interface to local VM and VXLAN -| | ... | interface towards the other DUT. Configure linux bridge on both VMs -| | ... | to pass traffic between both vhost-user interfaces. -| | ... | [Ver] Make TG send ICMPv4 Echo Req between two of its interfaces to -| | ... | be switched by DUT1 and DUT2; verify packets are switched between -| | ... | these TG interfaces. -| | ... | [Ref] RFC7348. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | When Configure vhost interfaces for L2BD forwarding | ${dut1_node} -| | ... | ${sock1} -| | ... | ${sock2} -| | ... | ${dut1_vhost1} -| | ... | ${dut1_vhost2} -| | And Configure vhost interfaces for L2BD forwarding | ${dut2_node} -| | ... | ${sock1} -| | ... | ${sock2} -| | ... | ${dut2_vhost1} -| | ... | ${dut2_vhost2} -| | And Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} -| | ... | ${sock2} | ${qemu1} -| | And Configure VM for vhost L2BD forwarding | ${dut2_node} | ${sock1} -| | ... | ${sock2} | ${qemu2} -| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr1} -| | ... | ${ip4_prefix} -| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr2} -| | ... | ${ip4_prefix} -| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr2} -| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr1} -| | ${dut1s_vxlan}= | And Create VXLAN interface | ${dut1_node} | ${vni_1} -| | | ... | ${ip4_addr1} | ${ip4_addr2} -| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${vni_1} -| | | ... | ${ip4_addr2} | ${ip4_addr1} -| | And Add interfaces to L2BD | ${dut1_node} | ${bd_id1} -| | ... | ${dut1_to_tg} | ${${dut1_vhost1}} -| | And Add interfaces to L2BD | ${dut1_node} | ${bd_id2} -| | ... | ${dut1s_vxlan} | ${${dut1_vhost2}} -| | And Add interfaces to L2BD | ${dut2_node} | ${bd_id1} -| | ... | ${dut2_to_tg} | ${${dut2_vhost1}} -| | And Add interfaces to L2BD | ${dut2_node} | ${bd_id2} -| | ... | ${dut2s_vxlan} | ${${dut2_vhost2}} -| | Then Send ICMPv4 bidirectionally and verify received packets -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot b/tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot deleted file mode 100644 index 6db2ee27ff..0000000000 --- a/tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot +++ /dev/null @@ -1,78 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/vxlan.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/double_qemu_setup.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *Bridge-domain with VXLAN test cases - IPv4* -| ... -| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on -| ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | bridge-domain (L2BD) switching combined with MAC learning enabled; -| ... | VXLAN tunnels are configured between L2BDs on DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent -| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG -| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC7348. - -*** Variables *** -| ${vni_1}= | 23 -| ${vni_2}= | 35 - -| ${bd_id1}= | 10 -| ${bd_id2}= | 20 -| ${bd_id3}= | 30 -| ${shg1}= | 1 -| ${shg2}= | 2 - -| ${ip4_addr1}= | 172.16.0.1 -| ${ip4_addr2}= | 172.16.0.2 -| ${ip4_prefix}= | 24 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv4 tunnels switch ICMPv4 between TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on \ -| | ... | DUT1-DUT2; Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 and DUT2 -| | ... | configure two i/fs into L2BD with MAC learning. [Ver] Make TG -| | ... | verify ICMPv4 Echo Req pkts are switched thru DUT1 and DUT2 in -| | ... | both directions and are correct on receive. [Ref] RFC7348. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${dut1_to_dut2_name}= | Get interface name | ${dut1_node} | ${dut1_to_dut2} -| | ${dut2_to_dut1_name}= | Get interface name | ${dut2_node} | ${dut2_to_dut1} -| | And Configure IP addresses and neighbors on interfaces | ${dut1_node} | ${dut1_to_dut2_name} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1_name} | ${NONE} -| | ${dut1s_vxlan}= | When Create VXLAN interface | ${dut1_node} | ${vni_1} -| | | ... | ${dut1s_ip_address} | ${dut2s_ip_address} -| | And Add interfaces to L2BD | ${dut1_node} | ${bd_id1} -| | ... | ${dut1_to_tg} | ${dut1s_vxlan} -| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${vni_1} -| | | ... | ${dut2s_ip_address} | ${dut1s_ip_address} -| | And Add interfaces to L2BD | ${dut2_node} | ${bd_id1} -| | ... | ${dut2_to_tg} | ${dut2s_vxlan} -| | Then Send ICMPv4 bidirectionally and verify received packets -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/func/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot b/tests/func/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot deleted file mode 100644 index 83985cdb00..0000000000 --- a/tests/func/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot +++ /dev/null @@ -1,66 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/vxlan.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Resource | resources/libraries/robot/l2_xconnect.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *RFC7348 VXLAN: L2 cross-connect with VXLAN test cases* -| ... -| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on -| ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | cross-connect (L2XC) switching; VXLAN tunnels are configured between -| ... | L2XCs on DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets -| ... | are sent in both directions by TG on links to DUT1 and DUT2; on receive -| ... | TG verifies packets for correctness and their IPv4 src-addr, dst-addr -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC7348. - -*** Variables *** -| ${VNI}= | 24 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2XC and VXLANoIPv4 tunnels switch ICMPv4 between TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on \ -| | ... | [Ref] RFC7348.DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On -| | ... | DUT1 and DUT2 configure L2 cross-connect (L2XC), each with one -| | ... | interface to TG and one VXLAN tunnel interface towards the other -| | ... | DUT. [Ver] Make TG send ICMPv4 Echo Req between two of its -| | ... | interfaces; verify all packets are received. [Ref] RFC7348. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${dut1_to_dut2_name}= | Get interface name | ${dut1_node} | ${dut1_to_dut2} -| | ${dut2_to_dut1_name}= | Get interface name | ${dut2_node} | ${dut2_to_dut1} -| | And Configure IP addresses and neighbors on interfaces -| | ... | ${dut1_node} | ${dut1_to_dut2_name} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1_name} | ${NONE} -| | ${dut1s_vxlan}= | When Create VXLAN interface | ${dut1_node} | ${VNI} -| | | ... | ${dut1s_ip_address} | ${dut2s_ip_address} -| | And Configure L2XC | ${dut1_node} | ${dut1_to_tg} | ${dut1s_vxlan} -| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${VNI} -| | | ... | ${dut2s_ip_address} | ${dut1s_ip_address} -| | And Configure L2XC | ${dut2_node} | ${dut2_to_tg} | ${dut2s_vxlan} -| | Then Send ICMPv4 bidirectionally and verify received packets -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot b/tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot deleted file mode 100644 index 429d9a3353..0000000000 --- a/tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot +++ /dev/null @@ -1,119 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/vxlan.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/double_qemu_setup.robot -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPv6Setup -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV -| Test Setup | Set up functional test -| Test Teardown | Run Keywords | Tear down functional test -| ... | AND | Run keyword | Tear down QEMU | ${dut1_node} -| ... | ${${qemu1}} | ${qemu1} -| ... | AND | Run keyword | Tear down QEMU | ${dut2_node} -| ... | ${${qemu2}} | ${qemu2} -| Documentation | *L2BD with VM combined with VXLAN test cases - IPv6* -| ... -| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on -| ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUTn for L2 switching of IPv6. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | bridge-domain (L2BD) switching combined with MAC learning enabled; -| ... | VXLAN tunnels are configured between L2BDs on DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent -| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG -| ... | verifies packets for correctness and their IPv6 src-addr, dst-addr -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC7348. - -*** Variables *** -| ${vni_1}= | 23 - -| ${bd_id1}= | 10 -| ${bd_id2}= | 20 - -| ${ip6_addr1}= | 3ffe:64::1 -| ${ip6_addr2}= | 3ffe:64::2 -| ${ip6_prefix}= | 64 - -| ${sock1}= | /tmp/sock1 -| ${sock2}= | /tmp/sock2 - -| ${qemu1}= | qemu_instance_1 -| ${qemu2}= | qemu_instance_2 - -| ${dut1_vhost1}= | dut1_vhost_if1 -| ${dut1_vhost2}= | dut1_vhost_if2 -| ${dut2_vhost1}= | dut2_vhost_if1 -| ${dut2_vhost2}= | dut2_vhost_if2 - -*** Test Cases *** -| TC01:DUT1 and DUT2 with two L2BDs and VXLANoIPv6 tunnel switch ICMPv6 between TG links and VM links -| | [Documentation] -| | ... | [Top] TG-DUT1-VM-DUT1-DUT2-VM-DUT2-TG. -| | ... | [Enc] Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on DUT1-DUT2; Eth-IPv4-ICMPv4 -| | ... | on TG-DUTn and DUTn=VM. -| | ... | [Cfg] On both DUTs configure two L2BDs (MAC learning enabled); first -| | ... | L2BD with untagged interface to TG and vhost-user interface to local -| | ... | VM, second one with vhost-user interface to local VM and VXLAN -| | ... | interface towards the other DUT. Configure linux bridge on both VMs -| | ... | to pass traffic between both vhost-user interfaces. -| | ... | [Ver] Make TG send ICMPv6 Echo Req between two of its interfaces to -| | ... | be switched by DUT1 and DUT2; verify packets are switched between -| | ... | these TG interfaces. -| | ... | [Ref] RFC7348. -| | [Tags] | VPP_VM_ENV -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | When Configure vhost interfaces for L2BD forwarding | ${dut1_node} -| | ... | ${sock1} -| | ... | ${sock2} -| | ... | ${dut1_vhost1} -| | ... | ${dut1_vhost2} -| | And Configure vhost interfaces for L2BD forwarding | ${dut2_node} -| | ... | ${sock1} -| | ... | ${sock2} -| | ... | ${dut2_vhost1} -| | ... | ${dut2_vhost2} -| | And Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} -| | ... | ${sock2} | ${qemu1} -| | And Configure VM for vhost L2BD forwarding | ${dut2_node} | ${sock1} -| | ... | ${sock2} | ${qemu2} -| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr1} -| | ... | ${ip6_prefix} -| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr2} -| | ... | ${ip6_prefix} -| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr2} -| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr1} -| | And Vpp All RA Suppress Link Layer | ${nodes} -| | ${dut1s_vxlan}= | And Create VXLAN interface | ${dut1_node} | ${vni_1} -| | | ... | ${ip6_addr1} | ${ip6_addr2} -| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${vni_1} -| | | ... | ${ip6_addr2} | ${ip6_addr1} -| | And Add interfaces to L2BD | ${dut1_node} | ${bd_id1} -| | ... | ${dut1_to_tg} | ${${dut1_vhost1}} -| | And Add interfaces to L2BD | ${dut1_node} | ${bd_id2} -| | ... | ${dut1s_vxlan} | ${${dut1_vhost2}} -| | And Add interfaces to L2BD | ${dut2_node} | ${bd_id1} -| | ... | ${dut2_to_tg} | ${${dut2_vhost1}} -| | And Add interfaces to L2BD | ${dut2_node} | ${bd_id2} -| | ... | ${dut2s_vxlan} | ${${dut2_vhost2}} -| | Then Send ICMPv6 bidirectionally and verify received packets -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot b/tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot deleted file mode 100644 index f817baa3a6..0000000000 --- a/tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot +++ /dev/null @@ -1,80 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/vxlan.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/double_qemu_setup.robot -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPv6Setup -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *Bridge-domain with VXLAN test cases - IPv6* -| ... -| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on -| ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUTn for L2 switching of IPv6. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | bridge-domain (L2BD) switching combined with MAC learning enabled; -| ... | VXLAN tunnels are configured between L2BDs on DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent -| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG -| ... | verifies packets for correctness and their IPv6 src-addr, dst-addr -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC7348. - -*** Variables *** -| ${vni_1}= | 23 - -| ${bd_id1}= | 10 - -| ${ip6_addr1}= | 3ffe:64::1 -| ${ip6_addr2}= | 3ffe:64::2 -| ${ip6_prefix}= | 64 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv6 tunnels switch ICMPv6 between TG links -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG.[Enc] Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on \ -| | ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUTn. [Cfg] On DUT1 and DUT2 -| | ... | configure L2 bridge-domain (MAC learning enabled), each with one -| | ... | interface to TG and one VXLAN tunnel interface towards the other -| | ... | DUT. [Ver] Make TG send ICMPv6 Echo Req between two of its -| | ... | interfaces to be switched by DUT1 and DUT2; verify all packets -| | ... | are received. [Ref] RFC7348. -| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr1} -| | ... | ${ip6_prefix} -| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr2} -| | ... | ${ip6_prefix} -| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr2} -| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr1} -| | And Vpp All RA Suppress Link Layer | ${nodes} -| | ${dut1s_vxlan}= | When Create VXLAN interface | ${dut1_node} | ${vni_1} -| | | ... | ${ip6_addr1} | ${ip6_addr2} -| | And Add interfaces to L2BD | ${dut1_node} | ${bd_id1} -| | ... | ${dut1_to_tg} | ${dut1s_vxlan} -| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${vni_1} -| | | ... | ${ip6_addr2} | ${ip6_addr1} -| | And Add interfaces to L2BD | ${dut2_node} | ${bd_id1} -| | ... | ${dut2_to_tg} | ${dut2s_vxlan} -| | Then Send ICMPv6 bidirectionally and verify received packets -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/func/vxlan/eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot b/tests/func/vxlan/eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot deleted file mode 100644 index 8ae7286583..0000000000 --- a/tests/func/vxlan/eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot +++ /dev/null @@ -1,200 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/vxlan.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/double_qemu_setup.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *L2BD with SHG combined with VXLAN test cases - IPv4* -| ... -| ... | *[Top] Network topologies:* TG=DUT1=DUT2=TG 3-node circular topology -| ... | with double parallel links. -| ... | *[Enc] Packet encapsulations:* Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on -| ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | bridge-domain (L2BD) switching combined with MAC learning enabled -| ... | and Split Horizon Groups (SHG); VXLAN tunnels are configured -| ... | between L2BDs on DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent -| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG -| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC7348. - -*** Variables *** -| ${vni_1}= | 23 -| ${vni_2}= | 35 - -| ${bd_id1}= | 10 -| ${bd_id2}= | 20 -| ${bd_id3}= | 30 -| ${shg1}= | 1 -| ${shg2}= | 2 - -| ${ip4_addr1}= | 172.16.0.1 -| ${ip4_addr2}= | 172.16.0.2 -| ${ip4_prefix}= | 24 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv4 tunnels in SHG switch ICMPv4 between TG links -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG. [Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on \ -| | ... | DUT1-DUT2; Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 configure L2 -| | ... | bridge-domain (MAC learning enabled) with two untagged interfaces -| | ... | to TG and two VXLAN interfaces towards the DUT2 and put both VXLAN -| | ... | interfaces into the same Split-Horizon-Group (SHG). On DUT2 configure -| | ... | two L2 bridge-domain (MAC learning enabled), each with one untagged -| | ... | interface to TG and one VXLAN interface towards the DUT1. [Ver] Make -| | ... | TG send ICMPv4 Echo Reqs between all four of its interfaces to be -| | ... | switched by DUT1 and DUT2; verify packets are not switched between -| | ... | TG interfaces connected to DUT2 that are isolated by SHG on DUT1. -| | ... | [Ref] RFC7348. -| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO -| | Given Configure path for 3-node BD-SHG test | ${nodes['TG']} -| | ... | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} -| | And Set interfaces in 3-node BD-SHG test up -| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr1} -| | ... | ${ip4_prefix} -| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr2} -| | ... | ${ip4_prefix} -| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr2} -| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr1} -| | ${dut1s_vxlan1}= | When Create VXLAN interface | ${dut1_node} | ${vni_1} -| | | ... | ${ip4_addr1} | ${ip4_addr2} -| | ${dut1s_vxlan2}= | And Create VXLAN interface | ${dut1_node} | ${vni_2} -| | | ... | ${ip4_addr1} | ${ip4_addr2} -| | ${dut2s_vxlan1}= | And Create VXLAN interface | ${dut2_node} | ${vni_1} -| | | ... | ${ip4_addr2} | ${ip4_addr1} -| | ${dut2s_vxlan2}= | And Create VXLAN interface | ${dut2_node} | ${vni_2} -| | | ... | ${ip4_addr2} | ${ip4_addr1} -| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan1} | up -| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan2} | up -| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan1} | up -| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan2} | up -| | And Vpp Node Interfaces Ready Wait | ${dut1_node} -| | And Vpp Node Interfaces Ready Wait | ${dut2_node} -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if1} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1s_vxlan1} -| | ... | ${bd_id1} | ${shg1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1s_vxlan2} -| | ... | ${bd_id1} | ${shg1} -| | And Create bridge domain | ${dut2_node} | ${bd_id2} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if1} -| | ... | ${bd_id2} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2s_vxlan1} -| | ... | ${bd_id2} -| | And Create bridge domain | ${dut2_node} | ${bd_id3} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if2} -| | ... | ${bd_id3} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2s_vxlan2} -| | ... | ${bd_id3} -| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if1} -| | ... | ${tg_to_dut2_if1} -| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if1} -| | ... | ${tg_to_dut2_if2} -| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if2} -| | ... | ${tg_to_dut2_if1} -| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if2} -| | ... | ${tg_to_dut2_if2} -| | And Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMPv4 bidirectionally and verify received packets -| | | ... | ${tg_node} | ${tg_to_dut2_if1} -| | | ... | ${tg_to_dut2_if2} - -| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv4 tunnels in different SHGs switch ICMPv4 between TG links -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG.[Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on \ -| | ... | DUT1-DUT2; Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 configure L2 -| | ... | bridge-domain (MAC learning enabled) with two untagged interfaces -| | ... | to TG and two VXLAN interfaces towards the DUT2 and put both VXLAN -| | ... | interfaces into the different Split-Horizon-Group (SHGs). On DUT2 -| | ... | configure two L2 bridge-domain (MAC learning enabled), each with one -| | ... | untagged interface to TG and one VXLAN interface towards the DUT1. -| | ... | [Ver] Make TG send ICMPv4 Echo Req between all four of its interfaces -| | ... | to be switched by DUT1 and DUT2; verify packets are switched between -| | ... | all TG interfaces. [Ref] RFC7348. -| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO -| | Given Configure path for 3-node BD-SHG test | ${nodes['TG']} -| | ... | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} -| | And Set interfaces in 3-node BD-SHG test up -| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr1} -| | ... | ${ip4_prefix} -| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr2} -| | ... | ${ip4_prefix} -| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr2} -| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr1} -| | ${dut1s_vxlan1}= | When Create VXLAN interface | ${dut1_node} | ${vni_1} -| | | ... | ${ip4_addr1} | ${ip4_addr2} -| | ${dut1s_vxlan2}= | And Create VXLAN interface | ${dut1_node} | ${vni_2} -| | | ... | ${ip4_addr1} | ${ip4_addr2} -| | ${dut2s_vxlan1}= | And Create VXLAN interface | ${dut2_node} | ${vni_1} -| | | ... | ${ip4_addr2} | ${ip4_addr1} -| | ${dut2s_vxlan2}= | And Create VXLAN interface | ${dut2_node} | ${vni_2} -| | | ... | ${ip4_addr2} | ${ip4_addr1} -| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan1} | up -| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan2} | up -| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan1} | up -| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan2} | up -| | And Vpp Node Interfaces Ready Wait | ${dut1_node} -| | And Vpp Node Interfaces Ready Wait | ${dut2_node} -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if1} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1s_vxlan1} -| | ... | ${bd_id1} | ${shg1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1s_vxlan2} -| | ... | ${bd_id1} | ${shg2} -| | And Create bridge domain | ${dut2_node} | ${bd_id2} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if1} -| | ... | ${bd_id2} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2s_vxlan1} -| | ... | ${bd_id2} -| | And Create bridge domain | ${dut2_node} | ${bd_id3} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if2} -| | ... | ${bd_id3} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2s_vxlan2} -| | ... | ${bd_id3} -| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if1} -| | ... | ${tg_to_dut2_if1} -| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if1} -| | ... | ${tg_to_dut2_if2} -| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if2} -| | ... | ${tg_to_dut2_if1} -| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if2} -| | ... | ${tg_to_dut2_if2} -| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut2_if1} -| | ... | ${tg_to_dut2_if2} diff --git a/tests/func/vxlan/eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot b/tests/func/vxlan/eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot deleted file mode 100644 index e4dec5bd1e..0000000000 --- a/tests/func/vxlan/eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot +++ /dev/null @@ -1,203 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/testing_path.robot -| Resource | resources/libraries/robot/vxlan.robot -| Resource | resources/libraries/robot/l2_traffic.robot -| Resource | resources/libraries/robot/qemu.robot -| Resource | resources/libraries/robot/double_qemu_setup.robot -| Library | resources.libraries.python.Trace -| Library | resources.libraries.python.IPv6Setup -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *L2BD with SHG combined with VXLAN test cases - IPv6* -| ... -| ... | *[Top] Network topologies:* TG=DUT1=DUT2=TG 3-node circular topology -| ... | with double parallel links. -| ... | *[Enc] Packet encapsulations:* th-IPv6-VXLAN-Eth-IPv6-ICMPv6 on -| ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUTn for L2 switching of IPv6. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | bridge-domain (L2BD) switching combined with MAC learning enabled -| ... | and Split Horizon Groups (SHG); VXLAN tunnels are configured -| ... | between L2BDs on DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent -| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG -| ... | verifies packets for correctness and their IPv6 src-addr, dst-addr -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC7348. - -*** Variables *** -| ${vni_1}= | 23 -| ${vni_2}= | 35 - -| ${bd_id1}= | 10 -| ${bd_id2}= | 20 -| ${bd_id3}= | 30 -| ${shg1}= | 1 -| ${shg2}= | 2 - -| ${ip6_addr1}= | 3ffe:64::1 -| ${ip6_addr2}= | 3ffe:64::2 -| ${ip6_prefix}= | 64 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv6 tunnels in SHG switch ICMPv6 between TG links -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG. [Enc] Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on \ -| | ... | DUT1-DUT2; Eth-IPv6-ICMPv6 on TG-DUTn. [Cfg] On DUT1 configure L2 -| | ... | bridge-domain (MAC learning enabled) with two untagged interfaces -| | ... | to TG and two VXLAN interfaces towards the DUT2 and put both VXLAN -| | ... | interfaces into the same Split-Horizon-Group (SHG). On DUT2 configure -| | ... | two L2 bridge-domain (MAC learning enabled), each with one untagged -| | ... | interface to TG and one VXLAN interface towards the DUT1. [Ver] Make -| | ... | TG send ICMPv6 Echo Reqs between all four of its interfaces to be -| | ... | switched by DUT1 and DUT2; verify packets are not switched between -| | ... | TG interfaces connected to DUT2 that are isolated by SHG on DUT1. -| | ... | [Ref] RFC7348. -| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO -| | Given Configure path for 3-node BD-SHG test | ${nodes['TG']} -| | ... | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} -| | And Set interfaces in 3-node BD-SHG test up -| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr1} -| | ... | ${ip6_prefix} -| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr2} -| | ... | ${ip6_prefix} -| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr2} -| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr1} -| | And Vpp All RA Suppress Link Layer | ${nodes} -| | ${dut1s_vxlan1}= | When Create VXLAN interface | ${dut1_node} | ${vni_1} -| | | ... | ${ip6_addr1} | ${ip6_addr2} -| | ${dut1s_vxlan2}= | And Create VXLAN interface | ${dut1_node} | ${vni_2} -| | | ... | ${ip6_addr1} | ${ip6_addr2} -| | ${dut2s_vxlan1}= | And Create VXLAN interface | ${dut2_node} | ${vni_1} -| | | ... | ${ip6_addr2} | ${ip6_addr1} -| | ${dut2s_vxlan2}= | And Create VXLAN interface | ${dut2_node} | ${vni_2} -| | | ... | ${ip6_addr2} | ${ip6_addr1} -| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan1} | up -| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan2} | up -| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan1} | up -| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan2} | up -| | And Vpp Node Interfaces Ready Wait | ${dut1_node} -| | And Vpp Node Interfaces Ready Wait | ${dut2_node} -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if1} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1s_vxlan1} -| | ... | ${bd_id1} | ${shg1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1s_vxlan2} -| | ... | ${bd_id1} | ${shg1} -| | And Create bridge domain | ${dut2_node} | ${bd_id2} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if1} -| | ... | ${bd_id2} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2s_vxlan1} -| | ... | ${bd_id2} -| | And Create bridge domain | ${dut2_node} | ${bd_id3} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if2} -| | ... | ${bd_id3} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2s_vxlan2} -| | ... | ${bd_id3} -| | Then Send ICMPv6 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if1} -| | ... | ${tg_to_dut2_if1} -| | And Send ICMPv6 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if1} -| | ... | ${tg_to_dut2_if2} -| | And Send ICMPv6 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if2} -| | ... | ${tg_to_dut2_if1} -| | And Send ICMPv6 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if2} -| | ... | ${tg_to_dut2_if2} -| | And Run Keyword And Expect Error | ICMP echo Rx timeout -| | ... | Send ICMPv6 bidirectionally and verify received packets -| | | ... | ${tg_node} | ${tg_to_dut2_if1} -| | | ... | ${tg_to_dut2_if2} - -| TC02: DUT1 and DUT2 with L2BD and VXLANoIPv6 tunnels in different SHGs switch ICMPv6 between TG links -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG.[Enc] Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on \ -| | ... | DUT1-DUT2; Eth-IPv6-ICMPv6 on TG-DUTn. [Cfg] On DUT1 configure L2 -| | ... | bridge-domain (MAC learning enabled) with two untagged interfaces -| | ... | to TG and two VXLAN interfaces towards the DUT2 and put both VXLAN -| | ... | interfaces into the different Split-Horizon-Group (SHGs). On DUT2 -| | ... | configure two L2 bridge-domain (MAC learning enabled), each with one -| | ... | untagged interface to TG and one VXLAN interface towards the DUT1. -| | ... | [Ver] Make TG send ICMPv6 Echo Req between all four of its interfaces -| | ... | to be switched by DUT1 and DUT2; verify packets are switched between -| | ... | all TG interfaces. [Ref] RFC7348. -| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO -| | Given Configure path for 3-node BD-SHG test | ${nodes['TG']} -| | ... | ${nodes['DUT1']} -| | ... | ${nodes['DUT2']} -| | And Set interfaces in 3-node BD-SHG test up -| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr1} -| | ... | ${ip6_prefix} -| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr2} -| | ... | ${ip6_prefix} -| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr2} -| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr1} -| | And Vpp All RA Suppress Link Layer | ${nodes} -| | ${dut1s_vxlan1}= | When Create VXLAN interface | ${dut1_node} | ${vni_1} -| | | ... | ${ip6_addr1} | ${ip6_addr2} -| | ${dut1s_vxlan2}= | And Create VXLAN interface | ${dut1_node} | ${vni_2} -| | | ... | ${ip6_addr1} | ${ip6_addr2} -| | ${dut2s_vxlan1}= | And Create VXLAN interface | ${dut2_node} | ${vni_1} -| | | ... | ${ip6_addr2} | ${ip6_addr1} -| | ${dut2s_vxlan2}= | And Create VXLAN interface | ${dut2_node} | ${vni_2} -| | | ... | ${ip6_addr2} | ${ip6_addr1} -| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan1} | up -| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan2} | up -| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan1} | up -| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan2} | up -| | And Vpp Node Interfaces Ready Wait | ${dut1_node} -| | And Vpp Node Interfaces Ready Wait | ${dut2_node} -| | And Create bridge domain | ${dut1_node} | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if1} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if2} -| | ... | ${bd_id1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1s_vxlan1} -| | ... | ${bd_id1} | ${shg1} -| | And Add interface to bridge domain | ${dut1_node} | ${dut1s_vxlan2} -| | ... | ${bd_id1} | ${shg2} -| | And Create bridge domain | ${dut2_node} | ${bd_id2} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if1} -| | ... | ${bd_id2} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2s_vxlan1} -| | ... | ${bd_id2} -| | And Create bridge domain | ${dut2_node} | ${bd_id3} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if2} -| | ... | ${bd_id3} -| | And Add interface to bridge domain | ${dut2_node} | ${dut2s_vxlan2} -| | ... | ${bd_id3} -| | Then Send ICMPv6 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if1} -| | ... | ${tg_to_dut2_if1} -| | And Send ICMPv6 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if1} -| | ... | ${tg_to_dut2_if2} -| | And Send ICMPv6 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if2} -| | ... | ${tg_to_dut2_if1} -| | And Send ICMPv6 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut1_if2} -| | ... | ${tg_to_dut2_if2} -| | And Send ICMPv6 bidirectionally and verify received packets | ${tg_node} -| | ... | ${tg_to_dut2_if1} -| | ... | ${tg_to_dut2_if2} diff --git a/tests/nsh_sfc/func/__init__.robot b/tests/nsh_sfc/func/__init__.robot new file mode 100644 index 0000000000..707244ccb4 --- /dev/null +++ b/tests/nsh_sfc/func/__init__.robot @@ -0,0 +1,20 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Library | resources.libraries.python.SFC.SetupSFCTest +| Suite Setup | Run Keywords | Setup NSH SFC test | ${nodes} +| ... | AND | Setup All DUTs | ${nodes} +| ... | AND | Update All Interface Data On All Nodes | ${nodes} diff --git a/tests/nsh_sfc/func/proxy/eth2p-ethip4-nsh-proxy-inbound-func.robot b/tests/nsh_sfc/func/proxy/eth2p-ethip4-nsh-proxy-inbound-func.robot new file mode 100644 index 0000000000..a85b539a83 --- /dev/null +++ b/tests/nsh_sfc/func/proxy/eth2p-ethip4-nsh-proxy-inbound-func.robot @@ -0,0 +1,85 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/nsh_sfc/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST +| Suite Setup | Run Keywords +| ... | Configure all DUTs before test | AND +| ... | Configure all TGs for traffic script | AND +| ... | Update All Interface Data On All Nodes | ${nodes} | AND +| ... | Setup DUT nodes for 'Proxy Inbound' functional testing +| Test Setup | Run Keywords | Save VPP PIDs | AND +| ... | Reset VAT History On All DUTs | ${nodes} | AND +| ... | Clear interface counters on all vpp nodes in topology | ${nodes} +| Test Teardown | Run Keywords +| ... | Show packet trace on all DUTs | ${nodes} | AND +| ... | Show VAT History On All DUTs | ${nodes} | AND +| ... | Verify VPP PID in Teardown +| Documentation | *NSH SFC Proxy Inbound test cases* +| ... +| ... | Test the SFC Proxy Inbound functional. DUT run the VPP with NSH +| ... | SFC Plugin, TG send a VxLAN-GPE+NSH packet to the DUT, +| ... | if the packet match the SFC Proxy inbound rules, the SFC Proxy will +| ... | pop the VxLAN-GPE and NSH protocol, then encapsulate with the +| ... | VxLAN protocol. DUT will loopback the packet to the TG. +| ... | The TG will capture this VxLAN packet and check the packet +| ... | field is correct. + +*** Test Cases *** +| TC01: NSH SFC Proxy Inbound functional test with 152B frame size +| | [Documentation] +| | ... | Make TG send 152 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ +| | ... | Make TG verify SFC Proxy Inbound functional is correct. +| | ${frame_size}= | Set Variable | ${152} +| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Inbound" test + +| TC02: NSH SFC Proxy Inbound functional test with 256B frame size +| | [Documentation] +| | ... | Make TG send 256 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ +| | ... | Make TG verify SFC Proxy Inbound functional is correct. +| | ${frame_size}= | Set Variable | ${256} +| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Inbound" test + +| TC03: NSH SFC Proxy Inbound functional test with 512B frame size +| | [Documentation] +| | ... | Make TG send 512 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ +| | ... | Make TG verify SFC Proxy Inbound functional is correct. +| | ${frame_size}= | Set Variable | ${512} +| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Inbound" test + +| TC04: NSH SFC Proxy Inbound functional test with 1024B frame size +| | [Documentation] +| | ... | Make TG send 1024 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ +| | ... | Make TG verify SFC Proxy Inbound functional is correct. +| | ${frame_size}= | Set Variable | ${1024} +| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Inbound" test + +| TC05: NSH SFC Proxy Inbound functional test with 1280B frame size +| | [Documentation] +| | ... | Make TG send 1280 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ +| | ... | Make TG verify SFC Proxy Inbound functional is correct. +| | ${frame_size}= | Set Variable | ${1280} +| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Inbound" test + +| TC06: NSH SFC Proxy Inbound functional test with 1518B frame size +| | [Documentation] +| | ... | Make TG send 1518 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ +| | ... | Make TG verify SFC Proxy Inbound functional is correct. +| | ${frame_size}= | Set Variable | ${1518} +| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Inbound" test diff --git a/tests/nsh_sfc/func/proxy/eth2p-ethip4-nsh-proxy-outbound-func.robot b/tests/nsh_sfc/func/proxy/eth2p-ethip4-nsh-proxy-outbound-func.robot new file mode 100644 index 0000000000..005272b1f9 --- /dev/null +++ b/tests/nsh_sfc/func/proxy/eth2p-ethip4-nsh-proxy-outbound-func.robot @@ -0,0 +1,86 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/nsh_sfc/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST +| Suite Setup | Run Keywords +| ... | Configure all DUTs before test | AND +| ... | Configure all TGs for traffic script | AND +| ... | Update All Interface Data On All Nodes | ${nodes} | AND +| ... | Setup DUT nodes for 'Proxy Outbound' functional testing +| Test Setup | Run Keywords | Save VPP PIDs | AND +| ... | Reset VAT History On All DUTs | ${nodes} | AND +| ... | Clear interface counters on all vpp nodes in topology | ${nodes} +| Test Teardown | Run Keywords +| ... | Show packet trace on all DUTs | ${nodes} | AND +| ... | Show VAT History On All DUTs | ${nodes} | AND +| ... | Verify VPP PID in Teardown +| Documentation | *NSH SFC Proxy Outbound test cases* +| ... +| ... | Test the SFC Proxy Outbound functional. DUT run the VPP with NSH +| ... | SFC Plugin, TG send a VxLAN packet to the DUT, +| ... | if the packet match the SFC Proxy outbound rules, the SFC Proxy will +| ... | push the NSH protocol, then encapsulate with the VxLAN-GPE protocol. +| ... | DUT will loopback the packet to the TG. +| ... | The TG will capture this VxLAN-GPE+NSH packet and check the packet +| ... | field is correct. + + +*** Test Cases *** +| TC01: NSH SFC Proxy Outbound functional test with 128B frame size +| | [Documentation] +| | ... | Make TG send 128 Bytes VxLAN packet to DUT ingress interface.\ +| | ... | Make TG verify SFC Proxy Outbound functional is correct. +| | ${frame_size}= | Set Variable | ${128} +| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Outbound" test + +| TC02: NSH SFC Proxy Outbound functional test with 256B frame size +| | [Documentation] +| | ... | Make TG send 256 Bytes VxLAN packet to DUT ingress interface.\ +| | ... | Make TG verify SFC Proxy Outbound functional is correct. +| | ${frame_size}= | Set Variable | ${256} +| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Outbound" test + +| TC03: NSH SFC Proxy Outbound functional test with 512B frame size +| | [Documentation] +| | ... | Make TG send 512 Bytes VxLAN packet to DUT ingress interface.\ +| | ... | Make TG verify SFC Proxy Outbound functional is correct. +| | ${frame_size}= | Set Variable | ${512} +| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Outbound" test + +| TC04: NSH SFC Proxy Outbound functional test with 1024B frame size +| | [Documentation] +| | ... | Make TG send 1024 Bytes VxLAN packet to DUT ingress interface.\ +| | ... | Make TG verify SFC Proxy Outbound functional is correct. +| | ${frame_size}= | Set Variable | ${1024} +| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Outbound" test + +| TC05: NSH SFC Proxy Outbound functional test with 1280B frame size +| | [Documentation] +| | ... | Make TG send 1280 Bytes VxLAN packet to DUT ingress interface.\ +| | ... | Make TG verify SFC Proxy Outbound functional is correct. +| | ${frame_size}= | Set Variable | ${1280} +| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Outbound" test + +| TC06: NSH SFC Proxy Outbound functional test with 1518B frame size +| | [Documentation] +| | ... | Make TG send 1518 Bytes VxLAN packet to DUT ingress interface.\ +| | ... | Make TG verify SFC Proxy Outbound functional is correct. +| | ${frame_size}= | Set Variable | ${1518} +| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "Proxy Outbound" test diff --git a/tests/nsh_sfc/func/sff/eth2p-ethip4-sfc-sff-func.robot b/tests/nsh_sfc/func/sff/eth2p-ethip4-sfc-sff-func.robot new file mode 100644 index 0000000000..1356c8c2da --- /dev/null +++ b/tests/nsh_sfc/func/sff/eth2p-ethip4-sfc-sff-func.robot @@ -0,0 +1,85 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/nsh_sfc/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST +| Suite Setup | Run Keywords +| ... | Configure all DUTs before test | AND +| ... | Configure all TGs for traffic script | AND +| ... | Update All Interface Data On All Nodes | ${nodes} | AND +| ... | Setup DUT nodes for 'SFF' functional testing +| Test Setup | Run Keywords | Save VPP PIDs | AND +| ... | Reset VAT History On All DUTs | ${nodes} | AND +| ... | Clear interface counters on all vpp nodes in topology | ${nodes} +| Test Teardown | Run Keywords +| ... | Show packet trace on all DUTs | ${nodes} | AND +| ... | Show VAT History On All DUTs | ${nodes} | AND +| ... | Verify VPP PID in Teardown +| Documentation | *NSH SFC SFF test cases* +| ... +| ... | Test the SFC Service Function Forward functional. DUT run the VPP +| ... | with NSH SFC Plugin, TG send a VxLAN-GPE+NSH packet to the DUT, +| ... | if the packet match the SFC SFF rules, the SFC SFF will +| ... | swap the VxLAN-GPE and NSH protocol. +| ... | DUT will loopback the packet to the TG. +| ... | The TG will capture this VxLAN-GPE+NSH packet and check the packet +| ... | field is correct. + +*** Test Cases *** +| TC01: NSH SFC SFF functional test with 152B frame size +| | [Documentation] +| | ... | Make TG send 152 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ +| | ... | Make TG verify SFC SFF functional is correct. +| | ${frame_size}= | Set Variable | ${152} +| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "SFF" test + +| TC02: NSH SFC SFF functional test with 256B frame size +| | [Documentation] +| | ... | Make TG send 256 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ +| | ... | Make TG verify SFC SFF functional is correct. +| | ${frame_size}= | Set Variable | ${256} +| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "SFF" test + +| TC03: NSH SFC SFF functional test with 512B frame size +| | [Documentation] +| | ... | Make TG send 512 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ +| | ... | Make TG verify SFC SFF functional is correct. +| | ${frame_size}= | Set Variable | ${512} +| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "SFF" test + +| TC04: NSH SFC SFF functional test with 1024B frame size +| | [Documentation] +| | ... | Make TG send 1024 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ +| | ... | Make TG verify SFC SFF functional is correct. +| | ${frame_size}= | Set Variable | ${1024} +| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "SFF" test + +| TC05: NSH SFC SFF functional test with 1280B frame size +| | [Documentation] +| | ... | Make TG send 1280 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ +| | ... | Make TG verify SFC SFF functional is correct. +| | ${frame_size}= | Set Variable | ${1280} +| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "SFF" test + +| TC06: NSH SFC SFF functional test with 1518B frame size +| | [Documentation] +| | ... | Make TG send 1518 Bytes VxLAN-GPE+NSH packet to DUT ingress interface.\ +| | ... | Make TG verify SFC SFF functional is correct. +| | ${frame_size}= | Set Variable | ${1518} +| | Node "${src_node}" interface "${src_port}" send "${frame_size}" Bytes packet to node "${dst_node}" interface "${dst_port}" for "SFF" test diff --git a/tests/nsh_sfc/sfc_scripts/install_sfc.sh b/tests/nsh_sfc/sfc_scripts/install_sfc.sh new file mode 100755 index 0000000000..265d4c153a --- /dev/null +++ b/tests/nsh_sfc/sfc_scripts/install_sfc.sh @@ -0,0 +1,114 @@ +#!/bin/bash + +set -x + +ROOTDIR=/tmp/openvpp-testing +PWDDIR=$(pwd) + +if_name1=$1 +if_name2=$2 + +VPP_VERSION=`cat ${ROOTDIR}/NSH_SFC_VER | grep VPP | awk -F'= ' '{print $2}'` +NSH_SFC_VERSION=`cat ${ROOTDIR}/NSH_SFC_VER | grep NSH_SFC | awk -F'= ' '{print $2}'` + +VPP_CODE_DIR=${ROOTDIR}/vpp_codes +NSH_SFC_CODE_DIR=${ROOTDIR}/nsh_sfc_codes + +#at first, we need to stop the vpp service if have +sudo service vpp stop + +#uninstall the vpp and nsh sfc plugin +#and git clone the vpp and nsh sfc plugin source codes +#then compile and install them in the dut nodes. +nsh_need_install=0 +sudo dpkg -l vpp-nsh-plugin >/dev/null 2>&1 +if [ $? -eq 0 ]; then + nsh_plugin_version=`dpkg -s vpp-nsh-plugin | grep Version | awk -F' ' '{print $2}'` + if [ "${nsh_plugin_version}" \< "${NSH_SFC_VERSION}" ]; then + sudo dpkg -P vpp-nsh-plugin vpp-nsh-plugin-dbg vpp-nsh-plugin-dev >/dev/null 2>&1 + test $? -eq 0 || exit 1 + nsh_need_install=1 + fi +else + nsh_need_install=1 +fi + +vpp_need_install=0 +sudo dpkg -l vpp >/dev/null 2>&1 +if [ $? -eq 0 ]; then + vpp_version=`dpkg -s vpp | grep Version | awk -F' ' '{print $2}'` + if [ "${vpp_version}" \< "${VPP_VERSION}" ]; then + sudo dpkg -P vpp vpp-dbg vpp-dev vpp-dpdk-dev vpp-dpdk-dkms vpp-lib \ + vpp-plugins vpp-python-api >/dev/null 2>&1 + test $? -eq 0 || exit 1 + vpp_need_install=1 + fi +else + vpp_need_install=1 +fi + +sleep 5 + +##begin to clone the vpp source code +if [ ${vpp_need_install} -eq 1 ]; then + sudo rm -rf ${VPP_CODE_DIR} + sudo mkdir -p ${VPP_CODE_DIR} + cd ${VPP_CODE_DIR} + git clone -b v${VPP_VERSION} https://gerrit.fd.io/r/vpp + + #compile the vpp code + cd ./vpp/build-root/ + make distclean + ./bootstrap.sh + make V=0 PLATFORM=vpp TAG=vpp install-deb + + #after that, install vpp + sudo dpkg -i *.deb + cd ${PWDDIR} +fi + +##begin to clone the nsh sfc source code +if [ ${nsh_need_install} -eq 1 ]; then + sudo rm -rf ${NSH_SFC_CODE_DIR} + sudo mkdir -p ${NSH_SFC_CODE_DIR} + cd ${NSH_SFC_CODE_DIR} + git clone -b v${NSH_SFC_VERSION} https://gerrit.fd.io/r/nsh_sfc + + #compile the nsh sfc code + cd ./nsh_sfc/nsh-plugin/ + sudo rm -rf build + sudo ./build.sh + + #after that, install the nsh sfc plugin + cd ./packaging/ + sudo dpkg -i *.deb + cd ${PWDDIR} +fi + +#check and setup the hugepages +SYS_HUGEPAGE=$(cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages) +if [ ${SYS_HUGEPAGE} -lt 1024 ]; then + MOUNT=$(mount | grep /mnt/huge) + while [ "${MOUNT}" != "" ] + do + sudo umount /mnt/huge + sleep 1 + MOUNT=$(mount | grep /mnt/huge) + done + + echo 2048 | sudo tee /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages + echo 2048 | sudo tee /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages + + sudo mkdir -p /mnt/huge + sudo mount -t hugetlbfs nodev /mnt/huge/ + test $? -eq 0 || exit 1 +fi + +#check and set the max map count +SYS_MAP=$(cat /proc/sys/vm/max_map_count) +if [ ${SYS_MAP} -lt 200000 ]; then + echo 200000 | sudo tee /proc/sys/vm/max_map_count +fi + +#after all, we can start the vpp service now +sudo service vpp start diff --git a/tests/nsh_sfc/sfc_scripts/set_nsh_proxy_inbound.sh b/tests/nsh_sfc/sfc_scripts/set_nsh_proxy_inbound.sh new file mode 100755 index 0000000000..453de3f8de --- /dev/null +++ b/tests/nsh_sfc/sfc_scripts/set_nsh_proxy_inbound.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +set -x + +sudo service vpp restart +sleep 5 + +sudo vppctl set int state $1 up +sleep 10 +sudo vppctl set int ip table $1 0 +sudo vppctl set int ip address $1 192.168.50.76/24 + +sudo vppctl create vxlan-gpe tunnel local 192.168.50.76 remote 192.168.50.72 vni 9 next-nsh encap-vrf-id 0 decap-vrf-id 0 +sudo vppctl set int l2 bridge vxlan_gpe_tunnel0 1 1 + +sudo vppctl create vxlan tunnel src 192.168.50.76 dst 192.168.50.71 vni 1 encap-vrf-id 0 decap-next node nsh-proxy +sudo vppctl set int l2 bridge vxlan_tunnel0 1 1 + +sudo vppctl create nsh entry nsp 185 nsi 255 md-type 1 c1 3232248395 c2 9 c3 3232248392 c4 50336437 next-ethernet +sudo vppctl create nsh entry nsp 185 nsi 254 md-type 1 c1 3232248395 c2 9 c3 3232248392 c4 50336437 next-ethernet + +sleep 2 +vxlan_gpe_index=`sudo vppctl sh int | grep "vxlan_gpe_tunnel0" | awk '{print $2}'` +vxlan_index=`sudo vppctl sh int | grep "vxlan_tunnel0" | awk '{print $2}'` +sudo vppctl create nsh map nsp 185 nsi 255 mapped-nsp 185 mapped-nsi 255 nsh_action pop encap-vxlan4-intf ${vxlan_index} +sudo vppctl create nsh map nsp 185 nsi 254 mapped-nsp 185 mapped-nsi 254 nsh_action push encap-vxlan-gpe-intf ${vxlan_gpe_index} + +sudo vppctl ip route add 192.168.50.72/24 via 192.168.50.76 +sudo vppctl set ip arp $1 192.168.50.71 $2 +sudo vppctl set ip arp $1 192.168.50.72 $2 + +sudo vppctl trace add dpdk-input 100 diff --git a/tests/nsh_sfc/sfc_scripts/set_nsh_proxy_outbound.sh b/tests/nsh_sfc/sfc_scripts/set_nsh_proxy_outbound.sh new file mode 100755 index 0000000000..304ed30cda --- /dev/null +++ b/tests/nsh_sfc/sfc_scripts/set_nsh_proxy_outbound.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +set -x + +sudo service vpp restart +sleep 5 + +sudo vppctl set int state $1 up +sleep 10 +sudo vppctl set int ip table $1 0 +sudo vppctl set int ip address $1 192.168.50.76/24 + +sudo vppctl create vxlan-gpe tunnel local 192.168.50.76 remote 192.168.50.71 vni 9 next-nsh encap-vrf-id 0 decap-vrf-id 0 +sudo vppctl set int l2 bridge vxlan_gpe_tunnel0 1 1 + +sudo vppctl create vxlan tunnel src 192.168.50.76 dst 192.168.50.72 vni 1 encap-vrf-id 0 decap-next node nsh-proxy +sudo vppctl set int l2 bridge vxlan_tunnel0 1 1 + +sudo vppctl create nsh entry nsp 185 nsi 255 md-type 1 c1 3232248395 c2 9 c3 3232248392 c4 50336437 next-ethernet +sudo vppctl create nsh entry nsp 185 nsi 254 md-type 1 c1 3232248395 c2 9 c3 3232248392 c4 50336437 next-ethernet + +sleep 2 +vxlan_gpe_index=`sudo vppctl sh int | grep "vxlan_gpe_tunnel0" | awk '{print $2}'` +vxlan_index=`sudo vppctl sh int | grep "vxlan_tunnel0" | awk '{print $2}'` +sudo vppctl create nsh map nsp 185 nsi 255 mapped-nsp 185 mapped-nsi 255 nsh_action pop encap-vxlan4-intf ${vxlan_index} +sudo vppctl create nsh map nsp 185 nsi 254 mapped-nsp 185 mapped-nsi 254 nsh_action push encap-vxlan-gpe-intf ${vxlan_gpe_index} + +sudo vppctl ip route add 192.168.50.72/24 via 192.168.50.76 +sudo vppctl set ip arp $1 192.168.50.71 $2 +sudo vppctl set ip arp $1 192.168.50.72 $2 + +sudo vppctl trace add dpdk-input 100 diff --git a/tests/nsh_sfc/sfc_scripts/set_sfc_sff.sh b/tests/nsh_sfc/sfc_scripts/set_sfc_sff.sh new file mode 100755 index 0000000000..03e2f0ade7 --- /dev/null +++ b/tests/nsh_sfc/sfc_scripts/set_sfc_sff.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +set -x + +sudo service vpp restart +sleep 5 + +sudo vppctl set int state $1 up +sleep 10 +sudo vppctl set int ip table $1 7 +sudo vppctl set int ip address $1 192.168.50.76/24 + +sudo vppctl create vxlan-gpe tunnel local 192.168.50.76 remote 192.168.50.71 vni 9 next-nsh encap-vrf-id 7 decap-vrf-id 7 +sudo vppctl set int l2 bridge vxlan_gpe_tunnel0 1 1 + +sudo vppctl create vxlan-gpe tunnel local 192.168.50.76 remote 192.168.50.72 vni 10 next-nsh encap-vrf-id 7 decap-vrf-id 7 +sudo vppctl set int l2 bridge vxlan_gpe_tunnel1 1 1 + +sudo vppctl create nsh entry nsp 185 nsi 255 md-type 1 c1 3232248395 c2 9 c3 3232248392 c4 50336437 next-ethernet +sudo vppctl create nsh entry nsp 185 nsi 254 md-type 1 c1 3232248395 c2 9 c3 3232248392 c4 50336437 next-ethernet + +sleep 2 +vxlan_gpe_index0=`sudo vppctl sh int | grep "vxlan_gpe_tunnel0" | awk '{print $2}'` +vxlan_gpe_index1=`sudo vppctl sh int | grep "vxlan_gpe_tunnel1" | awk '{print $2}'` +sudo vppctl create nsh map nsp 185 nsi 255 mapped-nsp 185 mapped-nsi 254 nsh_action swap encap-vxlan-gpe-intf ${vxlan_gpe_index0} + +sudo vppctl ip route add 192.168.50.71/32 via 192.168.50.76 $1 +sudo vppctl ip route add 192.168.50.72/32 via 192.168.50.76 $1 +sudo vppctl set ip arp fib-id 7 $1 192.168.50.71 $2 +sudo vppctl set ip arp fib-id 7 $1 192.168.50.72 $2 + +sudo vppctl trace add dpdk-input 100 diff --git a/tests/nsh_sfc/sfc_scripts/start_tcpdump.sh b/tests/nsh_sfc/sfc_scripts/start_tcpdump.sh new file mode 100755 index 0000000000..46f8217e26 --- /dev/null +++ b/tests/nsh_sfc/sfc_scripts/start_tcpdump.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +ROOTDIR=/tmp/openvpp-testing +PWDDIR=$(pwd) + +cd ${ROOTDIR}/nsh_sfc_tests/sfc_scripts/ +sudo rm -f temp_packet.pcap + +sudo /usr/sbin/tcpdump -i $1 -c 1 -w temp_packet.pcap dst host $2 & + +if [ ! $? -eq 0 ]; then + echo "Start the tcpdump failed!!!" + exit 1 +fi + +cd ${PWDDIR} diff --git a/tests/perf/10ge2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot b/tests/perf/10ge2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot deleted file mode 100644 index 7f025baa92..0000000000 --- a/tests/perf/10ge2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot +++ /dev/null @@ -1,288 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Cisco-VIC-1227 | ETH | L2BDMACLRN | BASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Cisco-VIC-1227 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput L2BD test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge-\ -| ... | domain and MAC learning enabled. DUT1 and DUT2 tested with 2p10GE NIC -| ... | Cisco-VIC-1227. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ -| ... | of packets transmitted. NDR and PDR are discovered for different\ -| ... | Ethernet L2 frame sizes using either binary search or linear search\ -| ... | algorithms with configured starting rate and final step that determines\ -| ... | throughput measurement resolution. Test packets are generated by TG on\ -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\ -| ... | (flow-group per direction, 253 flows per flow-group) with all packets\ -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\ -| ... | payload. MAC addresses are matching MAC addresses of the TG node\ -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Cisco-VIC-1227 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Keywords *** -| L2 Bridge Domain NDR Binary Search -| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} -| | # Test Variables required for test teardown -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${min_rate} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Documentation | [Cfg] DUT runs L2BD switching config with ${wt}\ -| | Set Test Documentation | thread, ${wt} phy core, ${rxq}\ | append=True -| | Set Test Documentation | receive queue per NIC port. | append=True -| | Set Test Documentation | [Ver] Find NDR for ${framesize} Byte\ | append=True -| | Set Test Documentation | frames using binary search start at\ | append=True -| | Set Test Documentation | 10GE linerate, step ${threshold}pps. | append=True -| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | Add PCI devices to DUTs in 3-node single link topology -| | Run Keyword If | ${framesize} < ${1522} | Add no multi seg to all DUTs -| | Apply startup configuration on all VPP DUTs -| | Initialize L2 bridge domain in 3-node circular topology -| | Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| L2 Bridge Domain PDR Binary Search -| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} -| | # Test Variables required for test teardown -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${min_rate} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Documentation | [Cfg] DUT runs L2BD switching config with ${wt}\ -| | Set Test Documentation | thread, ${wt} phy core, ${rxq}\ | append=True -| | Set Test Documentation | receive queue per NIC port. | append=True -| | Set Test Documentation | [Ver] Find PDR for ${framesize} Byte\ | append=True -| | Set Test Documentation | frames using binary search start at\ | append=True -| | Set Test Documentation | 10GE linerate, step ${threshold}pps, | append=True -| | Set Test Documentation | LT=${perf_pdr_loss_acceptance} | append=True -| | Set Test Documentation | ${perf_pdr_loss_acceptance_type}. | append=True -| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | Add PCI devices to DUTs in 3-node single link topology -| | Run Keyword If | ${framesize} < ${1522} | Add no multi seg to all DUTs -| | Apply startup configuration on all VPP DUTs -| | Initialize L2 bridge domain in 3-node circular topology -| | Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=1 | rxq=1 -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc02-64B-1t1c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=1 | rxq=1 -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc03-1518B-1t1c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=1 | rxq=1 -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc04-1518B-1t1c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=1 | rxq=1 -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc05-9000B-1t1c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${9000} | min_rate=${10000} | wt=1 | rxq=1 -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc06-9000B-1t1c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${9000} | min_rate=${10000} | wt=1 | rxq=1 -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc07-64B-2t2c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=2 | rxq=1 -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc08-64B-2t2c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=2 | rxq=1 -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc09-1518B-2t2c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=2 | rxq=1 -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc10-1518B-2t2c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=2 | rxq=1 -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc11-9000B-2t2c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${9000} | min_rate=${10000} | wt=2 | rxq=1 -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc12-9000B-2t2c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${9000} | min_rate=${10000} | wt=2 | rxq=1 -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc13-64B-4t4c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=4 | rxq=2 -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc14-64B-4t4c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=4 | rxq=2 -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc15-1518B-4t4c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=4 | rxq=2 -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc16-1518B-4t4c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=4 | rxq=2 -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc17-9000B-4t4c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${9000} | min_rate=${10000} | wt=4 | rxq=2 -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc18-9000B-4t4c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${9000} | min_rate=${10000} | wt=4 | rxq=2 -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | [Template] | L2 Bridge Domain PDR Binary Search diff --git a/tests/perf/10ge2p1x520-dot1ad-l2xcbase-ndrchk.robot b/tests/perf/10ge2p1x520-dot1ad-l2xcbase-ndrchk.robot deleted file mode 100644 index 9f378fab48..0000000000 --- a/tests/perf/10ge2p1x520-dot1ad-l2xcbase-ndrchk.robot +++ /dev/null @@ -1,279 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/tagging.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | L2XCFWD | BASE | DOT1AD -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput L2XC with 802.1ad verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 xconnect. -| ... | 802.1ad tagging is applied on link between DUT1 and DUT2 with inner 4B -| ... | vlan tag (id=100) and outer 4B vlan tag (id=200). -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- -| ... | connect. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-NDR value is periodically updated acording to -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and static payload. MAC addresses are matching MAC addresses of the -| ... | TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -| ${subid}= | 10 -| ${outer_vlan_id}= | 100 -| ${inner_vlan_id}= | 200 -| ${type_subif}= | two_tags -| ${tag_rewrite}= | pop-2 -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-dot1ad-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC with 802.1ad config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 4.0mpps. -| | [Tags] | 64B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 4.0mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc02-1514B-1t1c-dot1ad-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC with 802.1ad config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1514 Byte -| | ... | frames using single trial throughput test at 2x 810635pps. -| | [Tags] | 1514B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1514} -| | ${rate}= | Set Variable | 810635pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc03-9000B-1t1c-dot1ad-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC with 802.1ad config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138458pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138458pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc04-64B-2t2c-dot1ad-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC with 802.1ad config with 2 thread, 2 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 8.5mpps. -| | [Tags] | 64B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 8.5mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc05-1514B-2t2c-dot1ad-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC with 802.1ad config with 2 thread, 2 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1514 Byte -| | ... | frames using single trial throughput test at 2x 810635pps. -| | [Tags] | 1514B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1514} -| | ${rate}= | Set Variable | 810635pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc06-9000B-2t2c-dot1ad-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC with 802.1ad config with 2 thread, 2 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138458pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138458pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc07-64B-4t4c-dot1ad-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC with 802.1ad config with 4 thread, 4 phy core, \ -| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 8.6mpps. -| | [Tags] | 64B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 8.6mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-1514B-4t4c-dot1ad-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC with 802.1ad config with 4 thread, 4 phy core, \ -| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 1514 Byte -| | ... | frames using single trial throughput test at 2x 810635pps. -| | [Tags] | 1514B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1514} -| | ${rate}= | Set Variable | 810635pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc09-9000B-4t4c-dot1ad-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC with 802.1ad config with 4 thread, 4 phy core, \ -| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138458pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138458pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot deleted file mode 100644 index 6122de9850..0000000000 --- a/tests/perf/10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot +++ /dev/null @@ -1,606 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/tagging.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | L2XCFWD | BASE | DOT1AD -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput L2XC with 802.1ad test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 xconnect. -| ... | 802.1ad tagging is applied on link between DUT1 and DUT2 with inner 4B -| ... | vlan tag (id=100) and outer 4B vlan tag (id=200). -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- -| ... | connect. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and -| ... | static payload. MAC addresses are matching MAC addresses of the TG -| ... | node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -| ${subid}= | 10 -| ${outer_vlan_id}= | 100 -| ${inner_vlan_id}= | 200 -| ${type_subif}= | two_tags -| ${tag_rewrite}= | pop-2 -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-dot1ad-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-dot1ad-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1514B-1t1c-dot1ad-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1514 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1514B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1514} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1514B-1t1c-dot1ad-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1514 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1514B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1514} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-dot1ad-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-dot1ad-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-dot1ad-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-dot1ad-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1514B-2t2c-dot1ad-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1514 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1514B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1514} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1514B-2t2c-dot1ad-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1514 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1514B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1514} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-dot1ad-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-dot1ad-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-dot1ad-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-dot1ad-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1514B-4t4c-dot1ad-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1514 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1514B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1514} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1514B-4t4c-dot1ad-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1514 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1514B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1514} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-dot1ad-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-dot1ad-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot deleted file mode 100644 index 084be2df71..0000000000 --- a/tests/perf/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot +++ /dev/null @@ -1,705 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.QemuUtils -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | DOT1Q | L2BDMACLRN | BASE | VHOST | VM -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} -| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} -| ... -| Documentation | *RFC2544: Packet throughput L2BD test cases with vhost* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. 802.1q -| ... | tagging is applied on link between DUT1 and DUT2. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- -| ... | domain and MAC learning enabled. Qemu Guest is connected to VPP via -| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting -| ... | vhost-user interfaces using 5 cores pinned to cpus 5-9 and 2048M -| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores -| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to -| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520 -| ... | Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -| ${subid}= | 10 -| ${tag_rewrite}= | pop-1 -| ${vlan_overhead}= | ${4} -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Socket names -| ${bd_id1}= | 1 -| ${bd_id2}= | 2 -| ${sock1}= | /tmp/sock-1-${bd_id1} -| ${sock2}= | /tmp/sock-1-${bd_id2} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ -| | ... | 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${avg_framesize}= | Set Variable | ${357.833} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ -| | ... | 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${avg_framesize}= | Set Variable | ${357.833} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 2T2C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 2T2C | STHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc11-IMIX-2t2c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ -| | ... | 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 2T2C | STHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${avg_framesize}= | Set Variable | ${357.833} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-IMIX-2t2c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ -| | ... | 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 2T2C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${avg_framesize}= | Set Variable | ${357.833} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 4T4C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 4T4C | STHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc17-IMIX-4t4c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ -| | ... | 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 4T4C | STHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${avg_framesize}= | Set Variable | ${357.833} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-IMIX-4t4c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ -| | ... | 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 4T4C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${avg_framesize}= | Set Variable | ${357.833} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk.robot b/tests/perf/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk.robot deleted file mode 100644 index adb8243da4..0000000000 --- a/tests/perf/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk.robot +++ /dev/null @@ -1,212 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.QemuUtils -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK -| ... | NIC_Intel-X520-DA2 | DOT1Q | L2BDMACLRN | BASE | VHOST | VM -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance pdrchk test with vhost and VM with dpdk-testpmd -| ... | ${rate}pps | ${framesize} | ${traffic_profile} -| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} -| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} -| ... -| Documentation | *RFC2544: Packet throughput L2BD test cases with vhost* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. 802.1q -| ... | tagging is applied on link between DUT1 and DUT2. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- -| ... | domain and MAC learning enabled. Qemu Guest is connected to VPP via -| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting -| ... | vhost-user interfaces using 5 cores pinned to cpus 5-9 and 2048M -| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores -| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to -| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520 -| ... | Niantic by Intel. -| ... | *[Ver] TG verification:* TG verifies throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. Ref-PDR value is periodically updated acording to -| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and static payload. MAC addresses are matching MAC addresses of the -| ... | TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -| ${subid}= | 10 -| ${tag_rewrite}= | pop-1 -# Socket names -| ${bd_id1}= | 1 -| ${bd_id2}= | 2 -| ${sock1}= | /tmp/sock-1-${bd_id1} -| ${sock2}= | /tmp/sock-1-${bd_id2} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Keywords *** -| Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with ${wt} thread, ${wt} phy\ -| | ... | core, ${rxq} receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for ${framesize} Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} -| | ... -| | # Test Variables required for test and test teardown -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${rate} -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | ... -| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Run Keyword If | ${get_framesize} < ${1522} -| | ... | Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} -| | ... | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Traffic should pass with partial loss | ${perf_trial_duration} -| | ... | ${rate} | ${framesize} | ${traffic_profile} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-64B-1t1c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy\ -| | ... | core, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd -| | framesize=${64} | rate=1.2mpps | wt=1 | rxq=1 - -| tc02-1518B-1t1c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy\ -| | ... | core, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd -| | framesize=${1518} | rate=350000pps | wt=1 | rxq=1 - -| tc03-IMIX-1t1c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy\ -| | ... | core, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd -| | framesize=IMIX_v4_1 | rate=0.9mpps | wt=1 | rxq=1 - -| tc04-64B-2t2c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd -| | framesize=${64} | rate=2.2mpps | wt=2 | rxq=1 - -| tc05-1518B-2t2c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd -| | framesize=${1518} | rate=0.6mpps | wt=2 | rxq=1 - -| tc06-IMIX-2t2c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | IMIX | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd -| | framesize=IMIX_v4_1 | rate=1.5pps | wt=2 | rxq=1 - -| tc07-64B-4t4c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd -| | framesize=${64} | rate=3.4mpps | wt=4 | rxq=2 - -| tc08-1518B-4t4c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd -| | framesize=${1518} | rate=0.7mpps | wt=4 | rxq=2 - -| tc09-IMIX-4t4c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | IMIX | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd -| | framesize=IMIX_v4_1 | rate=2.2mpps | wt=4 | rxq=2 diff --git a/tests/perf/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot deleted file mode 100644 index 1ff0708fff..0000000000 --- a/tests/perf/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot +++ /dev/null @@ -1,684 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.NodePath -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | DOT1Q | L2XCFWD | BASE | VHOST | VM -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} -| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} -| ... -| Documentation | *RFC2544: Pkt throughput L2XC test cases with vhost* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. 802.1q -| ... | tagging is applied on link between DUT1 and DUT2. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- -| ... | connect. Qemu Guest is connected to VPP via vhost-user interfaces. -| ... | Guest is running DPDK testpmd interconnecting vhost-user interfaces -| ... | using 5 cores pinned to cpus 5-9 and 2048M memory. Testpmd is using -| ... | socket-mem=1024M (512x2M hugepages), 5 cores (1 main core and 4 cores -| ... | dedicated for io), forwarding mode is set to io, rxd/txd=256, -| ... | burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -| ${subid}= | 10 -| ${tag_rewrite}= | pop-1 -| ${vlan_overhead}= | ${4} -# Socket names -| ${sock1}= | /tmp/sock-1 -| ${sock2}= | /tmp/sock-2 -# X520-DA2 bandwidth limit -| ${s_limit}= | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ -| | ... | 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${avg_framesize}= | Set Variable | ${357.833} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ -| | ... | 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${avg_framesize}= | Set Variable | ${357.833} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 2T2C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 2T2C | STHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc11-IMIX-2t2c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ -| | ... | 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 2T2C | STHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${avg_framesize}= | Set Variable | ${357.833} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-IMIX-2t2c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ -| | ... | 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 2T2C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${avg_framesize}= | Set Variable | ${357.833} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 4T4C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 4T4C | STHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc17-IMIX-4t4c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ -| | ... | 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 4T4C | STHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${avg_framesize}= | Set Variable | ${357.833} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-IMIX-4t4c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ -| | ... | 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 4T4C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${avg_framesize}= | Set Variable | ${357.833} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk.robot b/tests/perf/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk.robot deleted file mode 100644 index 58a648a485..0000000000 --- a/tests/perf/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk.robot +++ /dev/null @@ -1,209 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.QemuUtils -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK -| ... | NIC_Intel-X520-DA2 | DOT1Q | L2XCFWD | BASE | VHOST | VM -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance pdrchk test with vhost and VM with dpdk-testpmd -| ... | ${rate}pps | ${framesize} | ${traffic_profile} -| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} -| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} -| ... -| Documentation | *RFC2544: Packet throughput L2XC test cases with vhost* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. 802.1q -| ... | tagging is applied on link between DUT1 and DUT2. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- -| ... | connect. Qemu Guest is connected to VPP via -| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting -| ... | vhost-user interfaces using 5 cores pinned to cpus 5-9 and 2048M -| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores -| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to -| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520 -| ... | Niantic by Intel. -| ... | *[Ver] TG verification:* TG verifies throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. Ref-PDR value is periodically updated acording to -| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and static payload. MAC addresses are matching MAC addresses of the -| ... | TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -| ${subid}= | 10 -| ${tag_rewrite}= | pop-1 -# Socket names -| ${sock1}= | /tmp/sock-1 -| ${sock2}= | /tmp/sock-2 -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Keywords *** -| Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with ${wt} thread, ${wt} phy\ -| | ... | core, ${rxq} receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for ${framesize} Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} -| | ... -| | # Test Variables required for test and test teardown -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${rate} -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | ... -| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Run Keyword If | ${get_framesize} < ${1522} -| | ... | Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology -| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Traffic should pass with partial loss | ${perf_trial_duration} -| | ... | ${rate} | ${framesize} | ${traffic_profile} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-64B-1t1c-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ -| | ... | core, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | framesize=${64} | rate=1.4mpps | wt=1 | rxq=1 - -| tc02-1518B-1t1c-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ -| | ... | core, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | framesize=${1518} | rate=330000pps | wt=1 | rxq=1 - -| tc03-IMIX-1t1c-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ -| | ... | core, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | framesize=IMIX_v4_1 | rate=1.0mpps | wt=1 | rxq=1 - -| tc04-64B-2t2c-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | framesize=${64} | rate=1.4mpps | wt=2 | rxq=1 - -| tc05-1518B-2t2c-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | framesize=${1518} | rate=0.7mpps | wt=2 | rxq=1 - -| tc06-IMIX-2t2c-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | IMIX | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | framesize=IMIX_v4_1 | rate=1.6mpps | wt=2 | rxq=1 - -| tc07-64B-4t4c-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | framesize=${64} | rate=4.0mpps | wt=4 | rxq=2 - -| tc08-1518B-4t4c-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | framesize=${1518} | rate=0.7mpps | wt=4 | rxq=2 - -| tc09-IMIX-4t4c-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | IMIX | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | framesize=IMIX_v4_1 | rate=2.4mpps | wt=4 | rxq=2 diff --git a/tests/perf/10ge2p1x520-dot1q-l2xcbase-ndrchk.robot b/tests/perf/10ge2p1x520-dot1q-l2xcbase-ndrchk.robot deleted file mode 100644 index a38bff667e..0000000000 --- a/tests/perf/10ge2p1x520-dot1q-l2xcbase-ndrchk.robot +++ /dev/null @@ -1,266 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/tagging.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | L2XCFWD | BASE | DOT1Q -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput L2XC with 802.1q verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. 802.1q -| ... | tagging is applied on link between DUT1 and DUT2. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- -| ... | connect. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-NDR value is periodically updated acording to -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and static payload. MAC addresses are matching MAC addresses of the -| ... | TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -| ${subid}= | 10 -| ${tag_rewrite}= | pop-1 -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-dot1q-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 4.0mpps. -| | [Tags] | 64B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 4.0mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc02-1518B-1t1c-dot1q-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 720000pps. -| | [Tags] | 1518B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 720000pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc03-9000B-1t1c-dot1q-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 120000pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 120000pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc04-64B-2t2c-dot1q-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 8.7mpps. -| | [Tags] | 64B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 8.7mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc05-1518B-2t2c-dot1q-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 720000pps. -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 720000pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc06-9000B-2t2c-dot1q-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 120000pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 120000pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc07-64B-4t4c-dot1q-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 10.3mpps. -| | [Tags] | 64B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 10.3mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-1518B-4t4c-dot1q-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 720000pps. -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 720000pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc09-9000B-4t4c-dot1q-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 120000pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 120000pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot deleted file mode 100644 index d99d772c8f..0000000000 --- a/tests/perf/10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot +++ /dev/null @@ -1,584 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/tagging.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | L2XCFWD | BASE | DOT1Q -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput L2XC with 802.1q test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. 802.1q -| ... | tagging is applied on link between DUT1 and DUT2. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- -| ... | connect. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -| ${subid}= | 10 -| ${tag_rewrite}= | pop-1 -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-dot1q-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-dot1q-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-dot1q-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-dot1q-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-dot1q-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-dot1q-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-dot1q-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-dot1q-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-dot1q-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-dot1q-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-dot1q-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-dot1q-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-dot1q-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-dot1q-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-dot1q-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-dot1q-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-dot1q-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-dot1q-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Set interfaces in path in 3-node circular topology up -| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} -| | And Configure L2 tag rewrite method on interfaces -| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} -| | ... | ${tag_rewrite} -| | And Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} -| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot deleted file mode 100644 index 494bebf5cd..0000000000 --- a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot +++ /dev/null @@ -1,623 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.QemuUtils -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | L2BDMACLRN | BASE | VHOST | VM -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} -| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} -| ... -| Documentation | *RFC2544: Pkt throughput L2BD test cases with vhost* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- -| ... | domain and MAC learning enabled. Qemu Guest is connected to VPP via -| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting -| ... | vhost-user interfaces using 5 cores pinned to cpus 5-9 and 2048M -| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores -| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to -| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520 -| ... | Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Socket names -| ${bd_id1}= | 1 -| ${bd_id2}= | 2 -| ${sock1}= | /tmp/sock-1-${bd_id1} -| ${sock2}= | /tmp/sock-1-${bd_id2} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 5kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-IMIX-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-IMIX-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-IMIX-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-IMIX-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot deleted file mode 100644 index de06640856..0000000000 --- a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot +++ /dev/null @@ -1,548 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.QemuUtils -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | L2BDMACLRN | BASE | VHOST | VM -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| Test Setup | Set up performance test -| Test Teardown | Run Keywords -| ... | Show Bridge Domain Data On All DUTs -| ... | AND | Tear down performance test with vhost and VM with dpdk-testpmd -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} -| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} -| Documentation | *RFC2544: Pkt throughput L2BD test cases with vhost* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- -| ... | domains and MAC learning enabled. Qemu Guests are connected to VPP via -| ... | vhost-user interfaces. Guests are running DPDK testpmd interconnecting -| ... | vhost-user interfaces using 5 cores pinned to cpus 6-10 and 11-15 and -| ... | 2048M memory. Testpmd is using socket-mem=1024M (512x2M hugepages), -| ... | 5 cores (1 main core and 4 cores dedicated for io), forwarding mode is -| ... | set to io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE NIC -| ... | X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit}= | ${10000000000} -# CPU settings -| ${system_cpus}= | ${1} -| ${vpp_cpus}= | ${5} -| ${vm_cpus}= | ${5} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-IMIX-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-IMIX-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-IMIX-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-IMIX-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-ndrchk.robot b/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-ndrchk.robot deleted file mode 100644 index 7cd0fc6c43..0000000000 --- a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-ndrchk.robot +++ /dev/null @@ -1,192 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.NodePath -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | L2BDMACLRN | BASE | L2BDBASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput L2BD verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- -| ... | domain and MAC learning enabled. DUT1 and DUT2 tested with 2p10GE NIC -| ... | X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-NDR value is periodically updated acording to -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and static payload. MAC addresses are matching MAC addresses of the -| ... | TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2bdbasemaclrn-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 4.9mpps. -| | [Tags] | 64B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 4.9mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc02-1518B-1t1c-eth-l2bdbasemaclrn-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc03-9000B-1t1c-eth-l2bdbasemaclrn-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc04-64B-2t2c-eth-l2bdbasemaclrn-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 10.4mpps. -| | [Tags] | 64B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 10.4mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc05-1518B-2t2c-eth-l2bdbasemaclrn-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc06-9000B-2t2c-eth-l2bdbasemaclrn-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc07-64B-4t4c-eth-l2bdbasemaclrn-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 10.4mpps. -| | [Tags] | 64B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 10.4mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-1518B-4t4c-eth-l2bdbasemaclrn-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc09-9000B-4t4c-eth-l2bdbasemaclrn-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot deleted file mode 100644 index c8410b1451..0000000000 --- a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot +++ /dev/null @@ -1,274 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | L2BDMACLRN | BASE | L2BDBASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput L2BD test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge-\ -| ... | domain and MAC learning enabled. DUT1 and DUT2 tested with 2p10GE NI -| ... | X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ -| ... | of packets transmitted. NDR and PDR are discovered for different\ -| ... | Ethernet L2 frame sizes using either binary search or linear search\ -| ... | algorithms with configured starting rate and final step that determines\ -| ... | throughput measurement resolution. Test packets are generated by TG on\ -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\ -| ... | (flow-group per direction, 253 flows per flow-group) with all packets\ -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\ -| ... | payload. MAC addresses are matching MAC addresses of the TG node\ -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Keywords *** -| L2 Bridge Domain NDR Binary Search -| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${min_rate} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | Add PCI devices to DUTs in 3-node single link topology -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | Run Keyword If | ${get_framesize} < ${1522} | Add no multi seg to all DUTs -| | Apply startup configuration on all VPP DUTs -| | Initialize L2 bridge domain in 3-node circular topology -| | Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| L2 Bridge Domain PDR Binary Search -| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${min_rate} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | Add PCI devices to DUTs in 3-node single link topology -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | Run Keyword If | ${get_framesize} < ${1522} | Add no multi seg to all DUTs -| | Apply startup configuration on all VPP DUTs -| | Initialize L2 bridge domain in 3-node circular topology -| | Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=1 | rxq=1 -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc02-64B-1t1c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=1 | rxq=1 -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc03-1518B-1t1c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=1 | rxq=1 -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc04-1518B-1t1c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=1 | rxq=1 -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc05-9000B-1t1c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${9000} | min_rate=${10000} | wt=1 | rxq=1 -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc06-9000B-1t1c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${9000} | min_rate=${10000} | wt=1 | rxq=1 -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc07-64B-2t2c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=2 | rxq=1 -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc08-64B-2t2c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=2 | rxq=1 -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc09-1518B-2t2c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=2 | rxq=1 -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc10-1518B-2t2c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=2 | rxq=1 -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc11-9000B-2t2c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${9000} | min_rate=${10000} | wt=2 | rxq=1 -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc12-9000B-2t2c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${9000} | min_rate=${10000} | wt=2 | rxq=1 -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc13-64B-4t4c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=4 | rxq=2 -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc14-64B-4t4c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=4 | rxq=2 -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc15-1518B-4t4c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=4 | rxq=2 -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc16-1518B-4t4c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=4 | rxq=2 -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc17-9000B-4t4c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${9000} | min_rate=${10000} | wt=4 | rxq=2 -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc18-9000B-4t4c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${9000} | min_rate=${10000} | wt=4 | rxq=2 -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | [Template] | L2 Bridge Domain PDR Binary Search diff --git a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-pdrchk.robot b/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-pdrchk.robot deleted file mode 100644 index 5f87d6527a..0000000000 --- a/tests/perf/10ge2p1x520-eth-l2bdbasemaclrn-pdrchk.robot +++ /dev/null @@ -1,184 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.NodePath -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | L2BDMACLRN | BASE | L2BDBASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance pdrchk test -| ... -| Documentation | *Reference PDR throughput L2BD verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- -| ... | domain and MAC learning enabled. DUT1 and DUT2 tested with 2p10GE NIC -| ... | X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-PDR value is periodically updated acording to -| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 254 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and static payload. MAC addresses are matching MAC addresses of the -| ... | TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Keywords *** -| Check PDR for L2 bridge domain -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD config with ${wt} thread, ${wt} phy core,\ -| | ... | ${rxq} receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for ${framesize} Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} -| | ... -| | # Test Variables required for test and test teardown -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${rate} -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | ... -| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Run Keyword If | ${get_framesize} < ${1522} -| | ... | Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Traffic should pass with partial loss | ${perf_trial_duration} -| | ... | ${rate} | ${framesize} | ${traffic_profile} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2bdbasemaclrn-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2 bridge domain -| | framesize=${64} | rate=4.9mpps | wt=1 | rxq=1 - -| tc02-1518B-1t1c-eth-l2bdbasemaclrn-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2 bridge domain -| | framesize=${1518} | rate=772105pps | wt=1 | rxq=1 - -| tc03-9000B-1t1c-eth-l2bdbasemaclrn-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2 bridge domain -| | framesize=${9000} | rate=110000pps | wt=1 | rxq=1 - -| tc04-64B-2t2c-eth-l2bdbasemaclrn-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD config with 2 thread, 2 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 bridge domain -| | framesize=${64} | rate=10.4mpps | wt=2 | rxq=1 - -| tc05-1518B-2t2c-eth-l2bdbasemaclrn-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD config with 2 thread, 2 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 bridge domain -| | framesize=${1518} | rate=812743pps | wt=2 | rxq=1 - -| tc06-9000B-2t2c-eth-l2bdbasemaclrn-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD config with 2 thread, 2 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 bridge domain -| | framesize=${9000} | rate=100000pps | wt=2 | rxq=1 - -| tc07-64B-4t4c-eth-l2bdbasemaclrn-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD config with 4 thread, 4 phy core,\ -| | ... | 2 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 bridge domain -| | framesize=${64} | rate=10.4mpps | wt=4 | rxq=2 - -| tc08-1518B-4t4c-eth-l2bdbasemaclrn-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD config with 4 thread, 4 phy core,\ -| | ... | 2 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 bridge domain -| | framesize=${1518} | rate=812743pps | wt=4 | rxq=2 - -| tc09-9000B-4t4c-eth-l2bdbasemaclrn-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD config with 4 thread, 4 phy core,\ -| | ... | 2 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 bridge domain -| | framesize=${9000} | rate=138580pps | wt=4 | rxq=2 diff --git a/tests/perf/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot deleted file mode 100644 index 91d8f4a2ab..0000000000 --- a/tests/perf/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot +++ /dev/null @@ -1,621 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.NodePath -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | L2XCFWD | BASE | VHOST | VM -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} -| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} -| ... -| Documentation | *RFC2544: Pkt throughput L2XC test cases with vhost* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- -| ... | connect. Qemu Guest is connected to VPP via vhost-user interfaces. -| ... | Guest is running DPDK testpmd interconnecting vhost-user interfaces -| ... | using 5 cores pinned to cpus 5-9 and 2048M memory. Testpmd is using -| ... | socket-mem=1024M (512x2M hugepages), 5 cores (1 main core and 4 cores -| ... | dedicated for io), forwarding mode is set to io, rxd/txd=256, -| ... | burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -| ${bd_id1}= | 1 -| ${bd_id2}= | 2 -| ${sock1}= | /tmp/sock-1-${bd_id1} -| ${sock2}= | /tmp/sock-1-${bd_id2} -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-IMIX-2t2c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-IMIX-2t2c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-IMIX-4t4c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-IMIX-4t4c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-pdrchk.robot b/tests/perf/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-pdrchk.robot deleted file mode 100644 index a244017023..0000000000 --- a/tests/perf/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-pdrchk.robot +++ /dev/null @@ -1,208 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.QemuUtils -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | L2XCFWD | BASE | VHOST | VM -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance pdrchk test with vhost and VM with dpdk-testpmd -| ... | ${rate}pps | ${framesize} | ${traffic_profile} -| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} -| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} -| ... -| Documentation | *RFC2544: Packet throughput L2XC test cases with vhost* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. 802.1q -| ... | tagging is applied on link between DUT1 and DUT2. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- -| ... | connect. Qemu Guest is connected to VPP via -| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting -| ... | vhost-user interfaces using 5 cores pinned to cpus 5-9 and 2048M -| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores -| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to -| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520 -| ... | Niantic by Intel. -| ... | *[Ver] TG verification:* TG verifies throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. Ref-PDR value is periodically updated acording to -| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and static payload. MAC addresses are matching MAC addresses of the -| ... | TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -| ${bd_id1}= | 1 -| ${bd_id2}= | 2 -| ${sock1}= | /tmp/sock-1-${bd_id1} -| ${sock2}= | /tmp/sock-1-${bd_id2} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Keywords *** -| Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with ${wt} thread, ${wt} phy\ -| | ... | core, ${rxq} receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for ${framesize} Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} -| | ... -| | # Test Variables required for test and test teardown -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${rate} -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | ... -| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Run Keyword If | ${get_framesize} < ${1522} -| | ... | Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Traffic should pass with partial loss | ${perf_trial_duration} -| | ... | ${rate} | ${framesize} | ${traffic_profile} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2xcbase-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ -| | ... | core, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | framesize=${64} | rate=1.6mpps | wt=1 | rxq=1 - -| tc02-1518B-1t1c-eth-l2xcbase-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ -| | ... | core, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | framesize=${1518} | rate=400000pps | wt=1 | rxq=1 - -| tc03-IMIX-1t1c-eth-l2xcbase-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ -| | ... | core, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | framesize=IMIX_v4_1 | rate=1.0mpps | wt=1 | rxq=1 - -| tc04-64B-2t2c-eth-l2xcbase-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | framesize=${64} | rate=3.0mpps | wt=2 | rxq=1 - -| tc05-1518B-2t2c-eth-l2xcbase-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | framesize=${1518} | rate=0.7mpps | wt=2 | rxq=1 - -| tc06-IMIX-2t2c-eth-l2xcbase-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | IMIX | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | framesize=IMIX_v4_1 | rate=2.0mpps | wt=2 | rxq=1 - -| tc07-64B-4t4c-eth-l2xcbase-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | framesize=${64} | rate=4.2mpps | wt=4 | rxq=2 - -| tc08-1518B-4t4c-eth-l2xcbase-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | framesize=${1518} | rate=0.7mpps | wt=4 | rxq=2 - -| tc09-IMIX-4t4c-eth-l2xcbase-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | IMIX | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd -| | framesize=IMIX_v4_1 | rate=3.0mpps | wt=4 | rxq=2 diff --git a/tests/perf/10ge2p1x520-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot deleted file mode 100644 index 2aa6372dd4..0000000000 --- a/tests/perf/10ge2p1x520-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot +++ /dev/null @@ -1,549 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.NodePath -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | L2XCFWD | BASE | VHOST | VM -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} -| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} -| ... -| Documentation | *RFC2544: Pkt throughput L2XC test cases with vhost* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- -| ... | connects. Qemu Guests are connected to VPP via vhost-user interfaces. -| ... | Guests are running DPDK testpmd interconnecting vhost-user interfaces -| ... | using 5 cores pinned to cpus 6-10 and 11-15 and 2048M memory. Testpmd is -| ... | using socket-mem=1024M (512x2M hugepages), 5 cores (1 main core and 4 -| ... | cores dedicated for io), forwarding mode is set to io, rxd/txd=256, -| ... | burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -#CPU settings -| ${system_cpus}= | ${1} -| ${vpp_cpus}= | ${5} -| ${vm_cpus}= | ${5} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-IMIX-2t2c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-IMIX-2t2c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-IMIX-4t4c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-IMIX-4t4c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-eth-l2xcbase-ndrchk.robot b/tests/perf/10ge2p1x520-eth-l2xcbase-ndrchk.robot deleted file mode 100644 index 451a319422..0000000000 --- a/tests/perf/10ge2p1x520-eth-l2xcbase-ndrchk.robot +++ /dev/null @@ -1,192 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.NodePath -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | L2XCFWD | BASE | L2XCBASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput L2XC verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- -| ... | connect. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-NDR value is periodically updated acording to -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and static payload. MAC addresses are matching MAC addresses of the -| ... | TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 5.9mpps. -| | [Tags] | 64B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 5.9mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc02-1518B-1t1c-eth-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc03-9000B-1t1c-eth-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc04-64B-2t2c-eth-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 10.4mpps. -| | [Tags] | 64B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 10.4mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc05-1518B-2t2c-eth-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc06-9000B-2t2c-eth-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc07-64B-4t4c-eth-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 10.4mpps. -| | [Tags] | 64B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 10.4mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-1518B-4t4c-eth-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc09-9000B-4t4c-eth-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot deleted file mode 100644 index 13f7b12111..0000000000 --- a/tests/perf/10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot +++ /dev/null @@ -1,483 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.NodePath -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | L2XCFWD | BASE | L2XCBASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput L2XC test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- -| ... | connect. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-eth-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-eth-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-eth-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-eth-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-eth-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-eth-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-eth-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-eth-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-eth-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-eth-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-eth-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-eth-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-eth-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-eth-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-eth-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-eth-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-eth-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc19-IMIX-1t1c-eth-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame size -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc20-IMIX-1t1c-eth-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame size -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-eth-l2xcbase-pdrchk.robot b/tests/perf/10ge2p1x520-eth-l2xcbase-pdrchk.robot deleted file mode 100644 index c3dc22d078..0000000000 --- a/tests/perf/10ge2p1x520-eth-l2xcbase-pdrchk.robot +++ /dev/null @@ -1,184 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.NodePath -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | L2XCFWD | BASE | L2XCBASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance pdrchk test -| ... -| Documentation | *Reference PDR throughput L2XC verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- -| ... | connect. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-PDR value is periodically updated acording to -| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 254 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and static payload. MAC addresses are matching MAC addresses of the -| ... | TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Keywords *** -| Check PDR for L2 xconnect -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with ${wt} thread, ${wt} phy core,\ -| | ... | ${rxq} receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for ${framesize} Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} -| | ... -| | # Test Variables required for test and test teardown -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${rate} -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | ... -| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Run Keyword If | ${get_framesize} < ${1522} -| | ... | Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Traffic should pass with partial loss | ${perf_trial_duration} -| | ... | ${rate} | ${framesize} | ${traffic_profile} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2xcbase-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2 xconnect -| | framesize=${64} | rate=5.9mpps | wt=1 | rxq=1 - -| tc02-1518B-1t1c-eth-l2xcbase-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2 xconnect -| | framesize=${1518} | rate=812743pps | wt=1 | rxq=1 - -| tc03-9000B-1t1c-eth-l2xcbase-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2 xconnect -| | framesize=${9000} | rate=138580pps | wt=1 | rxq=1 - -| tc04-64B-2t2c-eth-l2xcbase-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 xconnect -| | framesize=${64} | rate=10.4mpps | wt=2 | rxq=1 - -| tc05-1518B-2t2c-eth-l2xcbase-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 xconnect -| | framesize=${1518} | rate=812743pps | wt=2 | rxq=1 - -| tc06-9000B-2t2c-eth-l2xcbase-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 xconnect -| | framesize=${9000} | rate=100000pps | wt=2 | rxq=1 - -| tc07-64B-4t4c-eth-l2xcbase-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 xconnect -| | framesize=${64} | rate=10.4mpps | wt=4 | rxq=2 - -| tc08-1518B-4t4c-eth-l2xcbase-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 xconnect -| | framesize=${1518} | rate=812743pps | wt=4 | rxq=2 - -| tc09-9000B-4t4c-eth-l2xcbase-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 xconnect -| | framesize=${9000} | rate=138580pps | wt=4 | rxq=2 diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrchk.robot b/tests/perf/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrchk.robot deleted file mode 100644 index f7952bde84..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrchk.robot +++ /dev/null @@ -1,260 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.Cop -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} -| ... | WITH NAME | dut1_v4 -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} -| ... | WITH NAME | dut2_v4 -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | COPWHLIST -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput IPv4 whitelist verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing, two static IPv4 /24 routes and IPv4 COP security whitelist -| ... | ingress /24 filter entries applied on links TG - DUT1 and DUT2 - TG. -| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-NDR value is periodically updated acording to -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and static payload. MAC addresses are matching MAC addresses of the -| ... | TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4base-copwhtlistbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 64 Byte frames using single trial throughput test -| | ... | at 2x 4.1mpps. -| | [Tags] | 64B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 4.1mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc02-1518B-1t1c-ethip4-ip4base-copwhtlistbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 1518 Byte frames using single trial throughput test -| | ... | at 2x 812743pps. -| | [Tags] | 1518B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc03-9000B-1t1c-ethip4-ip4base-copwhtlistbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 9000 Byte frames using single trial throughput test -| | ... | at 2x 138580pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc04-64B-2t2c-ethip4-ip4base-copwhtlistbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 64 Byte frames using single trial throughput test -| | ... | at 2x 7.2mpps. -| | [Tags] | 64B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 7.2mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc05-1518B-2t2c-ethip4-ip4base-copwhtlistbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 1518 Byte frames using single trial throughput test -| | ... | at 2x 812743pps. -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc06-9000B-2t2c-ethip4-ip4base-copwhtlistbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 9000 Byte frames using single trial throughput test -| | ... | at 2x 138580pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc07-64B-4t4c-ethip4-ip4base-copwhtlistbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 4 thread, 4 phy core, 2 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 64 Byte frames using single trial throughput test -| | ... | at 2x 10.4mpps. -| | [Tags] | 64B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 10.4mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-1518B-4t4c-ethip4-ip4base-copwhtlistbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 4 thread, 4 phy core, 2 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 1518 Byte frames using single trial throughput test -| | ... | at 2x 812743pps. -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc09-9000B-4t4c-ethip4-ip4base-copwhtlistbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 4 thread, 4 phy core, 2 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 9000 Byte frames using single trial throughput test -| | ... | at 2x 138580pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot deleted file mode 100644 index 85633d9a87..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot +++ /dev/null @@ -1,569 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.Cop -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} -| ... | WITH NAME | dut1_v4 -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} -| ... | WITH NAME | dut2_v4 -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | COPWHLIST -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput IPv4 whitelist test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing, two static IPv4 /24 routes and IPv4 COP security whitelist -| ... | ingress /24 filter entries applied on links TG - DUT1 and DUT2 - TG. -| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4base-copwhtlistbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 64 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4-ip4base-copwhtlistbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 64 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4-ip4base-copwhtlistbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4-ip4base-copwhtlistbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip4-ip4base-copwhtlistbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-ethip4-ip4base-copwhtlistbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4-ip4base-copwhtlistbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 64 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4-ip4base-copwhtlistbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 64 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps, LT=0.5%. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-ethip4-ip4base-copwhtlistbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-ethip4-ip4base-copwhtlistbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip4-ip4base-copwhtlistbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-ethip4-ip4base-copwhtlistbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-ethip4-ip4base-copwhtlistbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR -| | ... | for 64 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-ethip4-ip4base-copwhtlistbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR -| | ... | for 64 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-ethip4-ip4base-copwhtlistbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-ethip4-ip4base-copwhtlistbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip4-ip4base-copwhtlistbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-ethip4-ip4base-copwhtlistbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local -| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-ndrpdrdisc.robot deleted file mode 100644 index 1fe7806106..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-ndrpdrdisc.robot +++ /dev/null @@ -1,658 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.QemuUtils -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | BASE | VHOST | VM -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} -| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} -| ... -| Documentation | *RFC2544: Pkt throughput IPv4 test cases with vhost* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and two static IPv4 /24 route entries. Qemu Guest is connected -| ... | to VPP via vhost-user interfaces. Guest is running DPDK testpmd -| ... | interconnecting vhost-user interfaces using 5 cores pinned to cpus 5-9 -| ... | and 2048M memory. Testpmd is using socket-mem=1024M (512x2M hugepages), -| ... | 5 cores (1 main core and 4 cores dedicated for io), forwarding mode is -| ... | set to mac, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE -| ... | NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -| ${sock1}= | /tmp/sock-1 -| ${sock2}= | /tmp/sock-2 -| ${fib_table_1}= | 100 -| ${fib_table_2}= | 101 -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4base-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} -| | ... | ${dut1_vif2_mac} -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} -| | ... | ${dut2_vif2_mac} -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4-ip4base-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} -| | ... | ${dut1_vif2_mac} -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} -| | ... | ${dut2_vif2_mac} -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4-ip4base-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} -| | ... | ${dut1_vif2_mac} -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} -| | ... | ${dut2_vif2_mac} -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4-ip4base-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} -| | ... | ${dut1_vif2_mac} -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} -| | ... | ${dut2_vif2_mac} -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-ethip4-ip4base-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} -| | ... | ${dut1_vif2_mac} -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} -| | ... | ${dut2_vif2_mac} -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-ethip4-ip4base-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} -| | ... | ${dut1_vif2_mac} -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} -| | ... | ${dut2_vif2_mac} -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4-ip4base-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} -| | ... | ${dut1_vif2_mac} -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} -| | ... | ${dut2_vif2_mac} -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4-ip4base-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} -| | ... | ${dut1_vif2_mac} -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} -| | ... | ${dut2_vif2_mac} -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-ethip4-ip4base-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} -| | ... | ${dut1_vif2_mac} -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} -| | ... | ${dut2_vif2_mac} -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-ethip4-ip4base-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} -| | ... | ${dut1_vif2_mac} -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} -| | ... | ${dut2_vif2_mac} -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-IMIX-2t2c-ethip4-ip4base-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} -| | ... | ${dut1_vif2_mac} -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} -| | ... | ${dut2_vif2_mac} -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-IMIX-2t2c-ethip4-ip4base-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} -| | ... | ${dut1_vif2_mac} -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} -| | ... | ${dut2_vif2_mac} -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-ethip4-ip4base-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} -| | ... | ${dut1_vif2_mac} -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} -| | ... | ${dut2_vif2_mac} -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-ethip4-ip4base-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} -| | ... | ${dut1_vif2_mac} -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} -| | ... | ${dut2_vif2_mac} -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-ethip4-ip4base-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} -| | ... | ${dut1_vif2_mac} -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} -| | ... | ${dut2_vif2_mac} -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-ethip4-ip4base-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} -| | ... | ${dut1_vif2_mac} -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} -| | ... | ${dut2_vif2_mac} -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-IMIX-4t4c-ethip4-ip4base-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} -| | ... | ${dut1_vif2_mac} -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} -| | ... | ${dut2_vif2_mac} -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-IMIX-4t4c-ethip4-ip4base-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} -| | ... | ${dut1_vif2_mac} -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} -| | ... | ${dut2_vif2_mac} -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-pdrchk.robot b/tests/perf/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-pdrchk.robot deleted file mode 100644 index c7cccda093..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-pdrchk.robot +++ /dev/null @@ -1,209 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.QemuUtils -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | BASE | VHOST | VM -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance pdrchk test with vhost and VM with dpdk-testpmd -| ... | ${rate}pps | ${framesize} | ${traffic_profile} -| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} -| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} -| ... -| Documentation | *RFC2544: Pkt throughput IPv4 test cases with vhost* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and two static IPv4 /24 route entries. Qemu Guest is connected -| ... | to VPP via vhost-user interfaces. Guest is running DPDK testpmd -| ... | interconnecting vhost-user interfaces using 5 cores pinned to cpus 5-9 -| ... | and 2048M memory. Testpmd is using socket-mem=1024M (512x2M hugepages), -| ... | 5 cores (1 main core and 4 cores dedicated for io), forwarding mode is -| ... | set to mac, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE -| ... | NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG verifies throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. Ref-PDR value is periodically updated acording to -| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and static payload. MAC addresses are matching MAC addresses of the -| ... | TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -| ${sock1}= | /tmp/sock-1 -| ${sock2}= | /tmp/sock-2 -| ${fib_table_1}= | 100 -| ${fib_table_2}= | 101 -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Keywords *** -| Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with ${wt} thread, ${wt} phy\ -| | ... | core, ${rxq} receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for ${framesize} Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} -| | ... -| | # Test Variables required for test and test teardown -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${rate} -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | ... -| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Run Keyword If | ${get_framesize} < ${1522} -| | ... | Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost in 3-node circular topology -| | ... | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} -| | ... | ${dut1_vif2_mac} -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} -| | ... | ${dut2_vif2_mac} -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Traffic should pass with partial loss | ${perf_trial_duration} -| | ... | ${rate} | ${framesize} | ${traffic_profile} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-64B-1t1c-eth-ip4base-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy\ -| | ... | core, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd -| | framesize=${64} | rate=2.5mpps | wt=1 | rxq=1 - -| tc02-1518B-1t1c-eth-ip4base-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy\ -| | ... | core, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd -| | framesize=${1518} | rate=300000pps | wt=1 | rxq=1 - -| tc03-IMIX-1t1c-eth-ip4base-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy\ -| | ... | core, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd -| | framesize=IMIX_v4_1 | rate=0.9mpps | wt=1 | rxq=1 - -| tc04-64B-2t2c-eth-ip4base-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd -| | framesize=${64} | rate=3.0mpps | wt=2 | rxq=1 - -| tc05-1518B-2t2c-eth-ip4base-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd -| | framesize=${1518} | rate=350000pps | wt=2 | rxq=1 - -| tc06-IMIX-2t2c-eth-ip4base-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | IMIX | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd -| | framesize=IMIX_v4_1 | rate=2.0mpps | wt=2 | rxq=1 - -| tc07-64B-4t4c-eth-ip4base-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd -| | framesize=${64} | rate=3.8mpps | wt=4 | rxq=2 - -| tc08-1518B-4t4c-eth-ip4base-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd -| | framesize=${1518} | rate=350000pps | wt=4 | rxq=2 - -| tc09-IMIX-4t4c-eth-ip4base-eth-2vhost-1vm-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy\ -| | ... | cores, 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | IMIX | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd -| | framesize=IMIX_v4_1 | rate=3.0mpps | wt=4 | rxq=2 diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot deleted file mode 100644 index d2604cf00b..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot +++ /dev/null @@ -1,550 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.QemuUtils -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | BASE | VHOST | VM -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} -| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} -| ... -| Documentation | *RFC2544: Pkt throughput IPv4 test cases with vhost* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and static IPv4 /24 route entries. Qemu Guests are connected -| ... | to VPP via vhost-user interfaces. Guests are running DPDK testpmd -| ... | interconnecting vhost-user interfaces using 5 cores pinned to cpus 6-10 -| ... | and 11-15 and 2048M memory. Testpmd is using socket-mem=1024M (512x2M -| ... | hugepages), 5 cores (1 main core and 4 cores dedicated for io), -| ... | forwarding mode is set to mac, rxd/txd=256, burst=64. DUT1, DUT2 are -| ... | tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit}= | ${10000000000} -# CPU settings -| ${system_cpus}= | ${1} -| ${vpp_cpus}= | ${5} -| ${vm_cpus}= | ${5} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4base-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4-ip4base-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4-ip4base-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4-ip4base-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-ethip4-ip4base-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-ethip4-ip4base-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4-ip4base-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4-ip4base-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-ethip4-ip4base-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-ethip4-ip4base-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-IMIX-2t2c-ethip4-ip4base-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-IMIX-2t2c-ethip4-ip4base-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-ethip4-ip4base-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-ethip4-ip4base-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-ethip4-ip4base-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-ethip4-ip4base-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-IMIX-4t4c-ethip4-ip4base-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-IMIX-4t4c-ethip4-ip4base-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrchk.robot b/tests/perf/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrchk.robot deleted file mode 100644 index f7bb1985cc..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrchk.robot +++ /dev/null @@ -1,332 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.Classify.Classify -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} -| ... | WITH NAME | dut1_v4 -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} -| ... | WITH NAME | dut2_v4 -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | IACLDST -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput IPv4 whitelist verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing, two static IPv4 /24 routes and IPv4 iAcl security whitelist -| ... | ingress /24 filter entries applied on links TG - DUT1 and DUT2 - TG. -| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-NDR value is periodically updated acording to -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and static payload. MAC addresses are matching MAC addresses of the -| ... | TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4base-iacldstbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 64 Byte frames using single trial throughput test -| | ... | at 2x 3.6mpps. -| | [Tags] | 64B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 3.6mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc02-1518B-1t1c-ethip4-ip4base-iacldstbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 1518 Byte frames using single trial throughput test -| | ... | at 2x 812743pps. -| | [Tags] | 1518B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc03-9000B-1t1c-ethip4-ip4base-iacldstbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 9000 Byte frames using single trial throughput test -| | ... | at 2x 138580pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc04-64B-2t2c-ethip4-ip4base-iacldstbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 64 Byte frames using single trial throughput test -| | ... | at 2x 6.3mpps. -| | [Tags] | 64B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 6.3mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc05-1518B-2t2c-ethip4-ip4base-iacldstbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 1518 Byte frames using single trial throughput test -| | ... | at 2x 812743pps. -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc06-9000B-2t2c-ethip4-ip4base-iacldstbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 9000 Byte frames using single trial throughput test -| | ... | at 2x 138580pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc07-64B-4t4c-ethip4-ip4base-iacldstbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 4 thread, 4 phy core, 2 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 64 Byte frames using single trial throughput test -| | ... | at 2x 9.7mpps. -| | [Tags] | 64B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 9.7mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-1518B-4t4c-ethip4-ip4base-iacldstbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 4 thread, 4 phy core, 2 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 1518 Byte frames using single trial throughput test -| | ... | at 2x 812743pps. -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc09-9000B-4t4c-ethip4-ip4base-iacldstbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 4 thread, 4 phy core, 2 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 9000 Byte frames using single trial throughput test -| | ... | at 2x 138580pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot deleted file mode 100644 index 3f2a066fe1..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot +++ /dev/null @@ -1,713 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.Classify.Classify -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} -| ... | WITH NAME | dut1_v4 -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} -| ... | WITH NAME | dut2_v4 -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | IACLDST -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput IPv4 iAcl whitelist test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing, two static IPv4 /24 routes and IPv4 iAcl security whitelist -| ... | ingress /24 filter entries applied on links TG - DUT1 and DUT2 - TG. -| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and -| ... | static payload. MAC addresses are matching MAC addresses of the TG -| ... | node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4base-iacldstbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 64 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4-ip4base-iacldstbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 64 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4-ip4base-iacldstbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4-ip4base-iacldstbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip4-ip4base-iacldstbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-ethip4-ip4base-iacldstbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4-ip4base-iacldstbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 64 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4-ip4base-iacldstbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 64 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps, LT=0.5%. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-ethip4-ip4base-iacldstbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-ethip4-ip4base-iacldstbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip4-ip4base-iacldstbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-ethip4-ip4base-iacldstbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-ethip4-ip4base-iacldstbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR -| | ... | for 64 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-ethip4-ip4base-iacldstbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR -| | ... | for 64 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-ethip4-ip4base-iacldstbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-ethip4-ip4base-iacldstbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip4-ip4base-iacldstbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-ethip4-ip4base-iacldstbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut1} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 20.20.20.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} -| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 -| | ... | ${dut2} | ip4 | dst -| | And Vpp Configures Classify Session L3 -| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} -| | ... | ip4 | dst | 10.10.10.2 -| | And Vpp Enable Input Acl Interface -| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrchk.robot b/tests/perf/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrchk.robot deleted file mode 100644 index 0ab575137f..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrchk.robot +++ /dev/null @@ -1,226 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.Policer -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} -| ... | WITH NAME | dut1_v4 -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} -| ... | WITH NAME | dut2_v4 -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | IP4FWD | BASE | DOT1Q -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput IPv4 policer verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and two static IPv4 /24 route entries and policer with 2R3C -| ... | color-aware configuration. Policer is applied on links TG - DUT1 and -| ... | DUT2 - TG. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-NDR value is periodically updated acording to -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and static payload. MAC addresses are matching MAC addresses of the -| ... | TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC2698. - -*** Variables *** -| ${cir}= | ${100} -| ${eir}= | ${150} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4base-ipolicemarkbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 1 thread, 1 phy \ -| | ... | core, 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 \ -| | ... | Byte frames using single trial throughput test at 2x 3.6mpps. -| | [Tags] | 64B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 3.6mpps -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc02-1518B-1t1c-ethip4-ip4base-ipolicemarkbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 1 thread, 1 phy \ -| | ... | core, 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 \ -| | ... | Byte frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc03-9000B-1t1c-ethip4-ip4base-ipolicemarkbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 1 thread, 1 phy \ -| | ... | core, 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 \ -| | ... | Byte frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc04-64B-2t2c-ethip4-ip4base-ipolicemarkbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 2 threads, 2 \ -| | ... | phy cores, 1 receive queue per NIC port. [Ver] Verify ref-NDR for \ -| | ... | 64 Byte frames using single trial throughput test at 2x 6.2mpps. -| | [Tags] | 64B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 6.2mpps -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc05-1518B-2t2c-ethip4-ip4base-ipolicemarkbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 2 threads, 2 \ -| | ... | phy cores, 1 receive queue per NIC port. [Ver] Verify ref-NDR for \ -| | ... | 1518 Byte frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc06-9000B-2t2c-ethip4-ip4base-ipolicemarkbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 2 threads, 2 \ -| | ... | phy cores, 1 receive queue per NIC port. [Ver] Verify ref-NDR for \ -| | ... | 9000 Byte frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc07-64B-4t4c-ethip4-ip4base-ipolicemarkbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 4 thread, 4 \ -| | ... | phy core, 2 receive queue per NIC port. [Ver] Verify ref-NDR for 64 \ -| | ... | Byte frames using single trial throughput test at 2x 10.4mpps. -| | [Tags] | 64B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 10.4mpps -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-1518B-4t4c-ethip4-ip4base-ipolicemarkbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 4 thread, 4 \ -| | ... | phy core, 2 receive queue per NIC port. [Ver] Verify ref-NDR for \ -| | ... | 1518 Byte frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc09-9000B-4t4c-ethip4-ip4base-ipolicemarkbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 4 thread, 4 \ -| | ... | phy core, 2 receive queue per NIC port. [Ver] Verify ref-NDR for \ -| | ... | 9000 Byte frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot deleted file mode 100644 index b8a5b87e20..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot +++ /dev/null @@ -1,517 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.Policer -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} -| ... | WITH NAME | dut1_v4 -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} -| ... | WITH NAME | dut2_v4 -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | IP4FWD | BASE | DOT1Q -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput IPv4 policer test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and two static IPv4 /24 route entries and policer with 2R3C -| ... | color-aware configuration. Policer is applied on links TG - DUT1 and -| ... | DUT2 - TG. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and -| ... | generated payload. MAC addresses are matching MAC addresses of the TG -| ... | node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC2698. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -| ${cir}= | ${100} -| ${eir}= | ${150} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4base-ipolicemarkbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 1 thread, 1 \ -| | ... | phy core, 1 receive queue per NIC port. [Ver] Find NDR for 64 \ -| | ... | Byte frames using binary search start at 10GE linerate, step \ -| | ... | 100kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4-ip4base-ipolicemarkbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 1 thread, 1 \ -| | ... | phy core, 1 receive queue per NIC port. [Ver] Find PDR for 64 \ -| | ... | Byte frames using binary search start at 10GE linerate, step \ -| | ... | 100kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4-ip4base-ipolicemarkbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 1 thread, 1 \ -| | ... | phy core, 1 receive queue per NIC port. [Ver] Find NDR for 1518 \ -| | ... | Byte frames using binary search start at 10GE linerate, step \ -| | ... | 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4-ip4base-ipolicemarkbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 1 thread, 1 \ -| | ... | phy core, 1 receive queue per NIC port. [Ver] Find PDR for 1518 \ -| | ... | Byte frames using binary search start at 10GE linerate, step \ -| | ... | 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip4-ip4base-ipolicemarkbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 1 thread, 1 \ -| | ... | phy core, 1 receive queue per NIC port. [Ver] Find NDR for 9000 \ -| | ... | Byte frames using binary search start at 10GE linerate, step \ -| | ... | 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-ethip4-ip4base-ipolicemarkbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 1 thread, 1 \ -| | ... | phy core, 1 receive queue per NIC port. [Ver] Find PDR for 9000 \ -| | ... | Byte frames using binary search start at 10GE linerate, step 5kpps, \ -| | ... | LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4-ip4base-ipolicemarkbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 2 threads, 2 \ -| | ... | phy cores, 1 receive queue per NIC port. [Ver] Find NDR for 64 \ -| | ... | Byte frames using binary search start at 10GE linerate, step \ -| | ... | 100kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4-ip4base-ipolicemarkbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 2 threads, 2 \ -| | ... | phy cores, 1 receive queue per NIC port. [Ver] Find PDR for 64 \ -| | ... | Byte frames using binary search start at 10GE linerate, step \ -| | ... | 100kpps, LT=0.5%. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-ethip4-ip4base-ipolicemarkbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 2 threads, 2 \ -| | ... | phy cores, 1 receive queue per NIC port. [Ver] Find NDR for 1518 \ -| | ... | Byte frames using binary search start at 10GE linerate, step \ -| | ... | 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-ethip4-ip4base-ipolicemarkbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 2 threads, 2 \ -| | ... | phy cores, 1 receive queue per NIC port. [Ver] Find PDR for 1518 \ -| | ... | Byte frames using binary search start at 10GE linerate, step \ -| | ... | 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip4-ip4base-ipolicemarkbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 2 threads, 2 \ -| | ... | phy cores, 1 receive queue per NIC port. [Ver] Find NDR for 9000 \ -| | ... | Byte frames using binary search start at 10GE linerate, step \ -| | ... | 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-ethip4-ip4base-ipolicemarkbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 2 threads, 2 \ -| | ... | phy cores, 1 receive queue per NIC port. [Ver] Find PDR for 9000 \ -| | ... | Byte frames using binary search start at 10GE linerate, step 5kpps, \ -| | ... | LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-ethip4-ip4base-ipolicemarkbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 4 threads, 4 \ -| | ... | phy cores, 2 receive queue per NIC port. [Ver] Find NDR for 64 \ -| | ... | Byte frames using binary search start at 10GE linerate, step \ -| | ... | 100kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-ethip4-ip4base-ipolicemarkbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 4 threads, 4 \ -| | ... | phy cores, 2 receive queue per NIC port. [Ver] Find PDR for 64 \ -| | ... | Byte frames using binary search start at 10GE linerate, step \ -| | ... | 100kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-ethip4-ip4base-ipolicemarkbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 4 threads, 4 \ -| | ... | phy cores, 2 receive queue per NIC port. [Ver] Find NDR for 1518 \ -| | ... | Byte frames using binary search start at 10GE linerate, step \ -| | ... | 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-ethip4-ip4base-ipolicemarkbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 4 threads, 4 \ -| | ... | phy cores, 2 receive queue per NIC port. [Ver] Find PDR for 1518 \ -| | ... | Byte frames using binary search start at 10GE linerate, step \ -| | ... | 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip4-ip4base-ipolicemarkbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 4 threads, 4 \ -| | ... | phy cores, 2 receive queue per NIC port. [Ver] Find NDR for 9000 \ -| | ... | Byte frames using binary search start at 10GE linerate, step \ -| | ... | 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-ethip4-ip4base-ipolicemarkbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and policer config with 4 threads, 4 \ -| | ... | phy cores, 2 receive queue per NIC port. [Ver] Find PDR for 9000 \ -| | ... | Byte frames using binary search start at 10GE linerate, step 5kpps, \ -| | ... | LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Set Test Variable | ${cb} | ${framesize} -| | Set Test Variable | ${eb} | ${framesize} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding in 3-node circular topology -| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-ndrchk.robot b/tests/perf/10ge2p1x520-ethip4-ip4base-ndrchk.robot deleted file mode 100644 index 0c482863e0..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4base-ndrchk.robot +++ /dev/null @@ -1,198 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} -| ... | WITH NAME | dut1_v4 -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} -| ... | WITH NAME | dut2_v4 -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | BASE | IP4BASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput IPv4 routing verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and two static IPv4 /24 route entries. DUT1 and DUT2 tested with -| ... | 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-NDR value is periodically updated acording to -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and static payload. MAC addresses are matching MAC addresses of the -| ... | TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 4.6mpps. -| | [Tags] | 64B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 4.6mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc02-1518B-1t1c-ethip4-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc03-9000B-1t1c-ethip4-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc04-64B-2t2c-ethip4-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 10.4mpps. -| | [Tags] | 64B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 10.4mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc05-1518B-2t2c-ethip4-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc06-9000B-2t2c-ethip4-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc07-64B-4t4c-ethip4-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 10.4mpps. -| | [Tags] | 64B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 10.4mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-1518B-4t4c-ethip4-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-9000B-4t4c-ethip4-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot deleted file mode 100644 index ab038fdb23..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot +++ /dev/null @@ -1,489 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} -| ... | WITH NAME | dut1_v4 -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} -| ... | WITH NAME | dut2_v4 -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | BASE | IP4BASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and two static IPv4 /24 route entries. DUT1 and DUT2 tested with -| ... | 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-ethip4-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-ethip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-ethip4-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-ethip4-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-ethip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-ethip4-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-ethip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-ethip4-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-ethip4-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc19-IMIX-1t1c-ethip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame size -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc20-IMIX-1t1c-ethip4-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame size -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-pdrchk.robot b/tests/perf/10ge2p1x520-ethip4-ip4base-pdrchk.robot deleted file mode 100644 index d58d0849a0..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4base-pdrchk.robot +++ /dev/null @@ -1,190 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} -| ... | WITH NAME | dut1_v4 -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} -| ... | WITH NAME | dut2_v4 -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | BASE | IP4BASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance pdrchk test -| ... -| Documentation | *Reference PDR throughput IPv4 routing verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and two static IPv4 /24 route entries. DUT1 and DUT2 tested with -| ... | 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-PDR value is periodically updated acording to -| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and static payload. MAC addresses are matching MAC addresses of the -| ... | TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Keywords *** -| Check PDR for IPv4 routing -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with ${wt} thread(s), ${wt}\ -| | ... | phy core(s), ${rxq} receive queue(s) per NIC port. -| | ... | [Ver] Verify ref-PDR for ${framesize} frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} -| | ... -| | # Test Variables required for test teardown -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${rate} -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | ... -| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Run Keyword If | ${get_framesize} < ${1522} -| | ... | Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Traffic should pass with partial loss | ${perf_trial_duration} -| | ... | ${rate} | ${framesize} | ${traffic_profile} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte\ -| | ... | frames using single trial throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing -| | framesize=${64} | rate=4.7mpps | wt=1 | rxq=1 - -| tc02-1518B-1t1c-ethip4-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing -| | framesize=${1518} | rate=400000pps | wt=1 | rxq=1 - -| tc03-9000B-1t1c-ethip4-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing -| | framesize=${9000} | rate=60000pps | wt=1 | rxq=1 - -| tc04-64B-2t2c-ethip4-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 thread, 2 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 2T2C | STHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing -| | framesize=${64} | rate=7.4mpps | wt=2 | rxq=1 - -| tc05-1518B-2t2c-ethip4-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 thread, 2 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing -| | framesize=${1518} | rate=400000pps | wt=2 | rxq=1 - -| tc06-9000B-2t2c-ethip4-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 thread, 2 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing -| | framesize=${9000} | rate=60000pps | wt=2 | rxq=1 - -| tc07-64B-4t4c-ethip4-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 thread, 4 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing -| | framesize=${64} | rate=7.4mpps | wt=4 | rxq=2 - -| tc08-1518B-4t4c-ethip4-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 thread, 4 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing -| | framesize=${1518} | rate=400000pps | wt=4 | rxq=2 - -| tc08-9000B-4t4c-ethip4-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 thread, 4 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing -| | framesize=${9000} | rate=60000pps | wt=4 | rxq=2 diff --git a/tests/perf/10ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot deleted file mode 100644 index f8cf8c1dcb..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot +++ /dev/null @@ -1,227 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/snat.robot -| Resource | resources/libraries/robot/traffic.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | BASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test with SNAT -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... -| Documentation | *SNAT performance test cases* -| ... -| ... | *High level description* -| ... -| ... | - NDR and PDR tests -| ... | - 3-node topology, TG-DUT1-DUT2-TG, SNAT is enabled between DUTs. -| ... | - Cores / threads: 1t1c and 2t2c -| ... | - Framesize: 64B, 1518B, IMIX -| ... | - Packet: ETH / IP(src, dst) / UDP(src_port, dst_port) / payload -| ... -| ... | *Low level description* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and two static IPv4 /24 and IPv4/20 route entries. DUT1 and DUT2 -| ... | tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, one flow per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with UDP header and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4udp-1u1p - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4base-snat-1u-1p-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 1 user and 1 port (session) per user. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4-ip4base-snat-1u-1p-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 1 user and 1 port (session) per user. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4-ip4base-snat-1u-1p-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 1 user and 1 port (session) per user. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4-ip4base-snat-1u-1p-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 1 user and 1 port (session) per user. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-ethip4-ip4base-snat-1u-1p-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 1 user and 1 port (session) per user. -| | ... | [Ver] Find NDR for IMIX frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-ethip4-ip4base-snat-1u-1p-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 1 user and 1 port (session) per user. -| | ... | [Ver] Find PDR for IMIX frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4-ip4scale200k-ndrchk.robot b/tests/perf/10ge2p1x520-ethip4-ip4scale200k-ndrchk.robot deleted file mode 100644 index 69d60d0fa4..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4scale200k-ndrchk.robot +++ /dev/null @@ -1,201 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_200K -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput IPv4 routing verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and 2x100k static IPv4 /32 route entries. DUT1 and DUT2 tested -| ... | with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-NDR value is periodically updated acording to -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long -| ... | performance tests for the same DUT confiiguration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 100k flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and static payload. Incrementing of IP.dst (IPv4 destination address) -| ... | field is applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -| ${rts_per_flow}= | ${100000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${rts_per_flow} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4scale200k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 4.3mpps. -| | [Tags] | 64B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 4.3mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc02-1518B-1t1c-ethip4-ip4scale200k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc03-9000B-1t1c-ethip4-ip4scale200k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc04-64B-2t2c-ethip4-ip4scale200k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 9.1mpps. -| | [Tags] | 64B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 9.1mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc05-1518B-2t2c-ethip4-ip4scale200k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc06-9000B-2t2c-ethip4-ip4scale200k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc07-64B-4t4c-ethip4-ip4scale200k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 10.4mpps. -| | [Tags] | 64B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 10.4mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-1518B-4t4c-ethip4-ip4scale200k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc09-9000B-4t4c-ethip4-ip4scale200k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot deleted file mode 100644 index 9d97f62db0..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot +++ /dev/null @@ -1,457 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_200K -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and 2x100k static IPv4 /32 route entries. DUT1 and DUT2 tested -| ... | with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 100k flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and -| ... | static payload. MAC addresses are matching MAC addresses of the TG -| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field -| ... | is applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -| ${rts_per_flow}= | 100000 -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${rts_per_flow} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4scale200k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4-ip4scale200k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4-ip4scale200k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4-ip4scale200k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip4-ip4scale200k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-ethip4-ip4scale200k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4-ip4scale200k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4-ip4scale200k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-ethip4-ip4scale200k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-ethip4-ip4scale200k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip4-ip4scale200k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-ethip4-ip4scale200k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-ethip4-ip4scale200k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-ethip4-ip4scale200k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-ethip4-ip4scale200k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-ethip4-ip4scale200k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip4-ip4scale200k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-ethip4-ip4scale200k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4-ip4scale20k-ndrchk.robot b/tests/perf/10ge2p1x520-ethip4-ip4scale20k-ndrchk.robot deleted file mode 100644 index f9fc2f1738..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4scale20k-ndrchk.robot +++ /dev/null @@ -1,210 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_20K -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput IPv4 routing verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and 2x10k static IPv4 /32 route entries. DUT1 and DUT2 tested -| ... | with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-NDR value is periodically updated acording to -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long -| ... | performance tests for the same DUT confiiguration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 10k flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and static payload. Incrementing of IP.dst (IPv4 destination address) -| ... | field is applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -| ${rts_per_flow}= | ${10000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${rts_per_flow} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4scale20k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 4.3mpps. -| | [Tags] | 64B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 4.3mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc02-1518B-1t1c-ethip4-ip4scale20k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc03-9000B-1t1c-ethip4-ip4scale20k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc04-64B-2t2c-ethip4-ip4scale20k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 9.0mpps. -| | [Tags] | 64B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 9.0mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc05-1518B-2t2c-ethip4-ip4scale20k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc06-9000B-2t2c-ethip4-ip4scale20k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc07-64B-4t4c-ethip4-ip4scale20k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 10.4mpps. -| | [Tags] | 64B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 10.4mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc08-1518B-4t4c-ethip4-ip4scale20k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc09-9000B-4t4c-ethip4-ip4scale20k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot deleted file mode 100644 index 0117fb4e5c..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot +++ /dev/null @@ -1,457 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_20K -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and 2x10k static IPv4 /32 route entries. DUT1 and DUT2 tested -| ... | with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 10k flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and -| ... | static payload. MAC addresses are matching MAC addresses of the TG -| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field -| ... | is applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -| ${rts_per_flow}= | ${10000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${rts_per_flow} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4scale20k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4-ip4scale20k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4-ip4scale20k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4-ip4scale20k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip4-ip4scale20k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-ethip4-ip4scale20k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4-ip4scale20k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4-ip4scale20k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-ethip4-ip4scale20k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-ethip4-ip4scale20k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip4-ip4scale20k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-ethip4-ip4scale20k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-ethip4-ip4scale20k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-ethip4-ip4scale20k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-ethip4-ip4scale20k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-ethip4-ip4scale20k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip4-ip4scale20k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-ethip4-ip4scale20k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4-ip4scale2m-ndrchk.robot b/tests/perf/10ge2p1x520-ethip4-ip4scale2m-ndrchk.robot deleted file mode 100644 index b1ea5ed8d4..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4scale2m-ndrchk.robot +++ /dev/null @@ -1,210 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_2M -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput IPv4 routing verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and 2x1M static IPv4 /32 route entries. DUT1 and DUT2 tested -| ... | with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-NDR value is periodically updated acording to -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long -| ... | performance tests for the same DUT confiiguration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 1M flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and static payload. Incrementing of IP.dst (IPv4 destination address) -| ... | field is applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -| ${rts_per_flow}= | ${1000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${rts_per_flow} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4scale2m-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 3.7mpps. -| | [Tags] | 64B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 3.7mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc02-1518B-1t1c-ethip4-ip4scale2m-ndrchk -| | [Documentation] -| | ... | Verify ref-NDR for 1518 Byte frames using single trial throughput -| | ... | test. DUT runs IPv4 routing config with 1 thread, 1 phy core, 1 -| | ... | receive queue per NIC port at 2x 812743pps. -| | [Tags] | 1518B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc03-9000B-1t1c-ethip4-ip4scale2m-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc04-64B-2t2c-ethip4-ip4scale2m-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 7.6mpps. -| | [Tags] | 64B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 7.6mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc05-1518B-2t2c-ethip4-ip4scale2m-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc06-9000B-2t2c-ethip4-ip4scale2m-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc07-64B-4t4c-ethip4-ip4scale2m-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 10.4mpps. -| | [Tags] | 64B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 10.4mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc08-1518B-4t4c-ethip4-ip4scale2m-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc09-9000B-4t4c-ethip4-ip4scale2m-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot deleted file mode 100644 index c397d82c87..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot +++ /dev/null @@ -1,457 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_2M -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and 2x1M static IPv4 /32 route entries. DUT1 and DUT2 tested -| ... | with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 1M flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and -| ... | static payload. MAC addresses are matching MAC addresses of the TG -| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field -| ... | is applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -| ${rts_per_flow}= | ${1000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${rts_per_flow} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4scale2m-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4-ip4scale2m-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4-ip4scale2m-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4-ip4scale2m-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip4-ip4scale2m-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-ethip4-ip4scale2m-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4-ip4scale2m-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4-ip4scale2m-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-ethip4-ip4scale2m-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-ethip4-ip4scale2m-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip4-ip4scale2m-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-ethip4-ip4scale2m-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-ethip4-ip4scale2m-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-ethip4-ip4scale2m-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-ethip4-ip4scale2m-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-ethip4-ip4scale2m-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip4-ip4scale2m-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-ethip4-ip4scale2m-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4-ip4scale2m-pdrchk.robot b/tests/perf/10ge2p1x520-ethip4-ip4scale2m-pdrchk.robot deleted file mode 100644 index c983066b5b..0000000000 --- a/tests/perf/10ge2p1x520-ethip4-ip4scale2m-pdrchk.robot +++ /dev/null @@ -1,185 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_2M -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance pdrchk test -| ... -| Documentation | *Reference PDR throughput IPv4 routing verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and 2x1M static IPv4 /32 route entries. DUT1 and DUT2 tested -| ... | with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG verifies throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. Ref-PDR value is periodically updated acording -| ... | to formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 1M flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and static payload. Incrementing of IP.dst (IPv4 destination address) -| ... | field is applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -| ${rts_per_flow}= | ${1000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${rts_per_flow} - -*** Keywords *** -| Check PDR for IPv4 routing -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with ${wt} thread, ${wt} phy\ -| | ... | core, ${rxq} receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for ${framesize} Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} -| | ... -| | # Test Variables required for test and test teardown -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${rate} -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | ... -| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Run Keyword If | ${get_framesize} < ${1522} -| | ... | Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with partial loss | ${perf_trial_duration} -| | ... | ${rate} | ${framesize} | ${traffic_profile} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4scale2m-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing -| | framesize=${64} | rate=3.0mpps | wt=1 | rxq=1 - -| tc02-1518B-1t1c-ethip4-ip4scale2m-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | trial throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing -| | framesize=${1518} | rate=600000pps | wt=1 | rxq=1 - -| tc03-9000B-1t1c-ethip4-ip4scale2m-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing -| | framesize=${9000} | rate=100000pps | wt=1 | rxq=1 - -| tc04-64B-2t2c-ethip4-ip4scale2m-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing -| | framesize=${64} | rate=7.0mpps | wt=2 | rxq=1 - -| tc05-1518B-2t2c-ethip4-ip4scale2m-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing -| | framesize=${1518} | rate=500000pps | wt=2 | rxq=1 - -| tc06-9000B-2t2c-ethip4-ip4scale2m-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing -| | framesize=${9000} | rate=100000pps | wt=2 | rxq=1 - -| tc07-64B-4t4c-ethip4-ip4scale2m-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing -| | framesize=${64} | rate=10.0mpps | wt=4 | rxq=2 - -| tc08-1518B-4t4c-ethip4-ip4scale2m-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing -| | framesize=${1518} | rate=500000pps | wt=4 | rxq=2 - -| tc09-9000B-4t4c-ethip4-ip4scale2m-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-PDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv4 routing -| | framesize=${9000} | rate=100000pps | wt=4 | rxq=2 diff --git a/tests/perf/10ge2p1x520-ethip4lispip4-ip4base-ndrchk.robot b/tests/perf/10ge2p1x520-ethip4lispip4-ip4base-ndrchk.robot deleted file mode 100644 index 82002a052d..0000000000 --- a/tests/perf/10ge2p1x520-ethip4lispip4-ip4base-ndrchk.robot +++ /dev/null @@ -1,266 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot -| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | IP4FWD | ENCAP | LISP | IP4UNRLAY | IP4OVRLAY -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput Lisp tunnel verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv4 on DUT1-DUT2\ -| ... | Eth-IPv4 on TG-DUTn for IPv4 routing over LISPoIPv4 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ -| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ -| ... | DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520\ -| ... | Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies\ -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet\ -| ... | loss tolerance. Ref-NDR value is periodically updated acording to\ -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long\ -| ... | performance tests for the same DUT confiiguration. Test packets are\ -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3\ -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ -| ... | all packets containing Ethernet header, IPv4 header with\ -| ... | IP protocol=61 and generated payload. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4lispip4-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial throughput\ -| | ... | test at 2x 1.9mpps. -| | [Tags] | 64B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 1.9mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc02-1480B-1t1c-ethip4lispip4-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1480 Byte frames using single trial\ -| | ... | throughput test at 2x 740000pps. -| | [Tags] | 1480B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1480} -| | ${rate}= | Set Variable | 740000pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc03-9000B-1t1c-ethip4lispip4-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x 120000pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 120000pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc04-64B-2t2c-ethip4lispip4-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x 3.6mpps. -| | [Tags] | 64B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 3.6mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc05-1480B-2t2c-ethip4lispip4-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1480 Byte frames using single trial\ -| | ... | throughput test at 2x 740000pps. -| | [Tags] | 1480B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1480} -| | ${rate}= | Set Variable | 740000pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc06-9000B-2t2c-ethip4lispip4-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x 120000pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 120000pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc07-64B-4t4c-ethip4lispip4-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x 3.5mpps. -| | [Tags] | 64B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 3.5mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-1480B-4t4c-ethip4lispip4-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 1480 Byte frames using single trial\ -| | ... | throughput test at 2x 740000pps. -| | [Tags] | 1480B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1480} -| | ${rate}= | Set Variable | 740000pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc09-9000B-4t4c-ethip4lispip4-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x 120000pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 120000pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot deleted file mode 100644 index 715ed21faf..0000000000 --- a/tests/perf/10ge2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot +++ /dev/null @@ -1,595 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot -| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | IP4FWD | ENCAP | LISP | IP4UNRLAY | IP4OVRLAY -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC6830: Pkt throughput Lisp test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv4 on DUT1-DUT2,\ -| ... | Eth-IPv4 on TG-DUTn for IPv4 routing over LISPoIPv4 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ -| ... | routing and static routes. LISPoIPv4 tunnel is configured between DUT1\ -| ... | and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ -| ... | of packets transmitted. NDR and PDR are discovered for different\ -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4lispip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4lispip4-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1480B-1t1c-ethip4lispip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 1480 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps. -| | [Tags] | 1480B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1480} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1480B-1t1c-ethip4lispip4-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 1480 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1480B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1480} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip4lispip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-ethip4lispip4-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4lispip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4lispip4-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1480B-2t2c-ethip4lispip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 1480 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps. -| | [Tags] | 1480B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1480} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1480B-2t2c-ethip4lispip4-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 1480 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1480B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1480} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip4lispip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-ethip4lispip4-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-ethip4lispip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-ethip4lispip4-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1480B-4t4c-ethip4lispip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 1480 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps. -| | [Tags] | 1480B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1480} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1480B-4t4c-ethip4lispip4-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 1480 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1480B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1480} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip4lispip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-ethip4lispip4-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4lispip4-ip4base-pdrchk.robot b/tests/perf/10ge2p1x520-ethip4lispip4-ip4base-pdrchk.robot deleted file mode 100644 index 643274f049..0000000000 --- a/tests/perf/10ge2p1x520-ethip4lispip4-ip4base-pdrchk.robot +++ /dev/null @@ -1,193 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot -| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK -| ... | NIC_Intel-X520-DA2 | IP4FWD | ENCAP | LISP | IP4UNRLAY | IP4OVRLAY -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance pdrchk test -| ... -| Documentation | *Reference PDR throughput Lisp tunnel verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv4 on DUT1-DUT2\ -| ... | Eth-IPv4 on TG-DUTn for IPv4 routing over LISPoIPv4 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ -| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ -| ... | DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520\ -| ... | Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies\ -| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet\ -| ... | loss tolerance. Ref-PDR value is periodically updated acording to\ -| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long\ -| ... | performance tests for the same DUT confiiguration. Test packets are\ -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3\ -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ -| ... | all packets containing Ethernet header, IPv4 header with\ -| ... | IP protocol=61 and generated payload. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Keywords *** -| Check PDR for Lisp IPv4 over IPv4 forwarding -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with ${wt} thread, ${wt} phy core,\ -| | ... | ${rxq} receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for ${framesize} Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} -| | ... -| | # Test Variables required for test and test teardown -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${rate} -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | ... -| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Run Keyword If | ${get_framesize} < ${1522} -| | ... | Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} -| | ... | ${dut2_to_tg_ip4} | ${prefix4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} -| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} -| | Then Traffic should pass with partial loss | ${perf_trial_duration} -| | ... | ${rate} | ${framesize} | ${traffic_profile} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4lispip4-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv4 over IPv4 forwarding -| | framesize=${64} | rate=1.9mpps | wt=1 | rxq=1 - -| tc02-1480B-1t1c-ethip4lispip4-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1480 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1480B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv4 over IPv4 forwarding -| | framesize=${1480} | rate=370000pps | wt=1 | rxq=1 - -| tc03-9000B-1t1c-ethip4lispip4-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv4 over IPv4 forwarding -| | framesize=${9000} | rate=60000pps | wt=1 | rxq=1 - -| tc04-64B-2t2c-ethip4lispip4-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv4 over IPv4 forwarding -| | framesize=${64} | rate=3.6mpps | wt=2 | rxq=1 - -| tc05-1480B-2t2c-ethip4lispip4-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1480 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1480B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv4 over IPv4 forwarding -| | framesize=${1480} | rate=370000pps | wt=2 | rxq=1 - -| tc06-9000B-2t2c-ethip4lispip4-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv4 over IPv4 forwarding -| | framesize=${9000} | rate=60000pps | wt=2 | rxq=1 - -| tc07-64B-4t4c-ethip4lispip4-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv4 over IPv4 forwarding -| | framesize=${64} | rate=3.5mpps | wt=4 | rxq=2 - -| tc08-1480B-4t4c-ethip4lispip4-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 1480 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1480B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv4 over IPv4 forwarding -| | framesize=${1480} | rate=370000pps | wt=4 | rxq=2 - -| tc09-9000B-4t4c-ethip4lispip4-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv4 over IPv4 forwarding -| | framesize=${9000} | rate=60000pps | wt=4 | rxq=2 diff --git a/tests/perf/10ge2p1x520-ethip4lispip6-ip4base-ndrchk.robot b/tests/perf/10ge2p1x520-ethip4lispip6-ip4base-ndrchk.robot deleted file mode 100644 index aee159f98c..0000000000 --- a/tests/perf/10ge2p1x520-ethip4lispip6-ip4base-ndrchk.robot +++ /dev/null @@ -1,266 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot -| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | IP4FWD | ENCAP | LISP | IP6UNRLAY | IP4OVRLAY -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput Lisp tunnel verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv6 on DUT1-DUT2,\ -| ... | Eth-IPv4 on TG-DUTn for IPv4 routing over LISPoIPv6 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ -| ... | routing and static routes. LISPoIPv6 tunnel is configured between\ -| ... | DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic\ -| ... | by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies\ -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet\ -| ... | loss tolerance. Ref-NDR value is periodically updated acording to\ -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long -| ... | performance tests for the same DUT confiiguration. Test packets are\ -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3\ -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ -| ... | all packets containing Ethernet header, IPv4 header or IPv6 header with\ -| ... | IP protocol=61 and generated payload. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4lispip6-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x 1.53mpps. -| | [Tags] | 64B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 1.53mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc02-1460B-1t1c-ethip4lispip6-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ -| | ... | throughput test at 2x 720000pps. -| | [Tags] | 1460B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1460} -| | ${rate}= | Set Variable | 720000pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc03-9000B-1t1c-ethip4lispip6-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x 120000pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 120000pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc04-64B-2t2c-ethip4lispip6-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x 3.25mpps. -| | [Tags] | 64B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 3.25mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc05-1460B-2t2c-ethip4lispip6-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ -| | ... | throughput test at 2x 720000pps. -| | [Tags] | 1460B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1460} -| | ${rate}= | Set Variable | 720000pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc06-9000B-2t2c-ethip4lispip6-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x 120000pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 120000pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc07-64B-4t4c-ethip4lispip6-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x 3.12mpps. -| | [Tags] | 64B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 3.12mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-1460B-4t4c-ethip4lispip6-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ -| | ... | throughput test at 2x 720000pps. -| | [Tags] | 1460B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1460} -| | ${rate}= | Set Variable | 720000pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc09-9000B-4t4c-ethip4lispip6-ip4base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x 120000pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 120000pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot deleted file mode 100644 index 356750ae8f..0000000000 --- a/tests/perf/10ge2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot +++ /dev/null @@ -1,596 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot -| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | IP4FWD | ENCAP | LISP | IP6UNRLAY | IP4OVRLAY -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC6830: Pkt throughput Lisp test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv6 on DUT1-DUT2 and\ -| ... | Eth-IPv4 on TG-DUTn for IPv4 routing over LISPoIPv6 tunnel.\ -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ -| ... | routing and static routes. LISPoIPv6 tunnel is configured\ -| ... | between DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520\ -| ... | Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ -| ... | of packets transmitted. NDR and PDR are discovered for different\ -| ... | Ethernet L2 frame sizes using either binary search or linear search\ -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4lispip6-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4lispip6-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1460B-1t1c-ethip4lispip6-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 1460 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps. -| | [Tags] | 1460B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1460} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1460B-1t1c-ethip4lispip6-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 1460 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1460B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1460} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip4lispip6-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-ethip4lispip6-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4lispip6-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4lispip6-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1460B-2t2c-ethip4lispip6-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 1460 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps. -| | [Tags] | 1460B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1460} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1460B-2t2c-ethip4lispip6-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 1460 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1460B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1460} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip4lispip6-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-ethip4lispip6-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-ethip4lispip6-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-ethip4lispip6-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1460B-4t4c-ethip4lispip6-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 1460 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps. -| | [Tags] | 1460B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1460} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1460B-4t4c-ethip4lispip6-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 1460 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1460B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1460} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip4lispip6-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-ethip4lispip6-ip4base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4lispip6-ip4base-pdrchk.robot b/tests/perf/10ge2p1x520-ethip4lispip6-ip4base-pdrchk.robot deleted file mode 100644 index 59fa02eb54..0000000000 --- a/tests/perf/10ge2p1x520-ethip4lispip6-ip4base-pdrchk.robot +++ /dev/null @@ -1,193 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot -| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK -| ... | NIC_Intel-X520-DA2 | IP4FWD | ENCAP | LISP | IP6UNRLAY | IP4OVRLAY -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance pdrchk test -| ... -| Documentation | *Reference PDR throughput Lisp tunnel verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv6 on DUT1-DUT2,\ -| ... | Eth-IPv4 on TG-DUTn for IPv4 routing over LISPoIPv6 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ -| ... | routing and static routes. LISPoIPv6 tunnel is configured between\ -| ... | DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic\ -| ... | by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies\ -| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet\ -| ... | loss tolerance. Ref-PDR value is periodically updated acording to\ -| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long -| ... | performance tests for the same DUT confiiguration. Test packets are\ -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3\ -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ -| ... | all packets containing Ethernet header, IPv4 header or IPv6 header with\ -| ... | IP protocol=61 and generated payload. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Keywords *** -| Check PDR for Lisp IPv4 over IPv6 forwarding -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with ${wt} thread, ${wt} phy core,\ -| | ... | ${rxq} receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for ${framesize} Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} -| | ... -| | # Test Variables required for test and test teardown -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${rate} -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | ... -| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Run Keyword If | ${get_framesize} < ${1522} -| | ... | Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} -| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} -| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} -| | Then Traffic should pass with partial loss | ${perf_trial_duration} -| | ... | ${rate} | ${framesize} | ${traffic_profile} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4lispip6-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv4 over IPv6 forwarding -| | framesize=${64} | rate=1.53mpps | wt=1 | rxq=1 - -| tc02-1460B-1t1c-ethip4lispip6-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1460B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv4 over IPv6 forwarding -| | framesize=${1460} | rate=360000pps | wt=1 | rxq=1 - -| tc03-9000B-1t1c-ethip4lispip6-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv4 over IPv6 forwarding -| | framesize=${9000} | rate=60000pps | wt=1 | rxq=1 - -| tc04-64B-2t2c-ethip4lispip6-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv4 over IPv6 forwarding -| | framesize=${64} | rate=3.25mpps | wt=2 | rxq=1 - -| tc05-1460B-2t2c-ethip4lispip6-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1460B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv4 over IPv6 forwarding -| | framesize=${1460} | rate=360000pps | wt=2 | rxq=1 - -| tc06-9000B-2t2c-ethip4lispip6-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv4 over IPv6 forwarding -| | framesize=${9000} | rate=60000pps | wt=2 | rxq=1 - -| tc07-64B-4t4c-ethip4lispip6-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv4 over IPv6 forwarding -| | framesize=${64} | rate=3.12mpps | wt=4 | rxq=2 - -| tc08-1460B-4t4c-ethip4lispip6-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1460B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv4 over IPv6 forwarding -| | framesize=${1460} | rate=360000pps | wt=4 | rxq=2 - -| tc09-9000B-4t4c-ethip4lispip6-ip4base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv4 over IPv6 forwarding -| | framesize=${9000} | rate=60000pps | wt=4 | rxq=2 diff --git a/tests/perf/10ge2p1x520-ethip4udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot deleted file mode 100644 index a4533d6c02..0000000000 --- a/tests/perf/10ge2p1x520-ethip4udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot +++ /dev/null @@ -1,229 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/snat.robot -| Resource | resources/libraries/robot/traffic.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | BASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test with SNAT -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... -| Documentation | *SNAT performance test cases* -| ... -| ... | *High level description* -| ... -| ... | - NDR and PDR tests -| ... | - 3-node topology, TG-DUT1-DUT2-TG, SNAT is enabled between DUTs. -| ... | - Cores / threads: 1t1c and 2t2c -| ... | - Framesize: 64B, 1518B, IMIX -| ... | - Packet: ETH / IP(src, dst) / UDP(src_port, dst_port) / payload -| ... | - scale: src: 1 user, 10 users, 100 users, ..., 4000 up to the memory -| ... | limit; 15 ports per user -| ... -| ... | *Low level description* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and two static IPv4 /24 and IPv4/20 route entries. DUT1 and DUT2 -| ... | tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, one flow per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with UDP header and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4udp-1u15p - -*** Test Cases *** -| tc01-64B-1t1c-ethip4udp-ip4base-udpsrcscale15-snat-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 1 user and 15 ports (sessions) per user. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4udp-ip4base-udpsrcscale15-snat-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 1 user and 15 ports (sessions) per user. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4udp-ip4base-udpsrcscale15-snat-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 1 user and 15 ports (sessions) per user. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4udp-ip4base-udpsrcscale15-snat-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 1 user and 15 ports (sessions) per user. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-ethip4udp-ip4base-udpsrcscale15-snat-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 1 user and 15 ports (sessions) per user. -| | ... | [Ver] Find NDR for IMIX frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-ethip4udp-ip4base-udpsrcscale15-snat-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 1 user and 15 ports (sessions) per user. -| | ... | [Ver] Find PDR for IMIX frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot deleted file mode 100644 index 6a6157c323..0000000000 --- a/tests/perf/10ge2p1x520-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot +++ /dev/null @@ -1,230 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/snat.robot -| Resource | resources/libraries/robot/traffic.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | SRC_USER_10 -| ... | SCALE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test with SNAT -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... -| Documentation | *SNAT performance test cases* -| ... -| ... | *High level description* -| ... -| ... | - NDR and PDR tests -| ... | - 3-node topology, TG-DUT1-DUT2-TG, SNAT is enabled between DUTs. -| ... | - Cores / threads: 1t1c and 2t2c -| ... | - Framesize: 64B, 1518B, IMIX -| ... | - Packet: ETH / IP(src, dst) / UDP(src_port, dst_port) / payload -| ... | - scale: src: 1 user, 10 users, 100 users, ..., 4000 up to the memory -| ... | limit; 15 ports per user -| ... -| ... | *Low level description* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and two static IPv4 /24 and IPv4/20 route entries. DUT1 and DUT2 -| ... | tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, one flow per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with UDP header and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4udp-10u15p - -*** Test Cases *** -| tc01-64B-1t1c-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 10 users and 15 ports (sessions) per user. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4udp-ip4scale10-udpsrcscale15-snat-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 10 users and 15 ports (sessions) per user. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 10 users and 15 ports (sessions) per user. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4udp-ip4scale10-udpsrcscale15-snat-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 10 users and 15 ports (sessions) per user. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 10 users and 15 ports (sessions) per user. -| | ... | [Ver] Find NDR for IMIX frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-ethip4udp-ip4scale10-udpsrcscale15-snat-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 10 users and 15 ports (sessions) per user. -| | ... | [Ver] Find PDR for IMIX frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot deleted file mode 100644 index b01168fde0..0000000000 --- a/tests/perf/10ge2p1x520-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot +++ /dev/null @@ -1,230 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/snat.robot -| Resource | resources/libraries/robot/traffic.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | SRC_USER_100 -| ... | SCALE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test with SNAT -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... -| Documentation | *SNAT performance test cases* -| ... -| ... | *High level description* -| ... -| ... | - NDR and PDR tests -| ... | - 3-node topology, TG-DUT1-DUT2-TG, SNAT is enabled between DUTs. -| ... | - Cores / threads: 1t1c and 2t2c -| ... | - Framesize: 64B, 1518B, IMIX -| ... | - Packet: ETH / IP(src, dst) / UDP(src_port, dst_port) / payload -| ... | - scale: src: 1 user, 10 users, 100 users, ..., 4000 up to the memory -| ... | limit; 15 ports per user -| ... -| ... | *Low level description* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and two static IPv4 /24 and IPv4/20 route entries. DUT1 and DUT2 -| ... | tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, one flow per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with UDP header and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4udp-100u15p - -*** Test Cases *** -| tc01-64B-1t1c-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 100 users and 15 ports (sessions) per user. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4udp-ip4scale100-udpsrcscale15-snat-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 100 users and 15 ports (sessions) per user. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 100 users and 15 ports (sessions) per user. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4udp-ip4scale100-udpsrcscale15-snat-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 100 users and 15 ports (sessions) per user. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 100 users and 15 ports (sessions) per user. -| | ... | [Ver] Find NDR for IMIX frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-ethip4udp-ip4scale100-udpsrcscale15-snat-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 100 users and 15 ports (sessions) per user. -| | ... | [Ver] Find PDR for IMIX frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot deleted file mode 100644 index fda5a15801..0000000000 --- a/tests/perf/10ge2p1x520-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot +++ /dev/null @@ -1,230 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/snat.robot -| Resource | resources/libraries/robot/traffic.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | SRC_USER_1000 -| ... | SCALE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test with SNAT -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... -| Documentation | *SNAT performance test cases* -| ... -| ... | *High level description* -| ... -| ... | - NDR and PDR tests -| ... | - 3-node topology, TG-DUT1-DUT2-TG, SNAT is enabled between DUTs. -| ... | - Cores / threads: 1t1c and 2t2c -| ... | - Framesize: 64B, 1518B, IMIX -| ... | - Packet: ETH / IP(src, dst) / UDP(src_port, dst_port) / payload -| ... | - scale: src: 1 user, 10 users, 100 users, ..., 4000 up to the memory -| ... | limit; 15 ports per user -| ... -| ... | *Low level description* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and two static IPv4 /24 and IPv4/20 route entries. DUT1 and DUT2 -| ... | tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, one flow per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with UDP header and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4udp-1000u15p - -*** Test Cases *** -| tc01-64B-1t1c-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 1000 users and 15 ports (sessions) per user. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4udp-ip4scale1000-udpsrcscale15-snat-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 1000 users and 15 ports (sessions) per user. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 1000 users and 15 ports (sessions) per user. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4udp-ip4scale1000-udpsrcscale15-snat-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 1000 users and 15 ports (sessions) per user. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 1000 users and 15 ports (sessions) per user. -| | ... | [Ver] Find NDR for IMIX frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-ethip4udp-ip4scale1000-udpsrcscale15-snat-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 1000 users and 15 ports (sessions) per user. -| | ... | [Ver] Find PDR for IMIX frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot deleted file mode 100644 index 3e26427522..0000000000 --- a/tests/perf/10ge2p1x520-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot +++ /dev/null @@ -1,124 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/snat.robot -| Resource | resources/libraries/robot/traffic.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | SRC_USER_2000 -| ... | SCALE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test with SNAT -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... -| Documentation | *SNAT performance test cases* -| ... -| ... | *High level description* -| ... -| ... | - NDR and PDR tests -| ... | - 3-node topology, TG-DUT1-DUT2-TG, SNAT is enabled between DUTs. -| ... | - Cores / threads: 1t1c and 2t2c -| ... | - Framesize: 64B, 1518B, IMIX -| ... | - Packet: ETH / IP(src, dst) / UDP(src_port, dst_port) / payload -| ... | - scale: src: 1 user, 10 users, 100 users, ..., 4000 up to the memory -| ... | limit; 15 ports per user -| ... -| ... | *Low level description* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and two static IPv4 /24 and IPv4/20 route entries. DUT1 and DUT2 -| ... | tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, one flow per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with UDP header and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4udp-2000u15p - -*** Test Cases *** -| tc01-64B-1t1c-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 2000 users and 15 ports (sessions) per user. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4udp-ip4scale2000-udpsrcscale15-snat-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 2000 users and 15 ports (sessions) per user. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot deleted file mode 100644 index 3debd2aa1f..0000000000 --- a/tests/perf/10ge2p1x520-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot +++ /dev/null @@ -1,124 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/snat.robot -| Resource | resources/libraries/robot/traffic.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | SRC_USER_4000 -| ... | SCALE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test with SNAT -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... -| Documentation | *SNAT performance test cases* -| ... -| ... | *High level description* -| ... -| ... | - NDR and PDR tests -| ... | - 3-node topology, TG-DUT1-DUT2-TG, SNAT is enabled between DUTs. -| ... | - Cores / threads: 1t1c and 2t2c -| ... | - Framesize: 64B, 1518B, IMIX -| ... | - Packet: ETH / IP(src, dst) / UDP(src_port, dst_port) / payload -| ... | - scale: src: 1 user, 10 users, 100 users, ..., 4000 up to the memory -| ... | limit; 15 ports per user -| ... -| ... | *Low level description* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and two static IPv4 /24 and IPv4/20 route entries. DUT1 and DUT2 -| ... | tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, one flow per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with UDP header and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4udp-4000u15p - -*** Test Cases *** -| tc01-64B-1t1c-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 4000 users and 15 ports (sessions) per user. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4udp-ip4scale4000-udpsrcscale15-snat-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ -| | ... | 4000 users and 15 ports (sessions) per user. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add SNAT to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize SNAT in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot deleted file mode 100644 index 49db34e2b4..0000000000 --- a/tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot +++ /dev/null @@ -1,675 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.QemuUtils -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY -| ... | VHOST | VM -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} -| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} -| ... -| Documentation | *RFC2544: Packet throughput L2BD test cases with VXLANoIPv4 -| ... | and vhost* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. -| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- -| ... | domain and MAC learning enabled. Qemu Guest is connected to VPP via -| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting -| ... | vhost-user interfaces using 5 cores pinned to cpus 5-9 and 2048M -| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores -| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to -| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520 -| ... | Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -| ${vxlan_overhead} | ${50} -# Socket names -| ${bd_id1}= | 1 -| ${bd_id2}= | 2 -| ${sock1}= | /tmp/sock-1-${bd_id1} -| ${sock2}= | /tmp/sock-1-${bd_id2} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ -| | ... | 10GE linerate, step 5kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${avg_framesize}= | Set Variable | ${403.833} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for IMIX_v4_1 frame size using binary search start at\ -| | ... | 10GE linerate, step 5kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${avg_framesize}= | Set Variable | ${403.833} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc11-IMIX-2t2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 frame size using binary search start at\ -| | ... | 10GE linerate, step 5kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | ... -| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${avg_framesize}= | Set Variable | ${403.833} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-IMIX-2t2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for IMIX_v4_1 frame size using binary search start at\ -| | ... | 10GE linerate, step 5kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | ... -| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${avg_framesize}= | Set Variable | ${403.833} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc17-IMIX-4t4c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 frame size using binary search start at\ -| | ... | 10GE linerate, step 5kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | ... -| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${avg_framesize}= | Set Variable | ${403.833} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-IMIX-4t4c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for IMIX_v4_1 frame size using binary search start at\ -| | ... | 10GE linerate, step 5kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | ... -| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${avg_framesize}= | Set Variable | ${403.833} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot deleted file mode 100644 index 06d8ef9b12..0000000000 --- a/tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot +++ /dev/null @@ -1,487 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Packet throughput L2BD with VXLANoIPv4 test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain on TG-DUTn. -| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge -| ... | domain. VXLAN tunnels are configured between L2BDs on DUT1 and DUT2. -| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and -| ... | generated payload. MAC addresses are matching MAC addresses of the TG -| ... | node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -| ${vxlan_overhead} | ${50} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4vxlan-l2bdbasemaclrn-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4vxlan-l2bdbasemaclrn-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4vxlan-l2bdbasemaclrn-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4vxlan-l2bdbasemaclrn-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip4vxlan-l2bdbasemaclrn-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 5kpps. -| | ... -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-ethip4vxlan-l2bdbasemaclrn-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD forwarding config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 5kpps, LT=0.5%. -| | ... -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4vxlan-l2bdbasemaclrn-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD forwarding config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4vxlan-l2bdbasemaclrn-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD forwarding config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-ethip4vxlan-l2bdbasemaclrn-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD forwarding config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-ethip4vxlan-l2bdbasemaclrn-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD forwarding config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip4vxlan-l2bdbasemaclrn-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD forwarding config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 5kpps. -| | ... -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-ethip4vxlan-l2bdbasemaclrn-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD forwarding config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 5kpps, LT=0.5%. -| | ... -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-ethip4vxlan-l2bdbasemaclrn-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD forwarding config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-ethip4vxlan-l2bdbasemaclrn-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD forwarding config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-ethip4vxlan-l2bdbasemaclrn-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD forwarding config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-ethip4vxlan-l2bdbasemaclrn-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD forwarding config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip4vxlan-l2bdbasemaclrn-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD forwarding config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 5kpps. -| | ... -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-ethip4vxlan-l2bdbasemaclrn-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD forwarding config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 5kpps, LT=0.5%. -| | ... -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-pdrchk.robot b/tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-pdrchk.robot deleted file mode 100644 index cd9aa6b107..0000000000 --- a/tests/perf/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-pdrchk.robot +++ /dev/null @@ -1,186 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK -| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance pdrchk test -| ... -| Documentation | *RFC2544: Packet throughput L2BD with VXLANoIPv4 test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain on TG-DUTn. -| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge -| ... | domain. VXLAN tunnels are configured between L2BDs on DUT1 and DUT2. -| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG verifies throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. Ref-PDR value is periodically updated acording -| ... | to formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and generated payload. MAC addresses are matching MAC addresses of the -| ... | TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348. - -*** Variables *** -| ${vxlan_overhead} | ${50} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Keywords *** -| Check PDR for L2BD forwarding with VXLAN over IPv4 -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config config with ${wt} thread, ${wt} phy\ -| | ... | core, ${rxq} receive queue per NIC port. -| | ... | [Ver] Verify ref-PDR for ${framesize} Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} -| | ... -| | # Test Variables required for test and test teardown -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${rate} -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | ... -| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Run Keyword If | ${get_framesize} < ${1522} -| | ... | Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology -| | Then Traffic should pass with partial loss | ${perf_trial_duration} -| | ... | ${rate} | ${framesize} | ${traffic_profile} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4vxlan-l2bdbasemaclrn-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2BD forwarding with VXLAN over IPv4 -| | framesize=${64 + ${vxlan_overhead}} | rate=2.4mpps | wt=1 | rxq=1 - -| tc02-1518B-1t1c-ethip4vxlan-l2bdbasemaclrn-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2BD forwarding with VXLAN over IPv4 -| | framesize=${1518 + ${vxlan_overhead}} | rate=700000pps | wt=1 | rxq=1 - -| tc03-9000B-1t1c-ethip4vxlan-l2bdbasemaclrn-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2BD forwarding with VXLAN over IPv4 -| | framesize=${9000 + ${vxlan_overhead}} | rate=100000pps | wt=1 | rxq=1 - -| tc04-64B-2t2c-ethip4vxlan-l2bdbasemaclrn-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2BD forwarding with VXLAN over IPv4 -| | framesize=${64 + ${vxlan_overhead}} | rate=5.2mpps | wt=2 | rxq=1 - -| tc05-1518B-2t2c-ethip4vxlan-l2bdbasemaclrn-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2BD forwarding with VXLAN over IPv4 -| | framesize=${1518 + ${vxlan_overhead}} | rate=650000pps | wt=2 | rxq=1 - -| tc06-9000B-2t2c-ethip4vxlan-l2bdbasemaclrn-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2BD forwarding with VXLAN over IPv4 -| | framesize=${9000 + ${vxlan_overhead}} | rate=100000pps | wt=2 | rxq=1 - -| tc07-64B-4t4c-ethip4vxlan-l2bdbasemaclrn-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2BD forwarding with VXLAN over IPv4 -| | framesize=${64 + ${vxlan_overhead}} | rate=6.5mpps | wt=4 | rxq=2 - -| tc08-1518B-4t4c-ethip4vxlan-l2bdbasemaclrn-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2BD forwarding with VXLAN over IPv4 -| | framesize=${1518 + ${vxlan_overhead}} | rate=700000pps | wt=4 | rxq=2 - -| tc09-9000B-4t4c-ethip4vxlan-l2bdbasemaclrn-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2BD forwarding with VXLAN over IPv4 -| | framesize=${9000 + ${vxlan_overhead}} | rate=100000pps | wt=4 | rxq=2 diff --git a/tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-ndrchk.robot b/tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-ndrchk.robot deleted file mode 100644 index 999231d96a..0000000000 --- a/tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-ndrchk.robot +++ /dev/null @@ -1,190 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | L2XCFWD | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput L2XC with VXLANoIPv4 verify test\ -| ... | cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross-connect on TG-DUTn. -| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- -| ... | connect. VXLAN tunnels are configured between L2XCs on DUT1 and DUT2. -| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-NDR value is periodically updated acording to -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and generated payload. MAC addresses are matching MAC addresses of the -| ... | TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4vxlan-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 2.4mpps. -| | [Tags] | 64B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 2.4mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc02-1518B-1t1c-ethip4vxlan-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 787153pps. -| | [Tags] | 1518B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 787153pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc03-9000B-1t1c-ethip4vxlan-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 137816pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 137816pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc04-64B-2t2c-ethip4vxlan-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 5.2mpps. -| | [Tags] | 64B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 5.2mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc05-1518B-2t2c-ethip4vxlan-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 787153pps. -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 787153pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc06-9000B-2t2c-ethip4vxlan-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 137816pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 137816pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc07-64B-4t4c-ethip4vxlan-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte -| | ... | frames using single trial throughput test at 2x 8.4mpps. -| | [Tags] | 64B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${64} -| | ${rate}= | Set Variable | 8.4mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-1518B-4t4c-ethip4vxlan-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 787153pps. -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 787153pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc09-9000B-4t4c-ethip4vxlan-l2xcbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 137816pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 137816pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot deleted file mode 100644 index db9d1a68c9..0000000000 --- a/tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot +++ /dev/null @@ -1,432 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | L2XCFWD | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput L2XC with VXLANoIPv4 test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross-connect on TG-DUTn. -| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- -| ... | connect. VXLAN tunnels are configured between L2XCs on DUT1 and DUT2. -| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and -| ... | generated payload. MAC addresses are matching MAC addresses of the TG -| ... | node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4vxlan-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4vxlan-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4vxlan-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4vxlan-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip4vxlan-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-ethip4vxlan-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4vxlan-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4vxlan-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-ethip4vxlan-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-ethip4vxlan-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip4vxlan-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-ethip4vxlan-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-ethip4vxlan-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-ethip4vxlan-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-ethip4vxlan-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-ethip4vxlan-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip4vxlan-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-ethip4vxlan-l2xcbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-pdrchk.robot b/tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-pdrchk.robot deleted file mode 100644 index 0c7cd0d2a7..0000000000 --- a/tests/perf/10ge2p1x520-ethip4vxlan-l2xcbase-pdrchk.robot +++ /dev/null @@ -1,186 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK -| ... | NIC_Intel-X520-DA2 | L2XCFWD | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance pdrchk test -| ... -| Documentation | *Reference PDR throughput L2XC with VXLANoIPv4 verify test\ -| ... | cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross-connect on TG-DUTn. -| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- -| ... | connect. VXLAN tunnels are configured between L2XCs on DUT1 and DUT2. -| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-PDR value is periodically updated acording to -| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 254 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 -| ... | and generated payload. MAC addresses are matching MAC addresses of the -| ... | TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348. - -*** Variables *** -| ${vxlan_overhead} | ${50} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Keywords *** -| Check PDR for L2 xconnect with VXLAN over IPv4 -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with ${wt} thread, ${wt} phy core,\ -| | ... | ${rxq} receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for ${framesize} Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} -| | ... -| | # Test Variables required for test and test teardown -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${rate} -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | ... -| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Run Keyword If | ${get_framesize} < ${1522} -| | ... | Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology -| | Then Traffic should pass with partial loss | ${perf_trial_duration} -| | ... | ${rate} | ${framesize} | ${traffic_profile} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4vxlan-l2xcbase-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2 xconnect with VXLAN over IPv4 -| | framesize=${64 + ${vxlan_overhead}} | rate=2.0mpps | wt=1 | rxq=1 - -| tc02-1518B-1t1c-ethip4vxlan-l2xcbase-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2 xconnect with VXLAN over IPv4 -| | framesize=${1518 + ${vxlan_overhead}} | rate=500000pps | wt=1 | rxq=1 - -| tc03-9000B-1t1c-ethip4vxlan-l2xcbase-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for L2 xconnect with VXLAN over IPv4 -| | framesize=${9000 + ${vxlan_overhead}} | rate=100000pps | wt=1 | rxq=1 - -| tc04-64B-2t2c-ethip4vxlan-l2xcbase-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 xconnect with VXLAN over IPv4 -| | framesize=${64 + ${vxlan_overhead}} | rate=5.0mpps | wt=2 | rxq=1 - -| tc05-1518B-2t2c-ethip4vxlan-l2xcbase-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 xconnect with VXLAN over IPv4 -| | framesize=${1518 + ${vxlan_overhead}} | rate=500000pps | wt=2 | rxq=1 - -| tc06-9000B-2t2c-ethip4vxlan-l2xcbase-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 xconnect with VXLAN over IPv4 -| | framesize=${9000 + ${vxlan_overhead}} | rate=100000pps | wt=2 | rxq=1 - -| tc07-64B-4t4c-ethip4vxlan-l2xcbase-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 xconnect with VXLAN over IPv4 -| | framesize=${64 + ${vxlan_overhead}} | rate=6.5mpps | wt=4 | rxq=2 - -| tc08-1518B-4t4c-ethip4vxlan-l2xcbase-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 xconnect with VXLAN over IPv4 -| | framesize=${1518 + ${vxlan_overhead}} | rate=500000pps | wt=4 | rxq=2 - -| tc09-9000B-4t4c-ethip4vxlan-l2xcbase-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for L2 xconnect with VXLAN over IPv4 -| | framesize=${9000 + ${vxlan_overhead}} | rate=100000pps | wt=4 | rxq=2 diff --git a/tests/perf/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrchk.robot b/tests/perf/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrchk.robot deleted file mode 100644 index 0dcb36f761..0000000000 --- a/tests/perf/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrchk.robot +++ /dev/null @@ -1,256 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.Cop -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | FEATURE | COPWHLIST -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput IPv6 whitelist verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 -| ... | routing, two static IPv6 /64 routes and IPv6 COP security whitelist -| ... | ingress /24 filter entries applied on links TG - DUT1 and DUT2 - TG. -| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-NDR value is periodically updated acording to -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv6 header and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 - -*** Test Cases *** -| tc01-78B-1t1c-ethip6-ip6base-copwhtlistbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 78 Byte frames using single trial throughput test -| | ... | at 2x 3.1mpps. -| | [Tags] | 78B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 3.1mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc02-1518B-1t1c-ethip6-ip6base-copwhtlistbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 1518 Byte frames using single trial throughput test -| | ... | at 2x 812743pps. -| | [Tags] | 1518B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc03-9000B-1t1c-ethip6-ip6base-copwhtlistbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 9000 Byte frames using single trial throughput test -| | ... | at 2x 138580pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc04-78B-2t2c-ethip6-ip6base-copwhtlistbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 78 Byte frames using single trial throughput test -| | ... | at 2x 5.9mpps. -| | [Tags] | 78B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 5.9mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc05-1518B-2t2c-ethip6-ip6base-copwhtlistbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 1518 Byte frames using single trial throughput test -| | ... | at 2x 812743pps. -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc06-9000B-2t2c-ethip6-ip6base-copwhtlistbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 9000 Byte frames using single trial throughput test -| | ... | at 2x 138580pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc07-78B-4t4c-ethip6-ip6base-copwhtlistbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 78 Byte frames using single trial throughput test -| | ... | at 2x 9.4mpps. -| | [Tags] | 78B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 9.4mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-1518B-4t4c-ethip6-ip6base-copwhtlistbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 1518 Byte frames using single trial throughput test -| | ... | at 2x 812743pps. -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc09-9000B-4t4c-ethip6-ip6base-copwhtlistbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 9000 Byte frames using single trial throughput test -| | ... | at 2x 138580pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot deleted file mode 100644 index fa5879507a..0000000000 --- a/tests/perf/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot +++ /dev/null @@ -1,565 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.Cop -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | FEATURE | COPWHLIST -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput IPv6 whitelist test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 -| ... | routing, two static IPv6 /64 routes and IPv6 COP security whitelist -| ... | ingress /64 filter entries applied on links TG - DUT1 and DUT2 - TG. -| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv6 header and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 - -*** Test Cases *** -| tc01-78B-1t1c-ethip6-ip6base-copwhtlistbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 78 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps. -| | [Tags] | 78B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-78B-1t1c-ethip6-ip6base-copwhtlistbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 78 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps, LT=0.5%. -| | [Tags] | 78B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip6-ip6base-copwhtlistbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip6-ip6base-copwhtlistbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip6-ip6base-copwhtlistbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-ethip6-ip6base-copwhtlistbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-78B-2t2c-ethip6-ip6base-copwhtlistbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 78 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps. -| | [Tags] | 78B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-78B-2t2c-ethip6-ip6base-copwhtlistbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 78 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps, LT=0.5%. -| | [Tags] | 78B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-ethip6-ip6base-copwhtlistbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-ethip6-ip6base-copwhtlistbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip6-ip6base-copwhtlistbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-ethip6-ip6base-copwhtlistbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-78B-4t4c-ethip6-ip6base-copwhtlistbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR -| | ... | for 78 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps. -| | [Tags] | 78B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-78B-4t4c-ethip6-ip6base-copwhtlistbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR -| | ... | for 78 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps, LT=0.5%. -| | [Tags] | 78B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-ethip6-ip6base-copwhtlistbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-ethip6-ip6base-copwhtlistbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip6-ip6base-copwhtlistbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-ethip6-ip6base-copwhtlistbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv6 forwarding in 3-node circular topology -| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local -| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local -| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 -| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 -| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable -| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrchk.robot b/tests/perf/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrchk.robot deleted file mode 100644 index 49d3d3bc8f..0000000000 --- a/tests/perf/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrchk.robot +++ /dev/null @@ -1,210 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.Classify.Classify -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | FEATURE | IACLDST -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput IPv6 whitelist verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 -| ... | routing, two static IPv6 /64 routes and IPv6 iAcl security whitelist -| ... | ingress /64 filter entries applied on links TG - DUT1 and DUT2 - TG. -| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-NDR value is periodically updated acording to -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long -| ... | performance tests for the same DUT confiiguration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv6 header and generated -| ... | payload. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 - -*** Test Cases *** -| tc01-78B-1t1c-ethip6-ip6base-iacldstbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 78 Byte frames using single trial throughput test -| | ... | at 2x 3.2mpps. -| | [Tags] | 78B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 3.2mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc02-1518B-1t1c-ethip6-ip6base-iacldstbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 1518 Byte frames using single trial throughput test -| | ... | at 2x 812743pps. -| | [Tags] | 1518B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc03-9000B-1t1c-ethip6-ip6base-iacldstbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 9000 Byte frames using single trial throughput test -| | ... | at 2x 138580pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc04-78B-2t2c-ethip6-ip6base-iacldstbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 78 Byte frames using single trial throughput test -| | ... | at 2x 5.7mpps. -| | [Tags] | 78B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 5.7mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc05-1518B-2t2c-ethip6-ip6base-iacldstbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 1518 Byte frames using single trial throughput test -| | ... | at 2x 812743pps. -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc06-9000B-2t2c-ethip6-ip6base-iacldstbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 9000 Byte frames using single trial throughput test -| | ... | at 2x 138580pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc07-78B-4t4c-ethip6-ip6base-iacldstbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 4 thread, 4 phy core, 2 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 78 Byte frames using single trial throughput test -| | ... | at 2x 9.2mpps. -| | [Tags] | 78B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 9.2mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-1518B-4t4c-ethip6-ip6base-iacldstbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 4 thread, 4 phy core, 2 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 1518 Byte frames using single trial throughput test -| | ... | at 2x 812743pps. -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc09-9000B-4t4c-ethip6-ip6base-iacldstbase-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 4 thread, 4 phy core, 2 receive queue per NIC port. [Ver] Verify -| | ... | ref-NDR for 9000 Byte frames using single trial throughput test -| | ... | at 2x 138580pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot deleted file mode 100644 index 1af04c2b21..0000000000 --- a/tests/perf/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot +++ /dev/null @@ -1,474 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.Classify.Classify -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | FEATURE | IACLDST -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput IPv6 iAcl whitelist test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 -| ... | routing, two static IPv6 /64 routes and IPv6 iAcl security whitelist -| ... | ingress /64 filter entries applied on links TG - DUT1 and DUT2 - TG. -| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv6 header and generated payload. MAC -| ... | addresses are matching MAC addresses of the TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 - -*** Test Cases *** -| tc01-78B-1t1c-ethip6-ip6base-iacldstbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 78 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps. -| | [Tags] | 78B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-78B-1t1c-ethip6-ip6base-iacldstbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 78 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps, LT=0.5%. -| | [Tags] | 78B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip6-ip6base-iacldstbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip6-ip6base-iacldstbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip6-ip6base-iacldstbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-ethip6-ip6base-iacldstbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-78B-2t2c-ethip6-ip6base-iacldstbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 78 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps. -| | [Tags] | 78B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-78B-2t2c-ethip6-ip6base-iacldstbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 78 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps, LT=0.5%. -| | [Tags] | 78B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-ethip6-ip6base-iacldstbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-ethip6-ip6base-iacldstbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip6-ip6base-iacldstbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-ethip6-ip6base-iacldstbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-78B-4t4c-ethip6-ip6base-iacldstbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR -| | ... | for 78 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps. -| | [Tags] | 78B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-78B-4t4c-ethip6-ip6base-iacldstbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR -| | ... | for 78 Byte frames using binary search start at 10GE linerate, -| | ... | step 100kpps, LT=0.5%. -| | [Tags] | 78B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-ethip6-ip6base-iacldstbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-ethip6-ip6base-iacldstbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR -| | ... | for 1518 Byte frames using binary search start at 10GE linerate, -| | ... | step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip6-ip6base-iacldstbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-ethip6-ip6base-iacldstbase-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ -| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR -| | ... | for 9000 Byte frames using binary search start at 10GE linerate, -| | ... | step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | And Initialize IPv6 iAcl whitelist in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip6-ip6base-ndrchk.robot b/tests/perf/10ge2p1x520-ethip6-ip6base-ndrchk.robot deleted file mode 100644 index 67a1b21e6b..0000000000 --- a/tests/perf/10ge2p1x520-ethip6-ip6base-ndrchk.robot +++ /dev/null @@ -1,191 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | BASE | IP6BASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput IPv6 routing verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 -| ... | routing and two static IPv6 /64 route entries. DUT1 and DUT2 tested with -| ... | 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-NDR value is periodically updated acording to -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv6 header and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 - -*** Test Cases *** -| tc01-78B-1t1c-ethip6-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte -| | ... | frames using single trial throughput test at 2x 3.9mpps. -| | [Tags] | 78B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 3.9mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc02-1518B-1t1c-ethip6-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc03-9000B-1t1c-ethip6-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc04-78B-2t2c-ethip6-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte -| | ... | frames using single trial throughput test at 2x 8.1mpps. -| | [Tags] | 78B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 8.1mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc05-1518B-2t2c-ethip6-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc06-9000B-2t2c-ethip6-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc07-78B-4t4c-ethip6-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 78 Byte -| | ... | frames using single trial throughput test at 2x 9.4mpps. -| | [Tags] | 78B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 9.4mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-1518B-4t4c-ethip6-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc09-9000B-4t4c-ethip6-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot deleted file mode 100644 index 99d699c795..0000000000 --- a/tests/perf/10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot +++ /dev/null @@ -1,436 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | BASE | IP6BASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput IPv6 routing test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 -| ... | routing and two static IPv6 /64 route entries. DUT1 and DUT2 tested with -| ... | 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv6 header and static payload. -| ... | MAC addresses are matching MAC addresses of the TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 - -*** Test Cases *** -| tc01-78B-1t1c-ethip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 78B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-78B-1t1c-ethip6-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 78B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip6-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-ethip6-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-78B-2t2c-ethip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 78B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-78B-2t2c-ethip6-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 78B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-ethip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-ethip6-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-ethip6-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-78B-4t4c-ethip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 78B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-78B-4t4c-ethip6-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 78B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-ethip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-ethip6-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-ethip6-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip6-ip6base-pdrchk.robot b/tests/perf/10ge2p1x520-ethip6-ip6base-pdrchk.robot deleted file mode 100644 index cbaad60529..0000000000 --- a/tests/perf/10ge2p1x520-ethip6-ip6base-pdrchk.robot +++ /dev/null @@ -1,183 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | BASE | IP6BASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance pdrchk test -| ... -| Documentation | *Reference PDR throughput IPv6 routing verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 -| ... | routing and two static IPv6 /64 route entries. DUT1 and DUT2 tested with -| ... | 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-PDR value is periodically updated acording to -| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long -| ... | performance tests for the same DUT configuration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with -| ... | all packets containing Ethernet header, IPv6 header and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 - -*** Keywords *** -| Check PDR for IPv6 routing -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with ${wt} thread, ${wt} phy core,\ -| | ... | ${rxq} receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for ${framesize} Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} -| | ... -| | # Test Variables required for test and test teardown -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${rate} -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | ... -| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Run Keyword If | ${get_framesize} < ${1522} -| | ... | Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Traffic should pass with partial loss | ${perf_trial_duration} -| | ... | ${rate} | ${framesize} | ${traffic_profile} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-78B-1t1c-ethip6-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 78B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for IPv6 routing -| | framesize=${78} | rate=3.9mpps | wt=1 | rxq=1 - -| tc02-1518B-1t1c-ethip6-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for IPv6 routing -| | framesize=${1518} | rate=400000pps | wt=1 | rxq=1 - -| tc03-9000B-1t1c-ethip6-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for IPv6 routing -| | framesize=${9000} | rate=60000pps | wt=1 | rxq=1 - -| tc04-78B-2t2c-ethip6-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 78B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv6 routing -| | framesize=${78} | rate=6.0mpps | wt=2 | rxq=1 - -| tc05-1518B-2t2c-ethip6-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv6 routing -| | framesize=${1518} | rate=400000pps | wt=2 | rxq=1 - -| tc06-9000B-2t2c-ethip6-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv6 routing -| | framesize=${9000} | rate=60000pps | wt=2 | rxq=1 - -| tc07-78B-4t4c-ethip6-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 78B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv6 routing -| | framesize=${78} | rate=6.1mpps | wt=4 | rxq=2 - -| tc08-1518B-4t4c-ethip6-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv6 routing -| | framesize=${1518} | rate=400000pps | wt=4 | rxq=2 - -| tc09-9000B-4t4c-ethip6-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv6 routing -| | framesize=${9000} | rate=60000pps | wt=4 | rxq=2 diff --git a/tests/perf/10ge2p1x520-ethip6-ip6scale200k-ndrchk.robot b/tests/perf/10ge2p1x520-ethip6-ip6scale200k-ndrchk.robot deleted file mode 100644 index d844bb058d..0000000000 --- a/tests/perf/10ge2p1x520-ethip6-ip6scale200k-ndrchk.robot +++ /dev/null @@ -1,201 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_200K -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput IPv6 routing verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 -| ... | routing and 2x100k static IPv6 /64 route entries. DUT1 and DUT2 tested -| ... | with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-NDR value is periodically updated acording to -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long -| ... | performance tests for the same DUT confiiguration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 100k flows per flow-group) with -| ... | all packets containing Ethernet header, IPv6 header and static -| ... | payload. Incrementing of IP.dst (IPv6 destination address) field is -| ... | applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -| ${rts_per_flow}= | ${100000} - -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6dst${rts_per_flow} -*** Test Cases *** -| tc01-78B-1t1c-ethip6-ip6scale200k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte -| | ... | frames using single trial throughput test at 2x 2.3mpps. -| | [Tags] | 78B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 2.3mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc02-1518B-1t1c-ethip6-ip6scale200k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc03-9000B-1t1c-ethip6-ip6scale200k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc04-78B-2t2c-ethip6-ip6scale200k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte -| | ... | frames using single trial throughput test at 2x 5.0mpps. -| | [Tags] | 78B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 5.0mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc05-1518B-2t2c-ethip6-ip6scale200k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc06-9000B-2t2c-ethip6-ip6scale200k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc07-78B-4t4c-ethip6-ip6scale200k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte -| | ... | frames using single trial throughput test at 2x 5.7mpps. -| | [Tags] | 78B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 5.7mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-1518B-4t4c-ethip6-ip6scale200k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc09-9000B-4t4c-ethip6-ip6scale200k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot deleted file mode 100644 index 6b2235ce7a..0000000000 --- a/tests/perf/10ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot +++ /dev/null @@ -1,457 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_200K -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput IPv6 routing test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 -| ... | routing and 2x100k static IPv6 /64 route entries. DUT1 and DUT2 tested -| ... | with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 100k flows per flow-group) with all packets -| ... | containing Ethernet header, IPv6 header withq IP and static payload. -| ... | MAC addresses are matching MAC addresses of the TG node interfaces. -| ... | Incrementing of IP.dst (IPv6 destination address) field is applied to -| ... | both streams. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -| ${rts_per_flow}= | ${100000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6dst${rts_per_flow} - -*** Test Cases *** -| tc01-78B-1t1c-ethip6-ip6scale200k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 78B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-78B-1t1c-ethip6-ip6scale200k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 78B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip6-ip6scale200k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip6-ip6scale200k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip6-ip6scale200k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-ethip6-ip6scale200k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-78B-2t2c-ethip6-ip6scale200k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 78B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-78B-2t2c-ethip6-ip6scale200k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 78B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-ethip6-ip6scale200k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-ethip6-ip6scale200k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip6-ip6scale200k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-ethip6-ip6scale200k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-78B-4t4c-ethip6-ip6scale200k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 78B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-78B-4t4c-ethip6-ip6scale200k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 78B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-ethip6-ip6scale200k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-ethip6-ip6scale200k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip6-ip6scale200k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-ethip6-ip6scale200k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip6-ip6scale20k-ndrchk.robot b/tests/perf/10ge2p1x520-ethip6-ip6scale20k-ndrchk.robot deleted file mode 100644 index 2d8ee7cb3e..0000000000 --- a/tests/perf/10ge2p1x520-ethip6-ip6scale20k-ndrchk.robot +++ /dev/null @@ -1,201 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_20K -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput IPv6 routing verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 -| ... | routing and 2x10k static IPv6 /64 route entries. DUT1 and DUT2 tested -| ... | with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-NDR value is periodically updated acording to -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long -| ... | performance tests for the same DUT confiiguration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 10k flows per flow-group) with -| ... | all packets containing Ethernet header, IPv6 header and static -| ... | payload. Incrementing of IP.dst (IPv6 destination address) field is -| ... | applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -| ${rts_per_flow}= | ${10000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6dst${rts_per_flow} - -*** Test Cases *** -| tc01-78B-1t1c-ethip6-ip6scale20k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte -| | ... | frames using single trial throughput test at 2x 2.9mpps. -| | [Tags] | 78B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 2.9mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc02-1518B-1t1c-ethip6-ip6scale20k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc03-9000B-1t1c-ethip6-ip6scale20k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc04-78B-2t2c-ethip6-ip6scale20k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte -| | ... | frames using single trial throughput test at 2x 7.0mpps. -| | [Tags] | 78B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 7.0mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc05-1518B-2t2c-ethip6-ip6scale20k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc06-9000B-2t2c-ethip6-ip6scale20k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc07-78B-4t4c-ethip6-ip6scale20k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte -| | ... | frames using single trial throughput test at 2x 9.6mpps. -| | [Tags] | 78B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 10.0mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-1518B-4t4c-ethip6-ip6scale20k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc09-9000B-4t4c-ethip6-ip6scale20k-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot deleted file mode 100644 index b685e8adf0..0000000000 --- a/tests/perf/10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot +++ /dev/null @@ -1,457 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_20K -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput IPv6 routing test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 -| ... | routing and 2x10k static IPv6 /64 route entries. DUT1 and DUT2 tested -| ... | with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 10k flows per flow-group) with all packets -| ... | containing Ethernet header, IPv6 header withq IP and static payload. -| ... | MAC addresses are matching MAC addresses of the TG node interfaces. -| ... | Incrementing of IP.dst (IPv6 destination address) field is applied to -| ... | both streams. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -| ${rts_per_flow}= | ${10000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6dst${rts_per_flow} - -*** Test Cases *** -| tc01-78B-1t1c-ethip6-ip6scale20k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 78B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-78B-1t1c-ethip6-ip6scale20k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 78B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip6-ip6scale20k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip6-ip6scale20k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip6-ip6scale20k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-ethip6-ip6scale20k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-78B-2t2c-ethip6-ip6scale20k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 78B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-78B-2t2c-ethip6-ip6scale20k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 78B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-ethip6-ip6scale20k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-ethip6-ip6scale20k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip6-ip6scale20k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-ethip6-ip6scale20k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-78B-4t4c-ethip6-ip6scale20k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 78B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-78B-4t4c-ethip6-ip6scale20k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 78B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-ethip6-ip6scale20k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-ethip6-ip6scale20k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip6-ip6scale20k-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-ethip6-ip6scale20k-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip6-ip6scale2m-ndrchk.robot b/tests/perf/10ge2p1x520-ethip6-ip6scale2m-ndrchk.robot deleted file mode 100644 index 4aa9caa7bb..0000000000 --- a/tests/perf/10ge2p1x520-ethip6-ip6scale2m-ndrchk.robot +++ /dev/null @@ -1,210 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_2M -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput IPv6 routing verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 -| ... | routing and 2x1M static IPv6 /64 route entries. DUT1 and DUT2 tested -| ... | with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-NDR value is periodically updated acording to -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long -| ... | performance tests for the same DUT confiiguration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 1M flows per flow-group) with -| ... | all packets containing Ethernet header, IPv6 header and static -| ... | payload. Incrementing of IP.dst (IPv6 destination address) field is -| ... | applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -| ${rts_per_flow}= | ${1000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6dst${rts_per_flow} - -*** Test Cases *** -| tc01-78B-1t1c-ethip6-ip6scale2m-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte -| | ... | frames using single trial throughput test at 2x 1.8mpps. -| | [Tags] | 78B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 1.8mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc02-1518B-1t1c-ethip6-ip6scale2m-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc03-9000B-1t1c-ethip6-ip6scale2m-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc04-78B-2t2c-ethip6-ip6scale2m-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte -| | ... | frames using single trial throughput test at 2x 4.0mpps. -| | [Tags] | 78B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 4.0mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc05-1518B-2t2c-ethip6-ip6scale2m-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc06-9000B-2t2c-ethip6-ip6scale2m-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc07-78B-4t4c-ethip6-ip6scale2m-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte -| | ... | frames using single trial throughput test at 2x 6.8mpps. -| | [Tags] | 78B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 6.8mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc08-1518B-4t4c-ethip6-ip6scale2m-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte -| | ... | frames using single trial throughput test at 2x 812743pps. -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1518} -| | ${rate}= | Set Variable | 812743pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} - -| tc09-9000B-4t4c-ethip6-ip6scale2m-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte -| | ... | frames using single trial throughput test at 2x 138580pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 138580pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} -| | ... | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot deleted file mode 100644 index 9a7b8dc480..0000000000 --- a/tests/perf/10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot +++ /dev/null @@ -1,457 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_2M -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput IPv6 routing test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 -| ... | routing and 2x1M static IPv6 /64 route entries. DUT1 and DUT2 tested -| ... | with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 1M flows per flow-group) with all packets -| ... | containing Ethernet header, IPv6 header withq IP and static payload. -| ... | MAC addresses are matching MAC addresses of the TG node interfaces. -| ... | Incrementing of IP.dst (IPv6 destination address) field is applied to -| ... | both streams. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -| ${rts_per_flow}= | ${1000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6dst${rts_per_flow} - -*** Test Cases *** -| tc01-78B-1t1c-ethip6-ip6scale2m-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 78B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-78B-1t1c-ethip6-ip6scale2m-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 78B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip6-ip6scale2m-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip6-ip6scale2m-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip6-ip6scale2m-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-ethip6-ip6scale2m-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-78B-2t2c-ethip6-ip6scale2m-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 78B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-78B-2t2c-ethip6-ip6scale2m-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 78B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-ethip6-ip6scale2m-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-ethip6-ip6scale2m-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip6-ip6scale2m-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-ethip6-ip6scale2m-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-78B-4t4c-ethip6-ip6scale2m-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps. -| | [Tags] | 78B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-78B-4t4c-ethip6-ip6scale2m-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 78 Byte frames -| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 78B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-ethip6-ip6scale2m-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-ethip6-ip6scale2m-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip6-ip6scale2m-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-ethip6-ip6scale2m-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames -| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip6-ip6scale2m-pdrchk.robot b/tests/perf/10ge2p1x520-ethip6-ip6scale2m-pdrchk.robot deleted file mode 100644 index 58aae85019..0000000000 --- a/tests/perf/10ge2p1x520-ethip6-ip6scale2m-pdrchk.robot +++ /dev/null @@ -1,185 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK -| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_2M -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance pdrchk test -| ... -| Documentation | *Reference PDR throughput IPv6 routing verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 -| ... | routing and 2x1M static IPv6 /64 route entries. DUT1 and DUT2 tested -| ... | with 2p10GE NIC X520 Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies -| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet -| ... | loss tolerance. Ref-PDR value is periodically updated acording to -| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long -| ... | performance tests for the same DUT confiiguration. Test packets are -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 -| ... | flow-groups (flow-group per direction, 1M flows per flow-group) with -| ... | all packets containing Ethernet header, IPv6 header and static -| ... | payload. Incrementing of IP.dst (IPv6 destination address) field is -| ... | applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -| ${rts_per_flow}= | ${1000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6dst${rts_per_flow} - -*** Keywords *** -| Check PDR for IPv6 scaled routing -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with ${wt} thread, ${wt} phy core,\ -| | ... | ${rxq} receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for ${framesize} Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} -| | ... -| | # Test Variables required for test and test teardown -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${rate} -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | ... -| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Run Keyword If | ${get_framesize} < ${1522} -| | ... | Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding with scaling in 3-node circular topology -| | ... | ${rts_per_flow} -| | Then Traffic should pass with partial loss | ${perf_trial_duration} -| | ... | ${rate} | ${framesize} | ${traffic_profile} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-78B-1t1c-ethip6-ip6scale2m-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 78B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for IPv6 scaled routing -| | framesize=${78} | rate=1.8mpps | wt=1 | rxq=1 - -| tc02-1518B-1t1c-ethip6-ip6scale2m-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for IPv6 scaled routing -| | framesize=${1518} | rate=400000pps | wt=1 | rxq=1 - -| tc03-9000B-1t1c-ethip6-ip6scale2m-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for IPv6 scaled routing -| | framesize=${9000} | rate=60000pps | wt=1 | rxq=1 - -| tc04-78B-2t2c-ethip6-ip6scale2m-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 78B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv6 scaled routing -| | framesize=${78} | rate=4.0mpps | wt=2 | rxq=1 - -| tc05-1518B-2t2c-ethip6-ip6scale2m-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv6 scaled routing -| | framesize=${1518} | rate=400000pps | wt=2 | rxq=1 - -| tc06-9000B-2t2c-ethip6-ip6scale2m-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv6 scaled routing -| | framesize=${900} | rate=138580pps | wt=2 | rxq=1 - -| tc07-78B-4t4c-ethip6-ip6scale2m-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 78B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv6 scaled routing -| | framesize=${78} | rate=6.4mpps | wt=4 | rxq=2 - -| tc08-1518B-4t4c-ethip6-ip6scale2m-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv6 scaled routing -| | framesize=${1518} | rate=400000pps | wt=4 | rxq=2 - -| tc09-9000B-4t4c-ethip6-ip6scale2m-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for IPv6 scaled routing -| | framesize=${9000} | rate=60000pps | wt=4 | rxq=2 diff --git a/tests/perf/10ge2p1x520-ethip6lispip4-ip6base-ndrchk.robot b/tests/perf/10ge2p1x520-ethip6lispip4-ip6base-ndrchk.robot deleted file mode 100644 index aaccec61d4..0000000000 --- a/tests/perf/10ge2p1x520-ethip6lispip4-ip6base-ndrchk.robot +++ /dev/null @@ -1,266 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot -| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | IP6FWD | ENCAP | LISP | IP4UNRLAY | IP6OVRLAY -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput Lisp tunnel verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv4 on DUT1-DUT2,\ -| ... | Eth-IPv6 on TG-DUTn for IPv6 routing over LISPoIPv4 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ -| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ -| ... | DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic\ -| ... | by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies\ -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet\ -| ... | loss tolerance. Ref-NDR value is periodically updated acording to\ -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long\ -| ... | performance tests for the same DUT confiiguration. Test packets are\ -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3\ -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ -| ... | all packets containing Ethernet header, IPv4 header or IPv6 header with\ -| ... | IP protocol=61 and generated payload. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 - -*** Test Cases *** -| tc01-78B-1t1c-ethip6lispip4-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ -| | ... | throughput test at 2x 1.75mpps. -| | [Tags] | 78B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 1.75mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc02-1460B-1t1c-ethip6lispip4-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ -| | ... | throughput test at 2x 720000pps. -| | [Tags] | 1460B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1460} -| | ${rate}= | Set Variable | 720000pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc03-9000B-1t1c-ethip6lispip4-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x 120000pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 120000pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc04-78B-2t2c-ethip6lispip4-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ -| | ... | throughput test at 2x 3.42mpps. -| | [Tags] | 78B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 3.42mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc05-1460B-2t2c-ethip6lispip4-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ -| | ... | throughput test at 2x 720000pps. -| | [Tags] | 1460B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1460} -| | ${rate}= | Set Variable | 720000pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc06-9000B-2t2c-ethip6lispip4-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x 120000pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 120000pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc07-78B-4t4c-ethip6lispip4-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ -| | ... | throughput test at 2x 3.42mpps. -| | [Tags] | 78B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 3.42mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-1460B-4t4c-ethip6lispip4-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ -| | ... | throughput test at 2x 720000pps. -| | [Tags] | 1460B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1460} -| | ${rate}= | Set Variable | 720000pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc09-9000B-4t4c-ethip6lispip4-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x 120000pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 120000pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot deleted file mode 100644 index 06c38dfd62..0000000000 --- a/tests/perf/10ge2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot +++ /dev/null @@ -1,596 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot -| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | IP6FWD | ENCAP | LISP | IP4UNRLAY | IP6OVRLAY -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC6830: Pkt throughput Lisp test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv4 on DUT1-DUT2,\ -| ... | Eth-IPv6 on TG-DUTn for IPv6 routing over LISPoIPv4 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ -| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ -| ... | DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic\ -| ... | by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ -| ... | of packets transmitted. NDR and PDR are discovered for different\ -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 - -*** Test Cases *** -| tc01-78B-1t1c-ethip6lispip4-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 78 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps. -| | [Tags] | 78B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-78B-1t1c-ethip6lispip4-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 78 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 78B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1460B-1t1c-ethip6lispip4-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 1460 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps. -| | [Tags] | 1460B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1460} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1460B-1t1c-ethip6lispip4-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 1460 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1460B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1460} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip6lispip4-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-ethip6lispip4-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-78B-2t2c-ethip6lispip4-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 78 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps. -| | [Tags] | 78B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-78B-2t2c-ethip6lispip4-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 78 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 78B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1460B-2t2c-ethip6lispip4-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 1460 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps. -| | [Tags] | 1460B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1460} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1460B-2t2c-ethip6lispip4-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 1460 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1460B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1460} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip6lispip4-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-ethip6lispip4-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-78B-4t4c-ethip6lispip4-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 78 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps. -| | [Tags] | 78B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-78B-4t4c-ethip6lispip4-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 78 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 78B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1460B-4t4c-ethip6lispip4-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 1460 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps. -| | [Tags] | 1460B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1460} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1460B-4t4c-ethip6lispip4-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 1460 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1460B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1460} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip6lispip4-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-ethip6lispip4-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip6lispip4-ip6base-pdrchk.robot b/tests/perf/10ge2p1x520-ethip6lispip4-ip6base-pdrchk.robot deleted file mode 100644 index ecc41b6b74..0000000000 --- a/tests/perf/10ge2p1x520-ethip6lispip4-ip6base-pdrchk.robot +++ /dev/null @@ -1,193 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot -| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK -| ... | NIC_Intel-X520-DA2 | IP6FWD | ENCAP | LISP | IP4UNRLAY | IP6OVRLAY -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance pdrchk test -| ... -| Documentation | *Reference PDR throughput Lisp tunnel verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv4 on DUT1-DUT2,\ -| ... | Eth-IPv6 on TG-DUTn for IPv6 routing over LISPoIPv4 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ -| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ -| ... | DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic\ -| ... | by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies\ -| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet\ -| ... | loss tolerance. Ref-PDR value is periodically updated acording to\ -| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long\ -| ... | performance tests for the same DUT confiiguration. Test packets are\ -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3\ -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ -| ... | all packets containing Ethernet header, IPv4 header or IPv6 header with\ -| ... | IP protocol=61 and generated payload. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 - -*** Keywords *** -| Check PDR for Lisp IPv6 over IPv4 forwarding -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with ${wt} thread, ${wt} phy core,\ -| | ... | ${rxq} receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for ${framesize} Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} -| | ... -| | # Test Variables required for test and test teardown -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${rate} -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | ... -| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Run Keyword If | ${get_framesize} < ${1522} -| | ... | Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} -| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} -| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} -| | Then Traffic should pass with partial loss | ${perf_trial_duration} -| | ... | ${rate} | ${framesize} | ${traffic_profile} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-78B-1t1c-ethip6lispip4-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 78B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv6 over IPv4 forwarding -| | framesize=${78} | rate=1.75mpps | wt=1 | rxq=1 - -| tc02-1460B-1t1c-ethip6lispip4-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1460B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv6 over IPv4 forwarding -| | framesize=${1460} | rate=37000pps | wt=1 | rxq=1 - -| tc03-9000B-1t1c-ethip6lispip4-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv6 over IPv4 forwarding -| | framesize=${9000} | rate=60000pps | wt=1 | rxq=1 - -| tc04-78B-2t2c-ethip6lispip4-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 78B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv6 over IPv4 forwarding -| | framesize=${78} | rate=3.42mpps | wt=2 | rxq=1 - -| tc05-1460B-2t2c-ethip6lispip4-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1460B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv6 over IPv4 forwarding -| | framesize=${1460} | rate=370000pps | wt=2 | rxq=1 - -| tc06-9000B-2t2c-ethip6lispip4-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv6 over IPv4 forwarding -| | framesize=${9000} | rate=60000pps | wt=2 | rxq=1 - -| tc07-78B-4t4c-ethip6lispip4-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 78B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv6 over IPv4 forwarding -| | framesize=${78} | rate=3.42mpps | wt=4 | rxq=2 - -| tc08-1460B-4t4c-ethip6lispip4-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1460B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv6 over IPv4 forwarding -| | framesize=${1460} | rate=370000pps | wt=4 | rxq=2 - -| tc09-9000B-4t4c-ethip6lispip4-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv6 over IPv4 forwarding -| | framesize=${9000} | rate=60000pps | wt=4 | rxq=2 diff --git a/tests/perf/10ge2p1x520-ethip6lispip6-ip6base-ndrchk.robot b/tests/perf/10ge2p1x520-ethip6lispip6-ip6base-ndrchk.robot deleted file mode 100644 index 2afb2804c4..0000000000 --- a/tests/perf/10ge2p1x520-ethip6lispip6-ip6base-ndrchk.robot +++ /dev/null @@ -1,266 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot -| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK -| ... | NIC_Intel-X520-DA2 | IP6FWD | ENCAP | LISP | IP6UNRLAY | IP6OVRLAY -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance ndrchk test -| ... -| Documentation | *Reference NDR throughput Lisp tunnel verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv6 on DUT1-DUT2,\ -| ... | Eth-IPv6-ICMPv6 on TG-DUTn for IPv6 routing over LISPoIPv6 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ -| ... | routing and static routes. LISPoIPv6 tunnel is configured\ -| ... | between DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520\ -| ... | Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies\ -| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet\ -| ... | loss tolerance. Ref-NDR value is periodically updated acording to\ -| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long\ -| ... | performance tests for the same DUT confiiguration. Test packets are\ -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3\ -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ -| ... | all packets containing Ethernet header, IPv6 header with\ -| ... | IP protocol=61 and generated payload. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 - -*** Test Cases *** -| tc01-78B-1t1c-ethip6lispip6-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ -| | ... | throughput test at 2x 1.56mpps. -| | [Tags] | 78B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 1.56mpps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc02-1460B-1t1c-ethip6lispip6-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ -| | ... | throughput test at 2x 740000pps. -| | [Tags] | 1460B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${1460} -| | ${rate}= | Set Variable | 740000pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc03-9000B-1t1c-ethip6lispip6-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x 120000pps. -| | [Tags] | 9000B | 1T1C | STHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 120000pps -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc04-78B-2t2c-ethip6lispip6-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 thread, 2 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ -| | ... | throughput test at 2x 3.2mpps. -| | [Tags] | 78B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 3.2mpps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc05-1460B-2t2c-ethip6lispip6-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ -| | ... | throughput test at 2x 740000pps. -| | [Tags] | 1460B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${1460} -| | ${rate}= | Set Variable | 740000pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc06-9000B-2t2c-ethip6lispip6-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x 120000pps. -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 120000pps -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc07-78B-4t4c-ethip6lispip6-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ -| | ... | throughput test at 2x 3.2mpps. -| | [Tags] | 78B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${78} -| | ${rate}= | Set Variable | 3.2mpps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc08-1460B-4t4c-ethip6lispip6-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ -| | ... | throughput test at 2x 740000pps. -| | [Tags] | 1460B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${1460} -| | ${rate}= | Set Variable | 740000pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} - -| tc09-9000B-4t4c-ethip6lispip6-ip6base-ndrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x 120000pps. -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ${framesize}= | Set Variable | ${9000} -| | ${rate}= | Set Variable | 120000pps -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} -| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/perf/10ge2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot b/tests/perf/10ge2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot deleted file mode 100644 index 015e4d59f6..0000000000 --- a/tests/perf/10ge2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot +++ /dev/null @@ -1,596 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot -| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X520-DA2 | IP6FWD | ENCAP | LISP | IP6UNRLAY | IP6OVRLAY -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC6830: Pkt throughput Lisp test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv6 on DUT1-DUT2,\ -| ... | Eth-IPv6 on TG-DUTn for IPv6 routing over LISPoIPv6 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ -| ... | routing and static routes. LISPoIPv6 tunnel is configured between\ -| ... | DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic\ -| ... | by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ -| ... | of packets transmitted. NDR and PDR are discovered for different\ -| ... | Ethernet L2 frame sizes using either binary search or linear search\ -| ... | *[Ref] Applicable standard specifications:* RFC6830. - -*** Variables *** -# X520-DA2 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 - -*** Test Cases *** -| tc01-78B-1t1c-ethip6lispip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 78 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps. -| | [Tags] | 78B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-78B-1t1c-ethip6lispip6-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 78 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 78B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1460B-1t1c-ethip6lispip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 1460 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps. -| | [Tags] | 1460B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1460} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1460B-1t1c-ethip6lispip6-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 1460 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1460B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1460} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-9000B-1t1c-ethip6lispip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-9000B-1t1c-ethip6lispip6-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-78B-2t2c-ethip6lispip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 78 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps. -| | [Tags] | 78B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-78B-2t2c-ethip6lispip6-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 78 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 78B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1460B-2t2c-ethip6lispip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 1460 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps. -| | [Tags] | 1460B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1460} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1460B-2t2c-ethip6lispip6-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 1460 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1460B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1460} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-9000B-2t2c-ethip6lispip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-9000B-2t2c-ethip6lispip6-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-78B-4t4c-ethip6lispip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 78 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps. -| | [Tags] | 78B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-78B-4t4c-ethip6lispip6-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 78 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps, LT=0.5%. -| | [Tags] | 78B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1460B-4t4c-ethip6lispip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 1460 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 100kpps. -| | [Tags] | 1460B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1460} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1460B-4t4c-ethip6lispip6-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 1460 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 10kpps, LT=0.5%. -| | [Tags] | 1460B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1460} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-9000B-4t4c-ethip6lispip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps. -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-9000B-4t4c-ethip6lispip6-ip6base-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ -| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ -| | ... | port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ -| | ... | at 10GE linerate, step 5kpps, LT=0.5%. -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x520-ethip6lispip6-ip6base-pdrchk.robot b/tests/perf/10ge2p1x520-ethip6lispip6-ip6base-pdrchk.robot deleted file mode 100644 index 7898a08aa5..0000000000 --- a/tests/perf/10ge2p1x520-ethip6lispip6-ip6base-pdrchk.robot +++ /dev/null @@ -1,193 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/lisp/lisp_static_adjacency.robot -| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK -| ... | NIC_Intel-X520-DA2 | IP6FWD | ENCAP | LISP | IP6UNRLAY | IP6OVRLAY -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-X520-DA2 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance pdrchk test -| ... -| Documentation | *Reference PDR throughput Lisp tunnel verify test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv6 on DUT1-DUT2,\ -| ... | Eth-IPv6-ICMPv6 on TG-DUTn for IPv6 routing over LISPoIPv6 tunnel. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ -| ... | routing and static routes. LISPoIPv6 tunnel is configured\ -| ... | between DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520\ -| ... | Niantic by Intel. -| ... | *[Ver] TG verification:* In short performance tests, TG verifies\ -| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet\ -| ... | loss tolerance. Ref-PDR value is periodically updated acording to\ -| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long\ -| ... | performance tests for the same DUT confiiguration. Test packets are\ -| ... | generated by TG on links to DUTs. TG traffic profile contains two L3\ -| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ -| ... | all packets containing Ethernet header, IPv6 header with\ -| ... | IP protocol=61 and generated payload. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 - -*** Keywords *** -| Check PDR for Lisp IPv6 over IPv6 forwarding -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with ${wt} thread, ${wt} phy core,\ -| | ... | ${rxq} receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for ${framesize} Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} -| | ... -| | # Test Variables required for test and test teardown -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${rate} -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | ... -| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Run Keyword If | ${get_framesize} < ${1522} -| | ... | Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP IPv6 forwarding in 3-node circular topology -| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} -| | ... | ${dut2_to_tg_ip6} | ${prefix6} -| | And Configure LISP topology in 3-node circular topology -| | ... | ${dut1} | ${dut1_if2} | ${NONE} -| | ... | ${dut2} | ${dut2_if1} | ${NONE} -| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} -| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} -| | Then Traffic should pass with partial loss | ${perf_trial_duration} -| | ... | ${rate} | ${framesize} | ${traffic_profile} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-78B-1t1c-ethip6lispip6-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 78B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv6 over IPv6 forwarding -| | framesize=${78} | rate=1.56mpps | wt=1 | rxq=1 - -| tc02-1460B-1t1c-ethip6lispip6-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1460B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv6 over IPv6 forwarding -| | framesize=${1460} | rate=370000pps | wt=1 | rxq=1 - -| tc03-9000B-1t1c-ethip6lispip6-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 1T1C | STHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv6 over IPv6 forwarding -| | framesize=${9000} | rate=60000pps | wt=1 | rxq=1 - -| tc04-78B-2t2c-ethip6lispip6-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 thread, 2 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 78B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv6 over IPv6 forwarding -| | framesize=${78} | rate=3.2mpps | wt=2 | rxq=1 - -| tc05-1460B-2t2c-ethip6lispip6-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1460B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv6 over IPv6 forwarding -| | framesize=${1460} | rate=370000pps | wt=2 | rxq=1 - -| tc06-9000B-2t2c-ethip6lispip6-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 2T2C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv6 over IPv6 forwarding -| | framesize=${9000} | rate=60000pps | wt=2 | rxq=1 - -| tc07-78B-4t4c-ethip6lispip6-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 78B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv6 over IPv6 forwarding -| | framesize=${78} | rate=3.2mpps | wt=4 | rxq=2 - -| tc08-1460B-4t4c-ethip6lispip6-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 1460B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv6 over IPv6 forwarding -| | framesize=${1460} | rate=370000pps | wt=4 | rxq=2 - -| tc09-9000B-4t4c-ethip6lispip6-ip6base-pdrchk -| | [Documentation] -| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ -| | ... | throughput test at 2x ${rate}. -| | ... -| | [Tags] | 9000B | 4T4C | MTHREAD -| | ... -| | [Template] | Check PDR for Lisp IPv6 over IPv6 forwarding -| | framesize=${9000} | rate=60000pps | wt=4 | rxq=2 diff --git a/tests/perf/10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/perf/10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot deleted file mode 100644 index 6618a11186..0000000000 --- a/tests/perf/10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot +++ /dev/null @@ -1,658 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.QemuUtils -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X710 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} -| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} -| ... -| Documentation | *RFC2544: Pkt throughput L2BD test cases with vhost* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- -| ... | domain and MAC learning enabled. Qemu Guest is connected to VPP via -| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting -| ... | vhost-user interfaces using 5 cores pinned to cpus on NUMA1 and 2048M -| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores -| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to -| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE NIC X710 -| ... | by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X710 bandwidth limit -| ${s_limit} | ${10000000000} -# Socket names -| ${bd_id1}= | 1 -| ${bd_id2}= | 2 -| ${sock1}= | /tmp/sock-1-${bd_id1} -| ${sock2}= | /tmp/sock-1-${bd_id2} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames\ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames\ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames\ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame\ -| | ... | size using binary search start at 10GE linerate, step 5kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame\ -| | ... | size using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames\ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames\ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames\ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc11-IMIX-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame\ -| | ... | size using binary search start at 10GE linerate, step 5kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-IMIX-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame\ -| | ... | size using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames\ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames\ -| | ... | using binary search start at 10GE linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames\ -| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc17-IMIX-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame\ -| | ... | size using binary search start at 10GE linerate, step 5kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-IMIX-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame\ -| | ... | size using binary search start at 10GE linerate, step 5kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot b/tests/perf/10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot deleted file mode 100644 index 033414fa06..0000000000 --- a/tests/perf/10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot +++ /dev/null @@ -1,274 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-X710 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput L2BD test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge-\ -| ... | domain and MAC learning enabled. DUT1 and DUT2 tested with 2p10GE NIC -| ... | X710 by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ -| ... | of packets transmitted. NDR and PDR are discovered for different\ -| ... | Ethernet L2 frame sizes using either binary search or linear search\ -| ... | algorithms with configured starting rate and final step that determines\ -| ... | throughput measurement resolution. Test packets are generated by TG on\ -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\ -| ... | (flow-group per direction, 253 flows per flow-group) with all packets\ -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\ -| ... | payload. MAC addresses are matching MAC addresses of the TG node\ -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# X710 bandwidth limit -| ${s_limit} | ${10000000000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Keywords *** -| L2 Bridge Domain NDR Binary Search -| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${min_rate} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | Add PCI devices to DUTs in 3-node single link topology -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | Run Keyword If | ${get_framesize} < ${1522} | Add no multi seg to all DUTs -| | Apply startup configuration on all VPP DUTs -| | Initialize L2 bridge domain in 3-node circular topology -| | Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| L2 Bridge Domain PDR Binary Search -| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${min_rate} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | Add PCI devices to DUTs in 3-node single link topology -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | Run Keyword If | ${get_framesize} < ${1522} | Add no multi seg to all DUTs -| | Apply startup configuration on all VPP DUTs -| | Initialize L2 bridge domain in 3-node circular topology -| | Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=1 | rxq=1 -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc02-64B-1t1c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=1 | rxq=1 -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc03-1518B-1t1c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=1 | rxq=1 -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc04-1518B-1t1c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=1 | rxq=1 -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc05-9000B-1t1c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${9000} | min_rate=${10000} | wt=1 | rxq=1 -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc06-9000B-1t1c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${9000} | min_rate=${10000} | wt=1 | rxq=1 -| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc07-64B-2t2c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=2 | rxq=1 -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc08-64B-2t2c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=2 | rxq=1 -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc09-1518B-2t2c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=2 | rxq=1 -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc10-1518B-2t2c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=2 | rxq=1 -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc11-9000B-2t2c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${9000} | min_rate=${10000} | wt=2 | rxq=1 -| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc12-9000B-2t2c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${9000} | min_rate=${10000} | wt=2 | rxq=1 -| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc13-64B-4t4c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=4 | rxq=2 -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc14-64B-4t4c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=4 | rxq=2 -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc15-1518B-4t4c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=4 | rxq=2 -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc16-1518B-4t4c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=4 | rxq=2 -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | [Template] | L2 Bridge Domain PDR Binary Search - -| tc17-9000B-4t4c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${9000} | min_rate=${10000} | wt=4 | rxq=2 -| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc18-9000B-4t4c-eth-l2bdbasemaclrn-pdrdisc -| | ... | framesize=${9000} | min_rate=${10000} | wt=4 | rxq=2 -| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ -| | ... | linerate, step 10kpps, LT=0.5%. -| | [Template] | L2 Bridge Domain PDR Binary Search diff --git a/tests/perf/40ge2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot b/tests/perf/40ge2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot deleted file mode 100644 index 3cc908ad3d..0000000000 --- a/tests/perf/40ge2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot +++ /dev/null @@ -1,352 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.NodePath -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Cisco-VIC-1385 | ETH | L2BDMACLRN | BASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Cisco-VIC-1385 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput L2BD test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- -| ... | domain and MAC learning enabled. DUT1 and DUT2 tested with 2p40GE NIC -| ... | NIC_Cisco-VIC-1385. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# XL710-DA2 (TG) bandwidth limit ~49Gbps/2=24.5Gbps -| ${s_24.5G} | ${24500000000} -# XL710-DA2 Mpps (TG) limit 37.5Mpps/2=18.75Mpps -| ${s_18.75Mpps} | ${18750000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2bdbasemaclrn-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at\ -| | ... | 18.75Mpps rate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-eth-l2bdbasemaclrn-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at\ -| | ... | 18.75Mpps rate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-eth-l2bdbasemaclrn-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at\ -| | ... | 24.5G rate, step 10kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc05-9000B-1t1c-eth-l2bdbasemaclrn-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at\ -| | ... | 24.5G rate, step 10kpps. -| | ... -| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${9000} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc07-64B-2t2c-eth-l2bdbasemaclrn-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at\ -| | ... | 18.75Mpps rate, step 100kpps. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-eth-l2bdbasemaclrn-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at\ -| | ... | 18.75Mpps rate, step 100kpps. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | PDR | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-eth-l2bdbasemaclrn-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at\ -| | ... | 24.5G rate, step 10kpps. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc13-64B-4t4c-eth-l2bdbasemaclrn-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at\ -| | ... | 18.75Mpps rate, step 100kpps. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc15-1518B-4t4c-eth-l2bdbasemaclrn-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at\ -| | ... | 24.5G rate, step 10kpps. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc19-IMIX-1t1c-eth-l2bdbasemaclrn-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 frame size using binary search start at\ -| | ... | 24.5G rate, step 100kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc20-IMIX-2t2c-eth-l2bdbasemaclrn-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 thread, 2 phy core,\ -| | ... | 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 frame size using binary search start at\ -| | ... | 24.5G rate, step 100kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc21-IMIX-4t4c-eth-l2bdbasemaclrn-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 thread, 4 phy core,\ -| | ... | 2 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 frame size using binary search start at\ -| | ... | 24.5G rate, step 100kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 bridge domain in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} diff --git a/tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot deleted file mode 100644 index 51b4492980..0000000000 --- a/tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot +++ /dev/null @@ -1,660 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.QemuUtils -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-XL710 | ETH | L2BDMACLRN | BASE | VHOST | VM -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-XL710 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} -| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} -| ... -| Documentation | *RFC2544: Packet throughput L2BD test cases with vhost* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- -| ... | domain and MAC learning enabled. Qemu Guest is connected to VPP via -| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting -| ... | vhost-user interfaces using 5 cores pinned to cpus on NUMA1 and 2048M -| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores -| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to -| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p40GE NIC XL710 -| ... | by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps -| ${s_24.5G} | ${24500000000} -# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps -| ${s_18.75Mpps} | ${18750000} -# Socket names -| ${bd_id1}= | 1 -| ${bd_id2}= | 2 -| ${sock1}= | /tmp/sock-1-${bd_id1} -| ${sock2}= | /tmp/sock-1-${bd_id2} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame\ -| | ... | size using binary search start at 40GE linerate, step 5kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame\ -| | ... | size using binary search start at 40GE linerate, step 5kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc11-IMIX-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame\ -| | ... | size using binary search start at 40GE linerate, step 5kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-IMIX-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame\ -| | ... | size using binary search start at 40GE linerate, step 5kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc17-IMIX-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame\ -| | ... | size using binary search start at 40GE linerate, step 5kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-IMIX-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame\ -| | ... | size using binary search start at 40GE linerate, step 5kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} -| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 -| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} -| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user -| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 -| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot b/tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot deleted file mode 100644 index 1b701dcee4..0000000000 --- a/tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot +++ /dev/null @@ -1,588 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.QemuUtils -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-XL710 | ETH | L2BDMACLRN | BASE | VHOST | VM -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-XL710 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} -| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} -| ... -| Documentation | *RFC2544: Packet throughput L2BD test cases with vhost* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- -| ... | domain and MAC learning enabled. Qemu Guests are connected to VPP via -| ... | vhost-user interfaces. Guests are running DPDK testpmd interconnecting -| ... | vhost-user interfaces using 5 cores pinned to cpus on NUMA1 and 2048M -| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores -| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to -| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p40GE NIC XL710 -| ... | by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps -| ${s_24.5G} | ${24500000000} -# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps -| ${s_18.75Mpps} | ${18750000} -# CPU settings -| ${system_cpus}= | ${1} -| ${vpp_cpus}= | ${5} -| ${vm_cpus}= | ${5} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 40GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-IMIX-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 40GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-IMIX-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-IMIX-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 40GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-IMIX-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot b/tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot deleted file mode 100644 index 96be5d2940..0000000000 --- a/tests/perf/40ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot +++ /dev/null @@ -1,232 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.NodePath -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-XL710 | ETH | L2BDMACLRN | BASE -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-XL710 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput L2BD test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge-\ -| ... | domain and MAC learning enabled. DUT1 and DUT2 tested with 2p40GE NIC\ -| ... | XL710-DA2 by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ -| ... | of packets transmitted. NDR and PDR are discovered for different\ -| ... | Ethernet L2 frame sizes using either binary search or linear search\ -| ... | algorithms with configured starting rate and final step that determines\ -| ... | throughput measurement resolution. Test packets are generated by TG on\ -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\ -| ... | (flow-group per direction, 253 flows per flow-group) with all packets\ -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\ -| ... | payload. MAC addresses are matching MAC addresses of the TG node\ -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps -| ${s_24.5G} | ${24500000000} -# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps -| ${s_18.75Mpps} | ${18750000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Keywords *** -| L2 Bridge Domain NDR Binary Search BW limit -| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} | ${s_limit} -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${min_rate} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | Add PCI devices to DUTs in 3-node single link topology -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | Run Keyword If | ${get_framesize} < ${1522} | Add no multi seg to all DUTs -| | Apply startup configuration on all VPP DUTs -| | Initialize L2 bridge domain in 3-node circular topology -| | Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| L2 Bridge Domain NDR Binary Search -| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} | ${s_limit} -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${min_rate} -| | ${max_rate}= | Set Variable | ${s_limit} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | Add PCI devices to DUTs in 3-node single link topology -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | Run Keyword If | ${get_framesize} < ${1522} | Add no multi seg to all DUTs -| | Apply startup configuration on all VPP DUTs -| | Initialize L2 bridge domain in 3-node circular topology -| | Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| L2 Bridge Domain PDR Binary Search BW limit -| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} | ${s_limit} -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${min_rate} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | Add PCI devices to DUTs in 3-node single link topology -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | Run Keyword If | ${get_framesize} < ${1522} | Add no multi seg to all DUTs -| | Apply startup configuration on all VPP DUTs -| | Initialize L2 bridge domain in 3-node circular topology -| | Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| L2 Bridge Domain PDR Binary Search -| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} | ${s_limit} -| | Set Test Variable | ${framesize} -| | Set Test Variable | ${min_rate} -| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology -| | Add PCI devices to DUTs in 3-node single link topology -| | ${get_framesize}= | Get Frame Size | ${framesize} -| | Run Keyword If | ${get_framesize} < ${1522} | Add no multi seg to all DUTs -| | Apply startup configuration on all VPP DUTs -| | Initialize L2 bridge domain in 3-node circular topology -| | Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=1 | rxq=1 -| | ... | s_limit=${s_18.75Mpps} -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at\ -| | ... | 18.75Mpps rate, step 100kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc03-1518B-1t1c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=1 | rxq=1 -| | ... | s_limit=${s_24.5G} -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at\ -| | ... | 24.5G rate, step 10kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search BW limit - -| tc07-64B-2t2c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=2 | rxq=1 -| | ... | s_limit=${s_18.75Mpps} -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at\ -| | ... | 18.75Mpps rate, step 100kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc09-1518B-2t2c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=2 | rxq=1 -| | ... | s_limit=${s_24.5G} -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at\ -| | ... | 24.5G rate, step 10kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search BW limit - -| tc13-64B-4t4c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${64} | min_rate=${100000} | wt=4 | rxq=2 -| | ... | s_limit=${s_18.75Mpps} -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at\ -| | ... | 18.75Mpps rate, step 100kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search - -| tc15-1518B-4t4c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=${1518} | min_rate=${10000} | wt=4 | rxq=2 -| | ... | s_limit=${s_24.5G} -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at\ -| | ... | 24.5G rate, step 10kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search BW limit - -| tc19-IMIX-1t1c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=IMIX_v4_1 | min_rate=${100000} | wt=1 | rxq=1 -| | ... | s_limit=${s_24.5G} -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 frames using binary search start at\ -| | ... | 24.5G rate, step 100kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search BW limit - -| tc20-IMIX-2t2c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=IMIX_v4_1 | min_rate=${100000} | wt=2 | rxq=1 -| | ... | s_limit=${s_24.5G} -| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 frames using binary search start at\ -| | ... | 24.5G rate, step 100kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search BW limit - -| tc21-IMIX-4t4c-eth-l2bdbasemaclrn-ndrdisc -| | ... | framesize=IMIX_v4_1 | min_rate=${100000} | wt=4 | rxq=2 -| | ... | s_limit=${s_24.5G} -| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | [Documentation] -| | ... | [Cfg] DUT runs L2BD switching config with with\ -| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 frames using binary search start at\ -| | ... | 24.5G rate, step 100kpps. -| | [Template] | L2 Bridge Domain NDR Binary Search BW limit diff --git a/tests/perf/40ge2p1xl710-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot b/tests/perf/40ge2p1xl710-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot deleted file mode 100644 index decc922af6..0000000000 --- a/tests/perf/40ge2p1xl710-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot +++ /dev/null @@ -1,588 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.QemuUtils -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-XL710 | ETH | L2XCFWD | BASE | VHOST | VM -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-XL710 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} -| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} -| ... -| Documentation | *RFC2544: Packet throughput L2XC test cases with vhost* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- -| ... | connects. Qemu Guests are connected to VPP via vhost-user interfaces. -| ... | Guests are running DPDK testpmd interconnecting vhost-user interfaces -| ... | using 5 cores pinned to cpus on NUMA1 (cpus 24-28 and 29-34) and 2048M -| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores -| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to -| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p40GE NIC XL710 -| ... | by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps -| ${s_24.5G} | ${24500000000} -# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps -| ${s_18.75Mpps} | ${18750000} -# CPU settings -| ${system_cpus}= | ${1} -| ${vpp_cpus}= | ${5} -| ${vm_cpus}= | ${5} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 40GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-IMIX-2t2c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 40GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-IMIX-2t2c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-IMIX-4t4c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 40GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-IMIX-4t4c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot b/tests/perf/40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot deleted file mode 100644 index 67eb34732f..0000000000 --- a/tests/perf/40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot +++ /dev/null @@ -1,251 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.NodePath -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-XL710 | ETH | L2XCFWD | BASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L2 | Intel-XL710 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput L2XC test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- -| ... | connect. DUT1 and DUT2 tested with 2p40GE NIC XL710 by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps -| ${s_24.5G} | ${24500000000} -# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps -| ${s_18.75Mpps} | ${18750000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 - -*** Test Cases *** -| tc01-64B-1t1c-eth-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 18.75Mpps rate, step 100kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | 64 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc03-1518B-1t1c-eth-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 24.5G rate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | 1518 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc07-64B-2t2c-eth-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 18.75Mpps rate, step 100kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | 64 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc09-1518B-2t2c-eth-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 24.5G rate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | 1518 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc13-64B-4t4c-eth-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 18.75Mpps rate, step 100kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | 64 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc15-1518B-4t4c-eth-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 24.5G rate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | 1518 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc19-IMIX-1t1c-eth-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame size -| | ... | using binary search start at 24.5G rate, step 100kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc20-IMIX-2t2c-eth-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 2 thread, 2 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame size -| | ... | using binary search start at 24.5G rate, step 100kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc21-IMIX-4t4c-eth-l2xcbase-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs L2XC switching config with 4 thread, 4 phy core, \ -| | ... | 2 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame size -| | ... | using binary search start at 24.5G rate, step 100kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize L2 xconnect in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} diff --git a/tests/perf/40ge2p1xl710-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot b/tests/perf/40ge2p1xl710-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot deleted file mode 100644 index cdfd2b8933..0000000000 --- a/tests/perf/40ge2p1xl710-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot +++ /dev/null @@ -1,588 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.QemuUtils -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-XL710 | ETH | IP4FWD | BASE | VHOST | VM -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-XL710 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd -| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} -| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} -| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} -| ... -| Documentation | *RFC2544: Packet throughput IP14 test cases with vhost* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 forIPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and static IPv4 /24 route entries. Qemu Guests are connected to -| ... | VPP via vhost-user interfaces. Guests are running DPDK testpmd -| ... | interconnecting vhost-user interfaces using 5 cores pinned to cpus on -| ... | NUMA1 (cpus 24-28 and 29-34) and 2048M memory. Testpmd is using -| ... | socket-mem=1024M (512x2M hugepages), 5 cores (1 main core and 4 cores -| ... | dedicated for io), forwarding mode is set to io, rxd/txd=256, burst=64. -| ... | DUT1, DUT2 are tested with 2p40GE NIC XL710 by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps -| ${s_24.5G} | ${24500000000} -# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps -| ${s_18.75Mpps} | ${18750000} -# CPU settings -| ${system_cpus}= | ${1} -| ${vpp_cpus}= | ${5} -| ${vm_cpus}= | ${5} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Test Cases *** -| tc01-64B-1t1c-eth-ip4base-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-eth-ip4base-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-eth-ip4base-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-eth-ip4base-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-eth-ip4base-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 40GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-eth-ip4base-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-eth-ip4base-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-eth-ip4base-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc09-1518B-2t2c-eth-ip4base-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc10-1518B-2t2c-eth-ip4base-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc11-IMIX-2t2c-eth-ip4base-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 40GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc12-IMIX-2t2c-eth-ip4base-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-eth-ip4base-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-eth-ip4base-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc15-1518B-4t4c-eth-ip4base-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc16-1518B-4t4c-eth-ip4base-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames \ -| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc17-IMIX-4t4c-eth-ip4base-eth-4vhost-2vm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 40GE linerate, step 10kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find NDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc18-IMIX-4t4c-eth-ip4base-eth-4vhost-2vm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ -| | ... | size using binary search start at 40GE linerate, step 10kpps, LT=0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${dut1_vm_refs}= | Create Dictionary -| | ${dut2_vm_refs}= | Create Dictionary -| | Set Test Variable | ${dut1_vm_refs} -| | Set Test Variable | ${dut2_vm_refs} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology -| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology -| | Then Find PDR using binary search and pps -| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot b/tests/perf/40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot deleted file mode 100644 index 926f2547df..0000000000 --- a/tests/perf/40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot +++ /dev/null @@ -1,257 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Library | resources.libraries.python.topology.Topology -| Library | resources.libraries.python.NodePath -| Library | resources.libraries.python.InterfaceUtil -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} -| ... | WITH NAME | dut1_v4 -| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} -| ... | WITH NAME | dut2_v4 -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-XL710 | ETH | IP4FWD | BASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-XL710 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 -| ... | routing and two static IPv4 /24 route entries. DUT1 and DUT2 tested with -| ... | 2p40GE NIC XL710 by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static -| ... | payload. MAC addresses are matching MAC addresses of the TG node -| ... | interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps -| ${s_24.5G} | ${24500000000} -# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps -| ${s_18.75Mpps} | ${18750000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 18.75Mpps rate, step 100kpps. -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc03-1518B-1t1c-ethip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 24.5G rate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc07-64B-2t2c-ethip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 18.75Mpps rate, step 100kpps. -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc09-1518B-2t2c-ethip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 24.5G rate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc13-64B-4t4c-ethip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames -| | ... | using binary search start at 18.75Mpps rate, step 100kpps. -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc15-1518B-4t4c-ethip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 24.5G rate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc19-IMIX-1t1c-ethip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame size -| | ... | using binary search start at 24.5G rate, step 100kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc20-IMIX-2t2c-ethip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 2 thread, 2 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame size -| | ... | using binary search start at 24.5G rate, step 100kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc21-IMIX-4t4c-ethip4-ip4base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv4 routing config with 4 thread, 4 phy core, \ -| | ... | 2 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame size -| | ... | using binary search start at 24.5G rate, step 100kpps. -| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) -| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv4 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} diff --git a/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot b/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot deleted file mode 100644 index d7ad9b1ab4..0000000000 --- a/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot +++ /dev/null @@ -1,337 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/ipsec.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE -| ... -| Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710 -| ... -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *IPv4 IPsec tunnel mode performance test suite.* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, -| ... | Eth-IPv4-IPSec on DUT1-DUT2 -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple -| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it -| ... | and send to another DUT, where packets are decrypted and sent back to TG -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number -| ... | of packets transmitted. NDR is discovered for different -| ... | number of IPsec tunnels using binary search algorithms with configured -| ... | starting rate and final step that determines throughput measurement -| ... | resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, number of flows per flow-group equals to -| ... | number of IPSec tunnels) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and -| ... | static payload. MAC addresses are matching MAC addresses of the TG -| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field -| ... | is applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. - -*** Variables *** -# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps -| ${s_24.5G} | ${24500000000} -# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps -| ${s_18.75Mpps} | ${18750000} -| ${tg_if1_ip4}= | 192.168.10.2 -| ${dut1_if1_ip4}= | 192.168.10.1 -| ${dut1_if2_ip4}= | 172.168.1.1 -| ${dut2_if1_ip4}= | 172.168.1.2 -| ${dut2_if2_ip4}= | 192.168.20.1 -| ${tg_if2_ip4}= | 192.168.20.2 -| ${raddr_ip4}= | 20.0.0.0 -| ${laddr_ip4}= | 10.0.0.0 -| ${addr_range}= | ${32} -| ${ipsec_overhead_gcm}= | ${54} -| ${n_tunnels}= | ${1} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${n_tunnels} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} -| | ... | ${framesize + ${ipsec_overhead_gcm}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} -| | ... | ${framesize + ${ipsec_overhead_gcm}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${imix_size}= | Get Frame Size | ${framesize} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} -| | ... | ${imix_size} + ${ipsec_overhead_gcm} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for IMIX_v4_1 frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${imix_size}= | Get Frame Size | ${framesize} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} -| | ... | ${imix_size} + ${ipsec_overhead_gcm} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ -| | ... | with 2 thread, 2 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${2} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ -| | ... | with 2 thread, 2 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${2} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot b/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot deleted file mode 100644 index fb7fe7b15e..0000000000 --- a/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot +++ /dev/null @@ -1,333 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/ipsec.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE -| ... -| Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710 -| ... -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *IPv4 IPsec tunnel mode performance test suite.* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, -| ... | Eth-IPv4-IPSec on DUT1-DUT2 -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple -| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it -| ... | and send to another DUT, where packets are decrypted and sent back to TG -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number -| ... | of packets transmitted. NDR is discovered for different -| ... | number of IPsec tunnels using binary search algorithms with configured -| ... | starting rate and final step that determines throughput measurement -| ... | resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, number of flows per flow-group equals to -| ... | number of IPSec tunnels) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and -| ... | static payload. MAC addresses are matching MAC addresses of the TG -| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field -| ... | is applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. - -*** Variables *** -# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps -| ${s_24.5G} | ${24500000000} -# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps -| ${s_18.75Mpps} | ${18750000} -| ${tg_if1_ip4}= | 192.168.10.2 -| ${dut1_if1_ip4}= | 192.168.10.1 -| ${dut1_if2_ip4}= | 172.168.1.1 -| ${dut2_if1_ip4}= | 172.168.1.2 -| ${dut2_if2_ip4}= | 192.168.20.1 -| ${tg_if2_ip4}= | 192.168.20.2 -| ${raddr_ip4}= | 20.0.0.0 -| ${laddr_ip4}= | 10.0.0.0 -| ${addr_range}= | ${32} -| ${ipsec_overhead}= | ${58} -| ${n_tunnels}= | ${1} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${n_tunnels} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${imix_size}= | Get Frame Size | ${framesize} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for IMIX_v4_1 frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${imix_size}= | Get Frame Size | ${framesize} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ -| | ... | with 2 thread, 2 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${2} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ -| | ... | with 2 thread, 2 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${2} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot b/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot deleted file mode 100644 index 6bb53fc994..0000000000 --- a/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot +++ /dev/null @@ -1,361 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/ipsec.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE -| ... -| Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710 -| ... -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *IPv4 IPsec tunnel mode performance test suite.* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, -| ... | Eth-IPv4-IPSec on DUT1-DUT2 -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple -| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it -| ... | and send to another DUT, where packets are decrypted and sent back to TG -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number -| ... | of packets transmitted. NDR is discovered for different -| ... | number of IPsec tunnels using binary search algorithms with configured -| ... | starting rate and final step that determines throughput measurement -| ... | resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, number of flows per flow-group equals to -| ... | number of IPSec tunnels) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and -| ... | static payload. MAC addresses are matching MAC addresses of the TG -| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field -| ... | is applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. - -*** Variables *** -# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps -| ${s_24.5G} | ${24500000000} -# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps -| ${s_18.75Mpps} | ${18750000} -| ${tg_if1_ip4}= | 192.168.10.2 -| ${dut1_if1_ip4}= | 192.168.10.1 -| ${dut1_if2_ip4}= | 172.168.1.1 -| ${dut2_if1_ip4}= | 172.168.1.2 -| ${dut2_if2_ip4}= | 192.168.20.1 -| ${tg_if2_ip4}= | 192.168.20.2 -| ${raddr_ip4}= | 20.0.0.0 -| ${laddr_ip4}= | 10.0.0.0 -| ${addr_range}= | ${32} -| ${ipsec_overhead_gcm}= | ${54} -| ${n_tunnels}= | ${1} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${n_tunnels} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} -| | ... | ${framesize + ${ipsec_overhead_gcm}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} -| | ... | ${framesize + ${ipsec_overhead_gcm}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${imix_size}= | Get Frame Size | ${framesize} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} -| | ... | ${imix_size} + ${ipsec_overhead_gcm} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for IMIX_v4_1 frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${imix_size}= | Get Frame Size | ${framesize} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} -| | ... | ${imix_size} + ${ipsec_overhead_gcm} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ -| | ... | with 2 thread, 2 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${2} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ -| | ... | with 2 thread, 2 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${2} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot b/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot deleted file mode 100644 index c36c18828b..0000000000 --- a/tests/perf/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot +++ /dev/null @@ -1,357 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/ipsec.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE -| ... -| Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710 -| ... -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *IPv4 IPsec tunnel mode performance test suite.* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, -| ... | Eth-IPv4-IPSec on DUT1-DUT2 -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple -| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it -| ... | and send to another DUT, where packets are decrypted and sent back to TG -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number -| ... | of packets transmitted. NDR is discovered for different -| ... | number of IPsec tunnels using binary search algorithms with configured -| ... | starting rate and final step that determines throughput measurement -| ... | resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, number of flows per flow-group equals to -| ... | number of IPSec tunnels) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and -| ... | static payload. MAC addresses are matching MAC addresses of the TG -| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field -| ... | is applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. - -*** Variables *** -# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps -| ${s_24.5G} | ${24500000000} -# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps -| ${s_18.75Mpps} | ${18750000} -| ${tg_if1_ip4}= | 192.168.10.2 -| ${dut1_if1_ip4}= | 192.168.10.1 -| ${dut1_if2_ip4}= | 172.168.1.1 -| ${dut2_if1_ip4}= | 172.168.1.2 -| ${dut2_if2_ip4}= | 192.168.20.1 -| ${tg_if2_ip4}= | 192.168.20.2 -| ${raddr_ip4}= | 20.0.0.0 -| ${laddr_ip4}= | 10.0.0.0 -| ${addr_range}= | ${32} -| ${ipsec_overhead}= | ${58} -| ${n_tunnels}= | ${1} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${n_tunnels} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${imix_size}= | Get Frame Size | ${framesize} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ -| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for IMIX_v4_1 frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${imix_size}= | Get Frame Size | ${framesize} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ -| | ... | with 2 thread, 2 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${2} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ -| | ... | with 2 thread, 2 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${2} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot b/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot deleted file mode 100644 index 350a47cdbf..0000000000 --- a/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot +++ /dev/null @@ -1,337 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/ipsec.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | SCALE | NDRPDRDISC -| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000 -| ... -| Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710 -| ... -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *IPv4 IPsec tunnel mode performance test suite.* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, -| ... | Eth-IPv4-IPSec on DUT1-DUT2 -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple -| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it -| ... | and send to another DUT, where packets are decrypted and sent back to TG -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number -| ... | of packets transmitted. NDR is discovered for different -| ... | number of IPsec tunnels using binary search algorithms with configured -| ... | starting rate and final step that determines throughput measurement -| ... | resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, number of flows per flow-group equals to -| ... | number of IPSec tunnels) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and -| ... | static payload. MAC addresses are matching MAC addresses of the TG -| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field -| ... | is applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. - -*** Variables *** -# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps -| ${s_24.5G} | ${24500000000} -# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps -| ${s_18.75Mpps} | ${18750000} -| ${tg_if1_ip4}= | 192.168.10.2 -| ${dut1_if1_ip4}= | 192.168.10.1 -| ${dut1_if2_ip4}= | 172.168.1.1 -| ${dut2_if1_ip4}= | 172.168.1.2 -| ${dut2_if2_ip4}= | 192.168.20.1 -| ${tg_if2_ip4}= | 192.168.20.2 -| ${raddr_ip4}= | 20.0.0.0 -| ${laddr_ip4}= | 10.0.0.0 -| ${addr_range}= | ${32} -| ${ipsec_overhead_gcm}= | ${54} -| ${n_tunnels}= | ${1000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${n_tunnels} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} -| | ... | ${framesize + ${ipsec_overhead_gcm}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnel AES GCM in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} -| | ... | ${framesize + ${ipsec_overhead_gcm}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${imix_size}= | Get Frame Size | ${framesize} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} -| | ... | ${imix_size} + ${ipsec_overhead_gcm} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for IMIX_v4_1 frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${imix_size}= | Get Frame Size | ${framesize} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} -| | ... | ${imix_size} + ${ipsec_overhead_gcm} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ -| | ... | configured with 2 thread, 2 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${2} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ -| | ... | configured with 2 thread, 2 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${2} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot b/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot deleted file mode 100644 index b9ae2f4ba3..0000000000 --- a/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot +++ /dev/null @@ -1,333 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/ipsec.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | SCALE | NDRPDRDISC -| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000 -| ... -| Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710 -| ... -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *IPv4 IPsec tunnel mode performance test suite.* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, -| ... | Eth-IPv4-IPSec on DUT1-DUT2 -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple -| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it -| ... | and send to another DUT, where packets are decrypted and sent back to TG -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number -| ... | of packets transmitted. NDR is discovered for different -| ... | number of IPsec tunnels using binary search algorithms with configured -| ... | starting rate and final step that determines throughput measurement -| ... | resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, number of flows per flow-group equals to -| ... | number of IPSec tunnels) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and -| ... | static payload. MAC addresses are matching MAC addresses of the TG -| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field -| ... | is applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. - -*** Variables *** -# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps -| ${s_24.5G} | ${24500000000} -# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps -| ${s_18.75Mpps} | ${18750000} -| ${tg_if1_ip4}= | 192.168.10.2 -| ${dut1_if1_ip4}= | 192.168.10.1 -| ${dut1_if2_ip4}= | 172.168.1.1 -| ${dut2_if1_ip4}= | 172.168.1.2 -| ${dut2_if2_ip4}= | 192.168.20.1 -| ${tg_if2_ip4}= | 192.168.20.2 -| ${raddr_ip4}= | 20.0.0.0 -| ${laddr_ip4}= | 10.0.0.0 -| ${addr_range}= | ${32} -| ${ipsec_overhead}= | ${58} -| ${n_tunnels}= | ${1000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${n_tunnels} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnel CBC-SHA1 in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${imix_size}= | Get Frame Size | ${framesize} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for IMIX_v4_1 frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${imix_size}= | Get Frame Size | ${framesize} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ -| | ... | configured with 2 thread, 2 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${2} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ -| | ... | configured with 2 thread, 2 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${2} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | And VPP IPsec Create Tunnel Interfaces -| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} -| | ... | ${raddr_ip4} | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot b/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot deleted file mode 100644 index 122076c694..0000000000 --- a/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot +++ /dev/null @@ -1,361 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/ipsec.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | SCALE | NDRPDRDISC -| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000 -| ... -| Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710 -| ... -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *IPv4 IPsec tunnel mode performance test suite.* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, -| ... | Eth-IPv4-IPSec on DUT1-DUT2 -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple -| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it -| ... | and send to another DUT, where packets are decrypted and sent back to TG -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number -| ... | of packets transmitted. NDR is discovered for different -| ... | number of IPsec tunnels using binary search algorithms with configured -| ... | starting rate and final step that determines throughput measurement -| ... | resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, number of flows per flow-group equals to -| ... | number of IPSec tunnels) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and -| ... | static payload. MAC addresses are matching MAC addresses of the TG -| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field -| ... | is applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. - -*** Variables *** -# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps -| ${s_24.5G} | ${24500000000} -# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps -| ${s_18.75Mpps} | ${18750000} -| ${tg_if1_ip4}= | 192.168.10.2 -| ${dut1_if1_ip4}= | 192.168.10.1 -| ${dut1_if2_ip4}= | 172.168.1.1 -| ${dut2_if1_ip4}= | 172.168.1.2 -| ${dut2_if2_ip4}= | 192.168.20.1 -| ${tg_if2_ip4}= | 192.168.20.2 -| ${raddr_ip4}= | 20.0.0.0 -| ${laddr_ip4}= | 10.0.0.0 -| ${addr_range}= | ${32} -| ${ipsec_overhead_gcm}= | ${54} -| ${n_tunnels}= | ${1000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${n_tunnels} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} -| | ... | ${framesize + ${ipsec_overhead_gcm}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnel AES GCM in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} -| | ... | ${framesize + ${ipsec_overhead_gcm}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${imix_size}= | Get Frame Size | ${framesize} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} -| | ... | ${imix_size} + ${ipsec_overhead_gcm} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for IMIX_v4_1 frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${imix_size}= | Get Frame Size | ${framesize} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} -| | ... | ${imix_size} + ${ipsec_overhead_gcm} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ -| | ... | configured with 2 thread, 2 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${2} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ -| | ... | configured with 2 thread, 2 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES GCM 128 -| | ${auth_alg}= | Integ Alg AES GCM 128 -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${2} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot b/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot deleted file mode 100644 index 588a715b68..0000000000 --- a/tests/perf/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot +++ /dev/null @@ -1,357 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/ipsec.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | SCALE | NDRPDRDISC -| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000 -| ... -| Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710 -| ... -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *IPv4 IPsec tunnel mode performance test suite.* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, -| ... | Eth-IPv4-IPSec on DUT1-DUT2 -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple -| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it -| ... | and send to another DUT, where packets are decrypted and sent back to TG -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number -| ... | of packets transmitted. NDR is discovered for different -| ... | number of IPsec tunnels using binary search algorithms with configured -| ... | starting rate and final step that determines throughput measurement -| ... | resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, number of flows per flow-group equals to -| ... | number of IPSec tunnels) with all packets -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and -| ... | static payload. MAC addresses are matching MAC addresses of the TG -| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field -| ... | is applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. - -*** Variables *** -# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps -| ${s_24.5G} | ${24500000000} -# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps -| ${s_18.75Mpps} | ${18750000} -| ${tg_if1_ip4}= | 192.168.10.2 -| ${dut1_if1_ip4}= | 192.168.10.1 -| ${dut1_if2_ip4}= | 172.168.1.1 -| ${dut2_if1_ip4}= | 172.168.1.2 -| ${dut2_if2_ip4}= | 192.168.20.1 -| ${tg_if2_ip4}= | 192.168.20.2 -| ${raddr_ip4}= | 20.0.0.0 -| ${laddr_ip4}= | 10.0.0.0 -| ${addr_range}= | ${32} -| ${ipsec_overhead}= | ${58} -| ${n_tunnels}= | ${1000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${n_tunnels} - -*** Test Cases *** -| tc01-64B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnel CBC-SHA1 in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${imix_size}= | Get Frame Size | ${framesize} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ -| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for IMIX_v4_1 frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${imix_size}= | Get Frame Size | ${framesize} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ -| | ... | configured with 2 thread, 2 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames\ -| | ... | using binary search start at 40GE linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${2} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find NDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ -| | ... | configured with 2 thread, 2 phy core, 1 receive queue per NIC port. -| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps and loss tolerance of 0.5%. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${2} -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPSec in 3-node circular topology -| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} -| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} -| | And VPP IPsec Add Multiple Tunnels -| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} -| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} -| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} -| | ... | ${addr_range} -| | Then Find PDR using binary search and pps | ${framesize} -| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} -| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot b/tests/perf/40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot deleted file mode 100644 index 03aa4f9a66..0000000000 --- a/tests/perf/40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot +++ /dev/null @@ -1,374 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| Resource | resources/libraries/robot/ipsec.robot -| Resource | resources/libraries/robot/lisp/lispgpe.robot -| ... -| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC | IP4FWD -| ... | LISPGPE | IPSEC | IPSECHW | IPSECTRAN | ENCAP | IP4UNRLAY | IP4OVRLAY -| ... | NIC_Intel-XL710 -| ... -| Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710 -| ... -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *IPv4 IPsec transport mode performance test suite.* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn,\ -| ... | Eth-IPv4-IPSec-LISPGPE-IPv4 on DUT1-DUT2 -| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec\ -| ... | in each direction. IPsec is in transport mode. DUTs get IPv4 traffic\ -| ... | from TG, encrypt it and send to another DUT, where packets are\ -| ... | decrypted and sent back to TG. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number\ -| ... | of packets transmitted. NDR is discovered for different\ -| ... | number of IPsec tunnels using binary search algorithms with configured\ -| ... | starting rate and final step that determines throughput measurement\ -| ... | resolution. Test packets are generated by TG on\ -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\ -| ... | (flow-group per direction, number of flows per flow-group equals to\ -| ... | number of IPSec tunnels) with all packets\ -| ... | containing Ethernet header, IPv4 header with IP protocol=61 and\ -| ... | static payload. MAC addresses are matching MAC addresses of the TG\ -| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address)\ -| ... | field is applied to both streams. -| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303 and\ -| ... | RFC2544. - -*** Variables *** -# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps -| ${s_24.5G} | ${24500000000} -# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps -| ${s_18.75Mpps} | ${18750000} -| ${dut2_spi}= | ${1000} -| ${dut1_spi}= | ${1001} -| ${ESP_PROTO}= | ${50} -| ${ipsec_overhead}= | ${54} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 - -*** Test Cases *** -| tc01-64B-1t1c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ -| | ... | IPsec is in transport mode. DUTs are configured with 1 thread, 1 phy\ -| | ... | core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology -| | ... | ${encr_alg} | ${auth_alg} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc02-64B-1t1c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ -| | ... | IPsec is in transport mode. DUTs are configured with 1 thread, 1 phy\ -| | ... | core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology -| | ... | ${encr_alg} | ${auth_alg} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc03-1518B-1t1c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ -| | ... | IPsec is in transport mode. DUTs are configured with 1 thread, 1 phy\ -| | ... | core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology -| | ... | ${encr_alg} | ${auth_alg} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc04-1518B-1t1c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ -| | ... | IPsec is in transport mode. DUTs are configured with 1 thread, 1 phy\ -| | ... | core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | ... -| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology -| | ... | ${encr_alg} | ${auth_alg} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc05-IMIX-1t1c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ -| | ... | IPsec is in transport mode. DUTs are configured with 1 thread, 1 phy\ -| | ... | core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${imix_size}= | Get Frame Size | ${framesize} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology -| | ... | ${encr_alg} | ${auth_alg} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc06-IMIX-1t1c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ -| | ... | IPsec is in transport mode. DUTs are configured with 1 thread, 1 phy\ -| | ... | core, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for IMIX_v4_1 frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | ... -| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | IMIX_v4_1 -| | ${imix_size}= | Get Frame Size | ${framesize} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add cryptodev to all DUTs | ${1} -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology -| | ... | ${encr_alg} | ${auth_alg} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc07-64B-2t2c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ -| | ... | IPsec is in transport mode. DUTs are configured with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${2} -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology -| | ... | ${encr_alg} | ${auth_alg} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc08-64B-2t2c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ -| | ... | IPsec is in transport mode. DUTs are configured with 2 threads, 2 phy\ -| | ... | cores, 1 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${2} -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology -| | ... | ${encr_alg} | ${auth_alg} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} - -| tc13-64B-4t4c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrdisc -| | [Documentation] -| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ -| | ... | IPsec is in transport mode. DUTs are configured with 4 threads, 4 phy\ -| | ... | cores, 2 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${4} -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology -| | ... | ${encr_alg} | ${auth_alg} -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc14-64B-4t4c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-pdrdisc -| | [Documentation] -| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ -| | ... | IPsec is in transport mode. DUTs are configured with 4 threads, 4 phy\ -| | ... | cores, 2 receive queue per NIC port. -| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\ -| | ... | linerate, step 100kpps, LT=0.5%. -| | ... -| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH -| | ... -| | ${framesize}= | Set Variable | ${64} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | ${encr_alg}= | Crypto Alg AES CBC 128 -| | ${auth_alg}= | Integ Alg SHA1 96 -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Add cryptodev to all DUTs | ${4} -| | And Apply startup configuration on all VPP DUTs -| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology -| | ... | ${encr_alg} | ${auth_alg} -| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} -| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/perf/40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot b/tests/perf/40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot deleted file mode 100644 index 016b4d963b..0000000000 --- a/tests/perf/40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot +++ /dev/null @@ -1,183 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/performance_setup.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC -| ... | NIC_Intel-XL710 | ETH | IP6FWD | BASE -| ... -| Suite Setup | Set up 3-node performance topology with DUT's NIC model -| ... | L3 | Intel-XL710 -| Suite Teardown | Tear down 3-node performance topology -| ... -| Test Setup | Set up performance test -| ... -| Test Teardown | Tear down performance discovery test | ${min_rate}pps -| ... | ${framesize} | ${traffic_profile} -| ... -| Documentation | *RFC2544: Pkt throughput IPv6 routing test cases* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 -| ... | routing and two static IPv6 /64 route entries. DUT1 and DUT2 tested with -| ... | 2p40GE NIC XL710 by Intel. -| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop -| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop -| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage -| ... | of packets transmitted. NDR and PDR are discovered for different -| ... | Ethernet L2 frame sizes using either binary search or linear search -| ... | algorithms with configured starting rate and final step that determines -| ... | throughput measurement resolution. Test packets are generated by TG on -| ... | links to DUTs. TG traffic profile contains two L3 flow-groups -| ... | (flow-group per direction, 253 flows per flow-group) with all packets -| ... | containing Ethernet header, IPv6 header and static payload. -| ... | MAC addresses are matching MAC addresses of the TG node interfaces. -| ... | *[Ref] Applicable standard specifications:* RFC2544. - -*** Variables *** -# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps -| ${s_24.5G} | ${24500000000} -# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps -| ${s_18.75Mpps} | ${18750000} -# Traffic profile: -| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 - -*** Test Cases *** -| tc01-78B-1t1c-ethip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames -| | ... | using binary search start at 18.75Mpps rate, step 100kpps. -| | [Tags] | 78B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc03-1518B-1t1c-ethip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 24.5G rate, step 10kpps. -| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc07-78B-2t2c-ethip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames -| | ... | using binary search start at 18.75Mpps rate, step 100kpps. -| | [Tags] | 78B | 2T2C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc09-1518B-2t2c-ethip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ -| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 24.5G rate, step 10kpps. -| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc13-78B-4t4c-ethip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 78 Byte frames -| | ... | using binary search start at 18.75Mpps rate, step 100kpps. -| | [Tags] | 78B | 4T4C | MTHREAD | NDRDISC -| | ${framesize}= | Set Variable | ${78} -| | ${min_rate}= | Set Variable | ${100000} -| | ${max_rate}= | Set Variable | ${s_18.75Mpps} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} - -| tc15-1518B-4t4c-ethip6-ip6base-ndrdisc -| | [Documentation] -| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ -| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames -| | ... | using binary search start at 24.5G rate, step 10kpps. -| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH -| | ${framesize}= | Set Variable | ${1518} -| | ${min_rate}= | Set Variable | ${10000} -| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} -| | ${binary_min}= | Set Variable | ${min_rate} -| | ${binary_max}= | Set Variable | ${max_rate} -| | ${threshold}= | Set Variable | ${min_rate} -| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology -| | And Add PCI devices to DUTs in 3-node single link topology -| | And Add no multi seg to all DUTs -| | And Apply startup configuration on all VPP DUTs -| | And Initialize IPv6 forwarding in 3-node circular topology -| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} -| | ... | ${binary_max} | ${traffic_profile} -| | ... | ${min_rate} | ${max_rate} | ${threshold} diff --git a/tests/perf/__init__.robot b/tests/perf/__init__.robot deleted file mode 100644 index 922ad29a33..0000000000 --- a/tests/perf/__init__.robot +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright (c) 2017 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/interfaces.robot -| Library | resources.libraries.python.SetupFramework -| Library | resources.libraries.python.CpuUtils -| Suite Setup | Run Keywords | Setup performance global Variables -| ... | AND | Setup Framework | ${nodes} -| ... | AND | Setup All DUTs | ${nodes} -| ... | AND | Get CPU Layout from all nodes | ${nodes} -| ... | AND | Update All Interface Data On All Nodes -| ... | ${nodes} | skip_tg=${True} | numa_node=${True} - -*** Keywords *** -| Setup performance global Variables -| | [Documentation] -| | ... | Setup suite Variables. Variables are used across performance testing. -| | ... -| | ... | _NOTE:_ This KW sets following suite variables: -| | ... | - perf_trial_duration - Duration of traffic run [s] -| | ... | - perf_pdr_loss_acceptance - Loss acceptance treshold -| | ... | - perf_pdr_loss_acceptance_type - Loss acceptance treshold type -| | ... | - perf_vm_image - Guest VM disk image -| | ... | - perf_qemu_bin - Path to QEMU binary -| | ... | - perf_qemu_qsz - QEMU virtio queue size -| | ... -| | Set Global Variable | ${perf_trial_duration} | 10 -| | Set Global Variable | ${perf_pdr_loss_acceptance} | 0.5 -| | Set Global Variable | ${perf_pdr_loss_acceptance_type} | percentage -| | Set Global Variable | ${perf_vm_image} | /var/lib/vm/csit-nested-1.6.img -| | Set Global Variable | ${perf_qemu_bin} -| | ... | /opt/qemu-2.5.0/bin/qemu-system-x86_64 -| | Set Global Variable | ${perf_qemu_qsz} | 1024 diff --git a/tests/tldk/func/__init__.robot b/tests/tldk/func/__init__.robot new file mode 100644 index 0000000000..3b71353945 --- /dev/null +++ b/tests/tldk/func/__init__.robot @@ -0,0 +1,18 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Library | resources.libraries.python.TLDK.SetupTLDKTest +| Suite Setup | Setup TLDK Test | ${nodes} diff --git a/tests/tldk/func/ipv4/ipv4_assemble.robot b/tests/tldk/func/ipv4/ipv4_assemble.robot new file mode 100644 index 0000000000..88f43823c8 --- /dev/null +++ b/tests/tldk/func/ipv4/ipv4_assemble.robot @@ -0,0 +1,46 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.TrafficScriptExecutor +| Library | resources.libraries.python.TLDK.UdpTest +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/counters.robot +| Resource | resources/libraries/robot/tldk/tldk_utils.robot +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST | TLDK +| Documentation | *TLDK IPv4 assemble test suite.* +| ... +| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG with single link +| ... | between nodes. From this topology only TG and DUT1 nodes are used. +| ... | In VM environment, the DUT2 is not configured since the DUT1 is testing +| ... | with the pcap file that generated with the pcap_gen.py. There is no +| ... | packet going out to DUT2, udpfwd app is verified on DUT1 only. +| ... | This test case just use the pcap file for the UDP functional test. + +*** Variables *** +| ${tc01_file_prefix}= | test_ipv4_assemble + +*** Test Cases *** +| TC01: TLDK IPv4 assemble test case +| | Given Path for 2-node testing is set | ${nodes['TG']} | ${nodes['DUT1']} +| | And Pick out the port used to execute test +| | And Get the pcap data | ${tc01_file_prefix} +| | When Exec the udpfwd test | ${dut_node} | ${dut_port} +| | ... | ${tc01_file_prefix} | ${dest_ip} | ${is_ipv4} +| | ${pkt_count}= | Get the test result | ${dut_node} +| | ... | ${tc01_file_prefix} +| | ${result}= | Convert To Integer | ${pkt_count} +| | Then Should Be Equal As Integers | ${result} | 1 diff --git a/tests/tldk/func/ipv4/ipv4_checksum.robot b/tests/tldk/func/ipv4/ipv4_checksum.robot new file mode 100644 index 0000000000..d0710616fc --- /dev/null +++ b/tests/tldk/func/ipv4/ipv4_checksum.robot @@ -0,0 +1,43 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.TrafficScriptExecutor +| Library | resources.libraries.python.TLDK.UdpTest +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/counters.robot +| Resource | resources/libraries/robot/tldk/tldk_utils.robot +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST | TLDK +| Documentation | *TLDK IPv4 checksum test suite.* +| ... +| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG with single link +| ... | between nodes. From this topology only TG and DUT1 nodes are used. +| ... | This test case just use the pcap file for the UDP functional test. + +*** Variables *** +| ${tc01_file_prefix}= | test_ipv4_checksum + +*** Test Cases *** +| TC01: TLDK IPv4 checksum test case +| | Given Path for 2-node testing is set | ${nodes['TG']} | ${nodes['DUT1']} +| | And Pick out the port used to execute test +| | And Get the pcap data | ${tc01_file_prefix} +| | When Exec the udpfwd test | ${dut_node} | ${dut_port} +| | ... | ${tc01_file_prefix} | ${dest_ip} | ${is_ipv4} +| | ${checksum}= | Get the test result | ${dut_node} +| | ... | ${tc01_file_prefix} +| | ${result}= | Convert To Integer | ${checksum} +| | Then Should Be Equal As Integers | ${result} | ${packet_num} diff --git a/tests/tldk/func/ipv4/ipv4_fragment.robot b/tests/tldk/func/ipv4/ipv4_fragment.robot new file mode 100644 index 0000000000..e3c2475c6d --- /dev/null +++ b/tests/tldk/func/ipv4/ipv4_fragment.robot @@ -0,0 +1,43 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.TrafficScriptExecutor +| Library | resources.libraries.python.TLDK.UdpTest +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/counters.robot +| Resource | resources/libraries/robot/tldk/tldk_utils.robot +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST | TLDK +| Documentation | *TLDK IPv4 fragment test suite.* +| ... +| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG with single link +| ... | between nodes. From this topology only TG and DUT1 nodes are used. +| ... | This test case just use the pcap file for the UDP functional test. + +*** Variables *** +| ${tc01_file_prefix}= | test_ipv4_fragment + +*** Test Cases *** +| TC01: TLDK IPv4 fragment test case +| | Given Path for 2-node testing is set | ${nodes['TG']} | ${nodes['DUT1']} +| | And Pick out the port used to execute test +| | And Get the pcap data | ${tc01_file_prefix} +| | When Exec the udpfwd test | ${dut_node} | ${dut_port} +| | ... | ${tc01_file_prefix} | ${dest_ip} | ${is_ipv4} +| | ${checksum}= | Get the test result | ${dut_node} +| | ... | ${tc01_file_prefix} +| | ${result}= | Convert To Integer | ${checksum} +| | Then Should Be Equal As Integers | ${result} | 990 diff --git a/tests/tldk/func/ipv6/ipv6_checksum.robot b/tests/tldk/func/ipv6/ipv6_checksum.robot new file mode 100644 index 0000000000..c216f82c40 --- /dev/null +++ b/tests/tldk/func/ipv6/ipv6_checksum.robot @@ -0,0 +1,43 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.TrafficScriptExecutor +| Library | resources.libraries.python.TLDK.UdpTest +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/counters.robot +| Resource | resources/libraries/robot/tldk/tldk_utils.robot +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST | TLDK +| Documentation | *TLDK IPv6 checksum test suit.* +| ... +| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG with single link +| ... | between nodes. From this topology only TG and DUT1 nodes are used. +| ... | This test case just use the pcap file for the UDP functional test. + +*** Variables *** +| ${tc01_file_prefix}= | test_ipv6_checksum + +*** Test Cases *** +| TC01: TLDK IPv6 checksum test case +| | Given Path for 2-node testing is set | ${nodes['TG']} | ${nodes['DUT1']} +| | And Pick out the port used to execute test +| | And Get the pcap data | ${tc01_file_prefix} +| | When Exec the udpfwd test | ${dut_node} | ${dut_port} +| | ... | ${tc01_file_prefix} | ${dest_ip} | ${is_ipv4} +| | ${pkt_count}= | Get the test result | ${dut_node} +| | ... | ${tc01_file_prefix} +| | ${result}= | Convert To Integer | ${pkt_count} +| | Then Should Be Equal As Integers | ${result} | ${packet_num} diff --git a/tests/tldk/func/ipv6/ipv6_fragment.robot b/tests/tldk/func/ipv6/ipv6_fragment.robot new file mode 100644 index 0000000000..b8c345f859 --- /dev/null +++ b/tests/tldk/func/ipv6/ipv6_fragment.robot @@ -0,0 +1,43 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.TrafficScriptExecutor +| Library | resources.libraries.python.TLDK.UdpTest +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/counters.robot +| Resource | resources/libraries/robot/tldk/tldk_utils.robot +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | FUNCTEST | TLDK +| Documentation | *TLDK IPv6 fragment test suite.* +| ... +| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG with single link +| ... | between nodes. From this topology only TG and DUT1 nodes are used. +| ... | This test case just use the pcap file for the UDP functional test. + +*** Variables *** +| ${tc01_file_prefix}= | test_ipv6_fragment + +*** Test Cases *** +| TC01: TLDK IPv6 fragment test case +| | Given Path for 2-node testing is set | ${nodes['TG']} | ${nodes['DUT1']} +| | And Pick out the port used to execute test +| | And Get the pcap data | ${tc01_file_prefix} +| | When Exec the udpfwd test | ${dut_node} | ${dut_port} +| | ... | ${tc01_file_prefix} | ${dest_ip} | ${is_ipv4} +| | ${pkt_count}= | Get the test result | ${dut_node} +| | ... | ${tc01_file_prefix} +| | ${result}= | Convert To Integer | ${pkt_count} +| | Then Should Be Equal As Integers | ${result} | ${970} diff --git a/tests/tldk/tldk_scripts/install_tldk.sh b/tests/tldk/tldk_scripts/install_tldk.sh new file mode 100755 index 0000000000..0cc65f949e --- /dev/null +++ b/tests/tldk/tldk_scripts/install_tldk.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +set -x + +DPDK_VERSION=16.11.1 + +ROOTDIR=/tmp/TLDK-testing +PWDDIR=$(pwd) +DPDK_DIR=dpdk +DPDK_PACKAGE=${DPDK_DIR}"-"${DPDK_VERSION}.tar.xz + +# compile and install the DPDK +cd ${ROOTDIR} +sudo tar xvf ${DPDK_PACKAGE} +sudo mv dpdk-stable-${DPDK_VERSION} dpdk +echo $PWD +echo ${DPDK_PACKAGE} +cd ./${DPDK_DIR} +sudo sed -i 's/^CONFIG_RTE_LIBRTE_PMD_PCAP=n/CONFIG_RTE_LIBRTE_PMD_PCAP=y/g' ./config/common_base +sudo make install T=x86_64-native-linuxapp-gcc +cd ${PWDDIR} + +# compile the TLDK +export RTE_SDK=${ROOTDIR}/${DPDK_DIR}/ +export RTE_TARGET=x86_64-native-linuxapp-gcc +cd ${ROOTDIR}/tldk +make all +cd ${PWDDIR} + +sudo killall -9 l4fwd 2>/dev/null + +sleep 5 + +pid=`pgrep l4fwd` +if [ "$pid" != "" ]; then + echo "terminate the l4fwd failed!" + exit 1 +fi + +# check and setup the hugepages +SYS_HUGEPAGE=$(cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages) +if [ ${SYS_HUGEPAGE} -lt 1024 ]; then + MOUNT=$(mount | grep /mnt/huge) + while [ "${MOUNT}" != "" ] + do + sudo umount /mnt/huge + sleep 1 + MOUNT=$(mount | grep /mnt/huge) + done + + echo 1024 | sudo tee /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages + echo 1024 | sudo tee /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages + + sudo mkdir -p /mnt/huge + sudo mount -t hugetlbfs nodev /mnt/huge/ + test $? -eq 0 || exit 1 +fi diff --git a/tests/tldk/tldk_scripts/run_tldk.sh b/tests/tldk/tldk_scripts/run_tldk.sh new file mode 100755 index 0000000000..0f56f02dfc --- /dev/null +++ b/tests/tldk/tldk_scripts/run_tldk.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +set -x + +ROOTDIR=/tmp/TLDK-testing +PWDDIR=$(pwd) + +rx_file=$1 +tx_file=$2 +nic_pci=$3 +fe_cfg=$4 +be_cfg=$5 +IPv4_addr=$6 +IPv6_addr=$7 + +echo $IPv4_addr + +#kill the l4fwd +sudo killall -9 l4fwd 2>/dev/null + +sleep 2 + +pid=`pgrep l4fwd` +if [ "$pid" != "" ]; then + echo "terminate the l4fwd failed!" + exit 1 +fi + +#mount the hugepages again +sudo umount /mnt/huge +sudo mount -t hugetlbfs nodev /mnt/huge/ +test $? -eq 0 || exit 1 + +sleep 2 + +#run the l4fwd with tag U +# need to install libpcap, libpcap-dev to use --vdev +cd ${ROOTDIR} +if [ "$IPv6_addr" == "NONE" ]; then +sudo sh -c "nohup ./tldk/x86_64-native-linuxapp-gcc/app/l4fwd --lcore='0' \ + -n 2 --vdev 'eth_pcap1,rx_pcap=${rx_file},tx_pcap=${tx_file}' \ + -b ${nic_pci} -- -P -U -R 0x1000 -S 0x1000 -s 0x20 -f ${fe_cfg} -b ${be_cfg} \ + port=0,lcore=0,rx_offload=0,tx_offload=0,ipv4=${IPv4_addr} &" +elif [ "$IPv4_addr" == "NONE" ]; then +sudo sh -c "nohup ./tldk/x86_64-native-linuxapp-gcc/app/l4fwd --lcore='0' \ + -n 2 --vdev 'eth_pcap1,rx_pcap=${rx_file},tx_pcap=${tx_file}' \ + -b ${nic_pci} -- -P -U -R 0x1000 -S 0x1000 -s 0x20 -f ${fe_cfg} -b ${be_cfg} \ + port=0,lcore=0,rx_offload=0,tx_offload=0,ipv6=${IPv6_addr} &" +fi + +cd ${PWDDIR} + +sleep 10 diff --git a/tests/tldk/tldk_testconfig/test_ipv4_assemble_be.cfg b/tests/tldk/tldk_testconfig/test_ipv4_assemble_be.cfg new file mode 100644 index 0000000000..7f7cb8e8fe --- /dev/null +++ b/tests/tldk/tldk_testconfig/test_ipv4_assemble_be.cfg @@ -0,0 +1 @@ +port=0,masklen=24,addr=192.168.1.56,mac=68:05:ca:27:d1:6a diff --git a/tests/tldk/tldk_testconfig/test_ipv4_assemble_fe.cfg b/tests/tldk/tldk_testconfig/test_ipv4_assemble_fe.cfg new file mode 100644 index 0000000000..f3531e0b3a --- /dev/null +++ b/tests/tldk/tldk_testconfig/test_ipv4_assemble_fe.cfg @@ -0,0 +1,2 @@ +#udpfwd config file +lcore=0,op=echo,laddr=0.0.0.0,lport=0x8000,raddr=0.0.0.0,rport=0 diff --git a/tests/tldk/tldk_testconfig/test_ipv4_checksum_be.cfg b/tests/tldk/tldk_testconfig/test_ipv4_checksum_be.cfg new file mode 100644 index 0000000000..c4e39e064f --- /dev/null +++ b/tests/tldk/tldk_testconfig/test_ipv4_checksum_be.cfg @@ -0,0 +1,2 @@ +port=0,masklen=24,addr=192.168.1.56,mac=68:05:ca:27:d1:6a +port=0,addr=2001:4860:b002::56,masklen=64,mac=68:05:ca:27:d1:6a diff --git a/tests/tldk/tldk_testconfig/test_ipv4_checksum_fe.cfg b/tests/tldk/tldk_testconfig/test_ipv4_checksum_fe.cfg new file mode 100644 index 0000000000..9553b7085c --- /dev/null +++ b/tests/tldk/tldk_testconfig/test_ipv4_checksum_fe.cfg @@ -0,0 +1,3 @@ +#udpfwd config file +lcore=0,op=echo,laddr=0.0.0.0,lport=0x8000,raddr=0.0.0.0,rport=0 +lcore=0,op=echo,laddr=::,lport=0x8000,raddr=::,rport=0 diff --git a/tests/tldk/tldk_testconfig/test_ipv4_fragment_be.cfg b/tests/tldk/tldk_testconfig/test_ipv4_fragment_be.cfg new file mode 100644 index 0000000000..e769994319 --- /dev/null +++ b/tests/tldk/tldk_testconfig/test_ipv4_fragment_be.cfg @@ -0,0 +1,2 @@ +port=0,masklen=24,addr=192.168.1.56,mac=68:05:ca:27:d1:6a,mtu=1024 +port=0,addr=2001:4860:b002::56,masklen=64,mac=68:05:ca:27:d1:6a,mtu=1024 diff --git a/tests/tldk/tldk_testconfig/test_ipv4_fragment_fe.cfg b/tests/tldk/tldk_testconfig/test_ipv4_fragment_fe.cfg new file mode 100644 index 0000000000..9553b7085c --- /dev/null +++ b/tests/tldk/tldk_testconfig/test_ipv4_fragment_fe.cfg @@ -0,0 +1,3 @@ +#udpfwd config file +lcore=0,op=echo,laddr=0.0.0.0,lport=0x8000,raddr=0.0.0.0,rport=0 +lcore=0,op=echo,laddr=::,lport=0x8000,raddr=::,rport=0 diff --git a/tests/tldk/tldk_testconfig/test_ipv6_checksum_be.cfg b/tests/tldk/tldk_testconfig/test_ipv6_checksum_be.cfg new file mode 100644 index 0000000000..c4e39e064f --- /dev/null +++ b/tests/tldk/tldk_testconfig/test_ipv6_checksum_be.cfg @@ -0,0 +1,2 @@ +port=0,masklen=24,addr=192.168.1.56,mac=68:05:ca:27:d1:6a +port=0,addr=2001:4860:b002::56,masklen=64,mac=68:05:ca:27:d1:6a diff --git a/tests/tldk/tldk_testconfig/test_ipv6_checksum_fe.cfg b/tests/tldk/tldk_testconfig/test_ipv6_checksum_fe.cfg new file mode 100644 index 0000000000..9553b7085c --- /dev/null +++ b/tests/tldk/tldk_testconfig/test_ipv6_checksum_fe.cfg @@ -0,0 +1,3 @@ +#udpfwd config file +lcore=0,op=echo,laddr=0.0.0.0,lport=0x8000,raddr=0.0.0.0,rport=0 +lcore=0,op=echo,laddr=::,lport=0x8000,raddr=::,rport=0 diff --git a/tests/tldk/tldk_testconfig/test_ipv6_fragment_be.cfg b/tests/tldk/tldk_testconfig/test_ipv6_fragment_be.cfg new file mode 100644 index 0000000000..e769994319 --- /dev/null +++ b/tests/tldk/tldk_testconfig/test_ipv6_fragment_be.cfg @@ -0,0 +1,2 @@ +port=0,masklen=24,addr=192.168.1.56,mac=68:05:ca:27:d1:6a,mtu=1024 +port=0,addr=2001:4860:b002::56,masklen=64,mac=68:05:ca:27:d1:6a,mtu=1024 diff --git a/tests/tldk/tldk_testconfig/test_ipv6_fragment_fe.cfg b/tests/tldk/tldk_testconfig/test_ipv6_fragment_fe.cfg new file mode 100644 index 0000000000..9553b7085c --- /dev/null +++ b/tests/tldk/tldk_testconfig/test_ipv6_fragment_fe.cfg @@ -0,0 +1,3 @@ +#udpfwd config file +lcore=0,op=echo,laddr=0.0.0.0,lport=0x8000,raddr=0.0.0.0,rport=0 +lcore=0,op=echo,laddr=::,lport=0x8000,raddr=::,rport=0 diff --git a/tests/vpp/func/__init__.robot b/tests/vpp/func/__init__.robot new file mode 100644 index 0000000000..0e4c9d6a82 --- /dev/null +++ b/tests/vpp/func/__init__.robot @@ -0,0 +1,20 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Library | resources.libraries.python.SetupFramework +| Suite Setup | Run Keywords | Setup Framework | ${nodes} +| ... | AND | Setup All DUTs | ${nodes} +| ... | AND | Update All Interface Data On All Nodes | ${nodes} diff --git a/tests/vpp/func/crypto/eth2p-ethip4ipsectnl-ip4base-func.robot b/tests/vpp/func/crypto/eth2p-ethip4ipsectnl-ip4base-func.robot new file mode 100644 index 0000000000..814d8ee45c --- /dev/null +++ b/tests/vpp/func/crypto/eth2p-ethip4ipsectnl-ip4base-func.robot @@ -0,0 +1,523 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/crypto/ipsec.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO +| ... | VM_ENV | HW_ENV | SKIP_VPP_PATCH +| ... +| Test Setup | Set up IPv4 IPSec functional test +| ... +| Test Teardown | Tear down IPSec functional test | ${dut_node} +| ... +| Documentation | *IPv4 IPsec tunnel mode test suite.* +| ... +| ... | *[Top] Network topologies:* TG-DUT1 2-node topology with one link\ +| ... | between nodes. +| ... | *[Cfg] DUT configuration:* On DUT1 create loopback interface, configure\ +| ... | loopback an physical interface IPv4 addresses, static ARP record, route\ +| ... | and IPsec manual keyed connection in tunnel mode. +| ... | *[Ver] TG verification:* ESP packet is sent from TG to DUT1. ESP packet\ +| ... | is received on TG from DUT1. +| ... | *[Ref] Applicable standard specifications:* RFC4303. + +*** Variables *** +| ${tg_spi}= | ${1000} +| ${dut_spi}= | ${1001} +| ${ESP_PROTO}= | ${50} +| ${tg_if_ip4}= | 192.168.100.2 +| ${dut_if_ip4}= | 192.168.100.3 +| ${tg_lo_ip4}= | 192.168.3.3 +| ${dut_lo_ip4}= | 192.168.4.4 +| ${ip4_plen}= | ${24} + +*** Test Cases *** +| TC01: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC02: VPP process ESP packet in Tunnel Mode with AES-CBC-192 encryption and SHA1-96 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-192 and integrity algorithm SHA1-96 in tunnel mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 192 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC03: VPP process ESP packet in Tunnel Mode with AES-CBC-256 encryption and SHA1-96 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-256 and integrity algorithm SHA1-96 in tunnel mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 256 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC04: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA-256-128 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-256-128 in tunnel\ +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC05: VPP process ESP packet in Tunnel Mode with AES-CBC-192 encryption and SHA-256-128 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-256-128 in tunnel\ +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | ${encr_alg}= | Crypto Alg AES CBC 192 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC06: VPP process ESP packet in Tunnel Mode with AES-CBC-256 encryption and SHA-256-128 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-256-128 in tunnel\ +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 256 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC07: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA-384-192 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-384-192 in tunnel\ +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 384 192 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC08: VPP process ESP packet in Tunnel Mode with AES-CBC-192 encryption and SHA-384-192 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-384-192 in tunnel\ +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 192 +| | ${auth_alg}= | Integ Alg SHA 384 192 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC09: VPP process ESP packet in Tunnel Mode with AES-CBC-256 encryption and SHA-384-192 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-384-192 in tunnel\ +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | ${encr_alg}= | Crypto Alg AES CBC 256 +| | ${auth_alg}= | Integ Alg SHA 384 192 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC10: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA-512-256 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-512-256 in tunnel\ +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC11: VPP process ESP packet in Tunnel Mode with AES-CBC-192 encryption and SHA-512-256 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-512-256 in tunnel\ +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 192 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC12: VPP process ESP packet in Tunnel Mode with AES-CBC-256 encryption and SHA-512-256 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-512-256 in tunnel\ +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | ${encr_alg}= | Crypto Alg AES CBC 256 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC13: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity - different encryption alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel mode. +| | ... | [Ver] Send an ESP packet encrypted by encryption key different from\ +| | ... | encryption key stored on VPP node from TG to VPP node and expect no\ +| | ... | response to be received on TG. +| | ... | [Ref] RFC4303. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC14: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity - different integrity alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel mode. +| | ... | [Ver] Send an ESP packet authenticated by integrity key different\ +| | ... | from integrity key stored on VPP node from TG to VPP node and expect\ +| | ... | no response to be received on TG. +| | ... | [Ref] RFC4303. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC15: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity - different encryption and integrity alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel mode. +| | ... | [Ver] Send an ESP packet authenticated by integrity key and encrypted\ +| | ... | by encryption key different from integrity and encryption keys stored\ +| | ... | on VPP node from TG to VPP node and expect no response to be received\ +| | ... | on TG. +| | ... | [Ref] RFC4303. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto +| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC16: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel\ +| | ... | mode. Then update SA keys - use new keys. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node before\ +| | ... | and after SA keys update. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} +| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto +| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ +| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} +| | ... | ${new_encr_key} | ${new_auth_key} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${new_auth_key} +| | ... | ${tg_spi} | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC17: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different encryption alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel +| | ... | mode. Then update SA keys - use new keys. +| | ... | [Ver] Send an ESP packet encrypted by encryption key different from\ +| | ... | encryption key stored on VPP node from TG to VPP node and expect no\ +| | ... | response to be received on TG before and after SA keys update. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} +| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto +| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ +| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} +| | ... | ${new_encr_key} | ${new_auth_key} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${new_auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC18: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different integrity alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel\ +| | ... | mode. Then update SA keys - use new keys. +| | ... | [Ver] Send an ESP packet authenticated by integrity key different\ +| | ... | from integrity key stored on VPP node from TG to VPP node and expect\ +| | ... | no response to be received on TG before and after SA keys update. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} +| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto +| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ +| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} +| | ... | ${new_encr_key} | ${new_auth_key} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC19: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different encryption and integrity alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel\ +| | ... | mode. Then update SA keys - use new keys. +| | ... | [Ver] Send an ESP packet authenticated by integrity key and encrypted\ +| | ... | by encryption key different from integrity and encryption keys stored\ +| | ... | on VPP node from TG to VPP node and expect no response to be received\ +| | ... | on TG before and after SA keys update. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto +| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} +| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto +| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ +| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} +| | ... | ${new_encr_key} | ${new_auth_key} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +*** Keywords *** +| Get Second Random String +| | [Arguments] | ${req_alg} | ${req_type} +| | ${req_key_len}= | Run Keyword | Get ${req_type} Alg Key Len | ${req_alg} +| | ${key}= | Set Variable If | '${req_type}' == 'Crypto' | ${encr_key} +| | ... | '${req_type}' == 'Integ' | ${auth_key} +| | :FOR | ${index} | IN RANGE | 100 +| | | ${req_key}= | Generate Random String | ${req_key_len} +| | | Return From Keyword If | '${req_key}' != '${key}' | ${req_key} diff --git a/tests/vpp/func/crypto/eth2p-ethip4ipsectpt-ip4base-func.robot b/tests/vpp/func/crypto/eth2p-ethip4ipsectpt-ip4base-func.robot new file mode 100644 index 0000000000..e599cf9506 --- /dev/null +++ b/tests/vpp/func/crypto/eth2p-ethip4ipsectpt-ip4base-func.robot @@ -0,0 +1,487 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/crypto/ipsec.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO +| ... | VM_ENV | HW_ENV | SKIP_VPP_PATCH +| Test Setup | Set up IPv4 IPSec functional test +| ... +| Test Teardown | Tear down IPSec functional test | ${dut_node} +| ... +| Documentation | *IPv4 IPsec transport mode test suite.* +| ... +| ... | *[Top] Network topologies:* TG-DUT1 2-node topology with one link\ +| ... | between nodes. +| ... | *[Cfg] DUT configuration:* On DUT1 create loopback interface, configure\ +| ... | loopback an physical interface IPv4 addresses, static ARP record, route\ +| ... | and IPsec manual keyed connection in transport mode. +| ... | *[Ver] TG verification:* ESP packet is sent from TG to DUT1. ESP packet\ +| ... | is received on TG from DUT1. +| ... | *[Ref] Applicable standard specifications:* RFC4303. + +*** Variables *** +| ${tg_spi}= | ${1000} +| ${dut_spi}= | ${1001} +| ${ESP_PROTO}= | ${50} +| ${tg_if_ip4}= | 192.168.100.2 +| ${dut_if_ip4}= | 192.168.100.3 +| ${tg_lo_ip4}= | 192.168.3.3 +| ${dut_lo_ip4}= | 192.168.4.4 +| ${ip4_plen}= | ${24} + +*** Test Cases *** +| TC01: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC02: VPP process ESP packet in Transport Mode with AES-CBC-192 encryption and SHA1-96 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-192 and integrity algorithm SHA1-96 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 192 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC03: VPP process ESP packet in Transport Mode with AES-CBC-256 encryption and SHA1-96 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-256 and integrity algorithm SHA1-96 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 256 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC04: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA-256-128 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-256-128 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC05: VPP process ESP packet in Transport Mode with AES-CBC-192 encryption and SHA-256-128 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-256-128 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | ${encr_alg}= | Crypto Alg AES CBC 192 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC06: VPP process ESP packet in Transport Mode with AES-CBC-256 encryption and SHA-256-128 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-256-128 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 256 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC07: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA-384-192 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-384-192 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 384 192 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC08: VPP process ESP packet in Transport Mode with AES-CBC-192 encryption and SHA-384-192 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-384-192 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 192 +| | ${auth_alg}= | Integ Alg SHA 384 192 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC09: VPP process ESP packet in Transport Mode with AES-CBC-256 encryption and SHA-384-192 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-384-192 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | ${encr_alg}= | Crypto Alg AES CBC 256 +| | ${auth_alg}= | Integ Alg SHA 384 192 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC10: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA-512-256 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-512-256 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC11: VPP process ESP packet in Transport Mode with AES-CBC-192 encryption and SHA-512-256 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-512-256 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 192 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC12: VPP process ESP packet in Transport Mode with AES-CBC-256 encryption and SHA-512-256 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-512-256 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | ${encr_alg}= | Crypto Alg AES CBC 256 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + + +| TC13: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity - different encryption alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ +| | ... | mode. +| | ... | [Ver] Send an ESP packet encrypted by encryption key different from\ +| | ... | encryption key stored on VPP node from TG to VPP node and expect no\ +| | ... | response to be received on TG. +| | ... | [Ref] RFC4303. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC14: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity - different integrity alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ +| | ... | mode. +| | ... | [Ver] Send an ESP packet authenticated by integrity key different\ +| | ... | from integrity key stored on VPP node from TG to VPP node and expect\ +| | ... | no response to be received on TG. +| | ... | [Ref] RFC4303. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC15: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity - different encryption and integrity alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ +| | ... | mode. +| | ... | [Ver] Send an ESP packet authenticated by integrity key and encrypted\ +| | ... | by encryption key different from integrity and encryption keys stored\ +| | ... | on VPP node from TG to VPP node and expect no response to be received\ +| | ... | on TG. +| | ... | [Ref] RFC4303. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto +| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC16: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ +| | ... | mode. Then update SA keys - use new keys. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node before\ +| | ... | and after SA keys update. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} +| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto +| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ +| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} +| | ... | ${new_encr_key} | ${new_auth_key} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${new_auth_key} +| | ... | ${tg_spi} | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC17: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different encryption alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ +| | ... | mode. Then update SA keys - use new keys. +| | ... | [Ver] Send an ESP packet encrypted by encryption key different from\ +| | ... | encryption key stored on VPP node from TG to VPP node and expect no\ +| | ... | response to be received on TG before and after SA keys update. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} +| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto +| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ +| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} +| | ... | ${new_encr_key} | ${new_auth_key} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${new_auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC18: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different integrity alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ +| | ... | mode. Then update SA keys - use new keys. +| | ... | [Ver] Send an ESP packet authenticated by integrity key different\ +| | ... | from integrity key stored on VPP node from TG to VPP node and expect\ +| | ... | no response to be received on TG before and after SA keys update. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} +| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto +| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ +| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} +| | ... | ${new_encr_key} | ${new_auth_key} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC19: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different encryption and integrity alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ +| | ... | mode. Then update SA keys - use new keys. +| | ... | [Ver] Send an ESP packet authenticated by integrity key and encrypted\ +| | ... | by encryption key different from integrity and encryption keys stored\ +| | ... | on VPP node from TG to VPP node and expect no response to be received\ +| | ... | on TG before and after SA keys update. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto +| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} +| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto +| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ +| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} +| | ... | ${new_encr_key} | ${new_auth_key} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +*** Keywords *** +| Get Second Random String +| | [Arguments] | ${req_alg} | ${req_type} +| | ${req_key_len}= | Run Keyword | Get ${req_type} Alg Key Len | ${req_alg} +| | ${key}= | Set Variable If | '${req_type}' == 'Crypto' | ${encr_key} +| | ... | '${req_type}' == 'Integ' | ${auth_key} +| | :FOR | ${index} | IN RANGE | 100 +| | | ${req_key}= | Generate Random String | ${req_key_len} +| | | Return From Keyword If | '${req_key}' != '${key}' | ${req_key} diff --git a/tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip4base-func.robot b/tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip4base-func.robot new file mode 100644 index 0000000000..c77fb69c5c --- /dev/null +++ b/tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip4base-func.robot @@ -0,0 +1,269 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.LispUtil +| Library | resources.libraries.python.VhostUser +| Library | resources.libraries.python.QemuUtils +| Library | resources.libraries.python.VPPUtil +| Library | resources.libraries.python.IPsecUtil +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/vrf.robot +| Resource | resources/libraries/robot/crypto/ipsec.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/overlay/l2lisp.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/ipv4_ipsec_lispgpe_ipv4/ipv4_ipsec_lispgpe_ipv4.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH +| ... +| Test Setup | Set up functional test +| ... +| Test Teardown | Tear down LISP functional test +| ... +| Documentation | *IPv4-ip4-ipsec-lispgpe-ip4 - main fib, vrf (gpe_vni-to-vrf)* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* ICMPv4-IPv4-IPSec-LISPGPE-IPv4-ICMPv4. +| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec.\ +| ... | IPsec is in transport mode. Tests cases are for IPsec configured both\ +| ... | on RLOC interface or lisp_gpe0 interface. +| ... | *[Ver] TG verification:* Packet is send from TG(if1) across the DUT1 to\ +| ... | DUT2 where it is forwarded to TG(if2). +| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303. + +*** Variables *** +| ${dut2_spi}= | ${1000} +| ${dut1_spi}= | ${1001} + +| ${ESP_PROTO}= | ${50} + +| ${bid}= | 10 + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on RLOC Int. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-IPSec-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2,\ +| | ... | Eth-IPv4-ICMPv4 on TG-DUTn. +| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ +| | ... | IPsec in between DUTs. +| | ... | [Ver] Case: ip4-lispgpe-ipsec-ip4 - main fib +| | ... | Make TG send ICMPv4 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830, RFC4303. +| | ... +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Setup 3-node Topology +| | And Add IP Neighbors +| | And Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_to_dut2_ip4_static_adjacency} +| | ... | ${dut2_to_dut1_ip4_static_adjacency} +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} +| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} +| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +| TC02: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) lisp_gpe0 Int. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-IPSec-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2,\ +| | ... | Eth-IPv4-ICMPv4 on TG-DUTn. +| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ +| | ... | IPsec in between DUTs. +| | ... | [Ver] Case: ip4-ipsec-lispgpe-ip4 - main fib +| | ... | Make TG send ICMPv4 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830, RFC4303. +| | ... +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Setup 3-node Topology +| | And Add IP Neighbors +| | And Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_to_dut2_ip4_static_adjacency} +| | ... | ${dut2_to_dut1_ip4_static_adjacency} +| | ${lisp_if_idx}= | resources.libraries.python.InterfaceUtil.Get sw if index +| | ... | ${dut1_node} | lisp_gpe0 +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut1_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} | ${tg1_ip4} +| | ... | ${tg2_ip4} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut2_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} | ${tg2_ip4} +| | ... | ${tg1_ip4} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +| TC03: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on RLOC Int and VRF on EID is enabled. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-IPSec-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2,\ +| | ... | Eth-IPv4-ICMPv4 on TG-DUTn. +| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ +| | ... | IPsec in between DUTs. +| | ... | [Ver] Case: ip4-lispgpe-ipsec-ip4 - vrf, main fib +| | ... | Make TG send ICMPv4 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830, RFC4303. +| | ... +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Setup 3-node Topology | ${fib_table_1} +| | And Add IP Neighbors +| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_to_dut2_ip4_static_adjacency} +| | ... | ${dut2_to_dut1_ip4_static_adjacency} +| | ... | ${dut1_dut2_vni} | ${fib_table_1} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} +| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} +| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +| TC04: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int and VRF is enabled. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-IPSec-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2,\ +| | ... | Eth-IPv4-ICMPv4 on TG-DUTn. +| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ +| | ... | IPsec in between DUTs. +| | ... | [Ver] Case: ip4-ipsec-lispgpe-ip4 - vrf, main fib +| | ... | Make TG send ICMPv4 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830, RFC4303. +| | ... +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Setup 3-node Topology | ${fib_table_1} +| | And Add IP Neighbors +| | And Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_to_dut2_ip4_static_adjacency} +| | ... | ${dut2_to_dut1_ip4_static_adjacency} +| | ... | ${dut1_dut2_vni} | ${fib_table_1} +| | When Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | ${lisp_if_idx}= | resources.libraries.python.InterfaceUtil.Get sw if index +| | ... | ${dut1_node} | lisp_gpe0 +| | And Configure manual keyed connection for IPSec +| | ... | ${dut1_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} | ${tg1_ip4} +| | ... | ${tg2_ip4} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut2_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} | ${tg2_ip4} +| | ... | ${tg1_ip4} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Setup 3-node Topology +| | [Documentation] +| | ... | Setup 3-node topology for this test suite. Set all physical\ +| | ... | interfaces up and assing IP adresses to them.\ +| | ... | You can specify fib table ID where the DUT-TG interfaces assign to.\ +| | ... | Default is 0. +| | ... +| | [Arguments] | ${fib_table}=0 +| | Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | Set interfaces in 3-node circular topology up +| | Assign Interface To Fib Table | ${dut1_node} +| | ... | ${dut1_to_tg} | ${fib_table} +| | Assign Interface To Fib Table | ${dut2_node} +| | ... | ${dut2_to_tg} | ${fib_table} +| | Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} +| | ... | ${prefix4} +| | Set Interface Address | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} +| | ... | ${prefix4} +| | Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} +| | ... | ${prefix4} +| | Set Interface Address | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} +| | ... | ${prefix4} + +| Add IP Neighbors +| | [Documentation] +| | ... | Add IP neighbors to physical interfaces on DUTs. +| | ... +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} +| | ... | ${tg_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} +| | ... | ${tg_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} +| | ... | ${dut1_to_dut2_mac} diff --git a/tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip6base-func.robot b/tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip6base-func.robot new file mode 100644 index 0000000000..550c9405cc --- /dev/null +++ b/tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip6base-func.robot @@ -0,0 +1,160 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.L2Util +| Library | resources.libraries.python.LispUtil +| Library | resources.libraries.python.IPsecUtil +| Library | resources.libraries.python.VatJsonUtil +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.VhostUser +| Library | resources.libraries.python.QemuUtils +| Library | resources.libraries.python.VPPUtil +| Library | String +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/crypto/ipsec.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv4/ipv6_lispgpe_ipsec_ipv4.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH +| ... +| Test Setup | Set up functional test +| ... +| Test Teardown | Tear down LISP functional test +| ... +| Documentation | *IPv6 - ip4-ipsec-lispgpe-ip6 - main fib, vrf, virt2lisp,\ +| ... | phy2lisp* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISPGPE-IPSec-IPv6-ICMP,\ +| ... | Eth-IPv4-IPSec-LISPGPE-IPv6-ICMP +| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec.\ +| ... | IPsec is in transport mode. Tests cases are for IPsec configured both\ +| ... | on RLOC interface or lisp_gpe0 interface. +| ... | *[Ver] TG verification:* Packet is send from TG(if1) across the DUT1 to\ +| ... | DUT2 where it is forwarded to TG(if2). +| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303. + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on RLOC Int. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-LISPGPE-IPSec-IPv6-ICMP on DUT1-DUT2, Eth-IPv6-ICMP\ +| | ... | on TG-DUTn. +| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 with\ +| | ... | IPsec in between DUTS. +| | ... | [Ver] Make TG send ICMPv6 Echo Req between its interfaces across\ +| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830, RFC4303. +| | ... +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Setup Topology And Lisp +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} +| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} +| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +| TC02: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMP\ +| | ... | on TG-DUTn. +| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ +| | ... | IPsec in between DUTS. +| | ... | [Ver] Make TG send ICMPv6 Echo Req between its interfaces across\ +| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830, RFC4303. +| | ... +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Setup Topology And Lisp +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | ${lisp_if_idx}= | resources.libraries.python.InterfaceUtil.get sw if index +| | ... | ${dut1_node} | ${lisp_gpe_int} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut1_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} +| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut2_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} +| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Setup Topology And Lisp +| | [Documentation] | Setup IPs and neighbors for interfaces on DUT1 and DUT2\ +| | ... | and then setup LISP. +| | [Arguments] | ${fib_table}=0 | ${vni_table}=0 | ${ip6}=${FALSE} +| | Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | Set interfaces in 3-node circular topology up +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} +| | ... | ${prefix4} +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} +| | ... | ${prefix6} +| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} +| | ... | ${prefix4} +| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} +| | ... | ${prefix6} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} +| | ... | ${tg_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} +| | ... | ${dut1_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} +| | ... | ${tg_to_dut1_mac} +| | Vpp All RA Suppress Link Layer | ${nodes} +| | Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_to_dut2_ip_static_adjacency} +| | ... | ${dut2_to_dut1_ip_static_adjacency} +| | ... | ${vni_table} | ${fib_table} diff --git a/tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot b/tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot new file mode 100644 index 0000000000..e85ef57d1f --- /dev/null +++ b/tests/vpp/func/crypto/eth2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot @@ -0,0 +1,133 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.L2Util +| Library | resources.libraries.python.LispUtil +| Library | resources.libraries.python.IPsecUtil +| Library | resources.libraries.python.VatJsonUtil +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.VhostUser +| Library | resources.libraries.python.QemuUtils +| Library | resources.libraries.python.VPPUtil +| Library | String +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/crypto/ipsec.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv4/ipv6_lispgpe_ipsec_ipv4.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH +| ... +| Test Setup | Set up functional test +| ... +| Test Teardown | Tear down LISP functional test +| ... +| Documentation | *IPv6 - ip4-ipsec-lispgpe-ip6 - main fib, vrf, virt2lisp,\ +| ... | phy2lisp* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISPGPE-IPSec-IPv6-ICMP,\ +| ... | Eth-IPv4-IPSec-LISPGPE-IPv6-ICMP +| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec.\ +| ... | IPsec is in transport mode. Tests cases are for IPsec configured both\ +| ... | on RLOC interface or lisp_gpe0 interface. +| ... | *[Ver] TG verification:* Packet is send from TG(if1) across the DUT1 to\ +| ... | DUT2 where it is forwarded to TG(if2). +| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303. + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using physical interfaces and VRF is enabled +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2,\ +| | ... | Eth-IPv6-ICMPv6, on TG-DUTn. +| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ +| | ... | IPsec in between DUTS. +| | ... | [Ver] Case: ip4-ipsec-lispgpe-ip6 - vrf, phy2lisp +| | ... | Make TG send ICMPv6 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830, RFC4303. +| | ... +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | Assign Interface To Fib Table | ${dut1_node} +| | ... | ${dut1_to_tg} | ${fib_table_1} | ip6=${TRUE} +| | Assign Interface To Fib Table | ${dut2_node} +| | ... | ${dut2_to_tg} | ${fib_table_1} | ip6=${TRUE} +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} +| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} +| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} +| | Setup Topology And Lisp | ${fib_table_1} | ${dut1_dut2_vni} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Setup Topology And Lisp +| | [Documentation] | Setup IPs and neighbors for interfaces on DUT1 and DUT2\ +| | ... | and then setup LISP. +| | [Arguments] | ${fib_table}=0 | ${vni_table}=0 | ${ip6}=${FALSE} +| | Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | Set interfaces in 3-node circular topology up +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} +| | ... | ${prefix4} +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} +| | ... | ${prefix6} +| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} +| | ... | ${prefix4} +| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} +| | ... | ${prefix6} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} +| | ... | ${tg_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} +| | ... | ${dut1_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} +| | ... | ${tg_to_dut1_mac} +| | Vpp All RA Suppress Link Layer | ${nodes} +| | Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_to_dut2_ip_static_adjacency} +| | ... | ${dut2_to_dut1_ip_static_adjacency} +| | ... | ${vni_table} | ${fib_table} diff --git a/tests/vpp/func/crypto/eth2p-ethip6ipsectnl-ip6base-func.robot b/tests/vpp/func/crypto/eth2p-ethip6ipsectnl-ip6base-func.robot new file mode 100644 index 0000000000..26d109a0b7 --- /dev/null +++ b/tests/vpp/func/crypto/eth2p-ethip6ipsectnl-ip6base-func.robot @@ -0,0 +1,523 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/crypto/ipsec.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO +| ... | VM_ENV | HW_ENV | SKIP_VPP_PATCH +| Test Setup | Set up IPv6 IPSec functional test +| ... +| Test Teardown | Tear down IPSec functional test | ${dut_node} +| ... +| Documentation | *IPv6 IPsec tunnel mode test suite.* +| ... +| ... | *[Top] Network topologies:* TG-DUT1 2-node topology with one link\ +| ... | between nodes. +| ... | *[Cfg] DUT configuration:* On DUT1 create loopback interface, configure +| ... | loopback an physical interface IPv6 addresses, static ARP record, route +| ... | and IPsec manual keyed connection in tunnel mode. +| ... | *[Ver] TG verification:* ESP packet is sent from TG to DUT1. ESP packet +| ... | is received on TG from DUT1. +| ... | *[Ref] Applicable standard specifications:* RFC4303. + +*** Variables *** +| ${tg_spi}= | ${1000} +| ${dut_spi}= | ${1001} +| ${ESP_PROTO}= | ${50} +| ${tg_if_ip6}= | 3ffe:5f::1 +| ${dut_if_ip6}= | 3ffe:5f::2 +| ${tg_lo_ip6}= | 3ffe:60::3 +| ${dut_lo_ip6}= | 3ffe:60::4 +| ${ip6_plen}= | ${64} +| ${ip6_plen_rt}= | ${128} + +*** Test Cases *** +| TC01: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC02: VPP process ESP packet in Tunnel Mode with AES-CBC-192 encryption and SHA1-96 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-192 and integrity algorithm SHA1-96 in tunnel mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 192 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC03: VPP process ESP packet in Tunnel Mode with AES-CBC-256 encryption and SHA1-96 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-256 and integrity algorithm SHA1-96 in tunnel mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 256 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC04: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA-256-128 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-256-128 in tunnel\ +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC05: VPP process ESP packet in Tunnel Mode with AES-CBC-192 encryption and SHA-256-128 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-256-128 in tunnel\ +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | ${encr_alg}= | Crypto Alg AES CBC 192 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC06: VPP process ESP packet in Tunnel Mode with AES-CBC-256 encryption and SHA-256-128 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-256-128 in tunnel\ +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 256 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC07: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA-384-192 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-384-192 in tunnel\ +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 384 192 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC08: VPP process ESP packet in Tunnel Mode with AES-CBC-192 encryption and SHA-384-192 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-384-192 in tunnel\ +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 192 +| | ${auth_alg}= | Integ Alg SHA 384 192 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC09: VPP process ESP packet in Tunnel Mode with AES-CBC-256 encryption and SHA-384-192 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-384-192 in tunnel\ +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | ${encr_alg}= | Crypto Alg AES CBC 256 +| | ${auth_alg}= | Integ Alg SHA 384 192 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC10: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA-512-256 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-512-256 in tunnel\ +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC11: VPP process ESP packet in Tunnel Mode with AES-CBC-192 encryption and SHA-512-256 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-512-256 in tunnel\ +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 192 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC12: VPP process ESP packet in Tunnel Mode with AES-CBC-256 encryption and SHA-512-256 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-512-256 in tunnel\ +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | ${encr_alg}= | Crypto Alg AES CBC 256 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC13: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity - different encryption alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel mode. +| | ... | [Ver] Send an ESP packet encrypted by encryption key different from\ +| | ... | encryption key stored on VPP node from TG to VPP node and expect no\ +| | ... | response to be received on TG. +| | ... | [Ref] RFC4303. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC14: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity - different integrity alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel mode. +| | ... | [Ver] Send an ESP packet authenticated by integrity key different\ +| | ... | from integrity key stored on VPP node from TG to VPP node and expect\ +| | ... | no response to be received on TG. +| | ... | [Ref] RFC4303. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC15: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity - different encryption and integrity alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel mode. +| | ... | [Ver] Send an ESP packet authenticated by integrity key and encrypted\ +| | ... | by encryption key different from integrity and encryption keys stored\ +| | ... | on VPP node from TG to VPP node and expect no response to be received\ +| | ... | on TG. +| | ... | [Ref] RFC4303. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto +| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC16: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel\ +| | ... | mode. Then update SA keys - use new keys. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node before\ +| | ... | and after SA keys update. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} +| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto +| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ +| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} +| | ... | ${new_encr_key} | ${new_auth_key} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${new_auth_key} +| | ... | ${tg_spi} | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC17: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different encryption alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel +| | ... | mode. Then update SA keys - use new keys. +| | ... | [Ver] Send an ESP packet encrypted by encryption key different from\ +| | ... | encryption key stored on VPP node from TG to VPP node and expect no\ +| | ... | response to be received on TG before and after SA keys update. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} +| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto +| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ +| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} +| | ... | ${new_encr_key} | ${new_auth_key} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${new_auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC18: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different integrity alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel\ +| | ... | mode. Then update SA keys - use new keys. +| | ... | [Ver] Send an ESP packet authenticated by integrity key different\ +| | ... | from integrity key stored on VPP node from TG to VPP node and expect\ +| | ... | no response to be received on TG before and after SA keys update. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} +| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto +| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ +| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} +| | ... | ${new_encr_key} | ${new_auth_key} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +| TC19: VPP process ESP packet in Tunnel Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different encryption and integrity alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in tunnel\ +| | ... | mode. Then update SA keys - use new keys. +| | ... | [Ver] Send an ESP packet authenticated by integrity key and encrypted\ +| | ... | by encryption key different from integrity and encryption keys stored\ +| | ... | on VPP node from TG to VPP node and expect no response to be received\ +| | ... | on TG before and after SA keys update. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip} +| | ... | ${dut_tun_ip} | ${tg_tun_ip} +| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto +| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} +| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto +| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ +| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} +| | ... | ${new_encr_key} | ${new_auth_key} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip} +| | ... | ${dut_tun_ip} + +*** Keywords *** +| Get Second Random String +| | [Arguments] | ${req_alg} | ${req_type} +| | ${req_key_len}= | Run Keyword | Get ${req_type} Alg Key Len | ${req_alg} +| | ${key}= | Set Variable If | '${req_type}' == 'Crypto' | ${encr_key} +| | ... | '${req_type}' == 'Integ' | ${auth_key} +| | :FOR | ${index} | IN RANGE | 100 +| | | ${req_key}= | Generate Random String | ${req_key_len} +| | | Return From Keyword If | '${req_key}' != '${key}' | ${req_key} diff --git a/tests/vpp/func/crypto/eth2p-ethip6ipsectpt-ip6base-func.robot b/tests/vpp/func/crypto/eth2p-ethip6ipsectpt-ip6base-func.robot new file mode 100644 index 0000000000..e36630b681 --- /dev/null +++ b/tests/vpp/func/crypto/eth2p-ethip6ipsectpt-ip6base-func.robot @@ -0,0 +1,487 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/crypto/ipsec.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO +| ... | VM_ENV | HW_ENV | SKIP_VPP_PATCH +| Test Setup | Set up IPv6 IPSec functional test +| ... +| Test Teardown | Tear down IPSec functional test | ${dut_node} +| ... +| Documentation | *IPv6 IPsec transport mode test suite.* +| ... +| ... | *[Top] Network topologies:* TG-DUT1 2-node topology with one link\ +| ... | between nodes. +| ... | *[Cfg] DUT configuration:* On DUT1 create loopback interface, configure +| ... | loopback an physical interface IPv6 addresses, static ARP record, route +| ... | and IPsec manual keyed connection in transport mode. +| ... | *[Ver] TG verification:* ESP packet is sent from TG to DUT1. ESP packet +| ... | is received on TG from DUT1. +| ... | *[Ref] Applicable standard specifications:* RFC4303. + +*** Variables *** +| ${tg_spi}= | ${1000} +| ${dut_spi}= | ${1001} +| ${ESP_PROTO}= | ${50} +| ${tg_if_ip6}= | 3ffe:5f::1 +| ${dut_if_ip6}= | 3ffe:5f::2 +| ${tg_lo_ip6}= | 3ffe:60::3 +| ${dut_lo_ip6}= | 3ffe:60::4 +| ${ip6_plen}= | ${64} +| ${ip6_plen_rt}= | ${128} + +*** Test Cases *** +| TC01: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC02: VPP process ESP packet in Transport Mode with AES-CBC-192 encryption and SHA1-96 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-192 and integrity algorithm SHA1-96 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 192 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC03: VPP process ESP packet in Transport Mode with AES-CBC-256 encryption and SHA1-96 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-256 and integrity algorithm SHA1-96 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 256 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC04: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA-256-128 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-256-128 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC05: VPP process ESP packet in Transport Mode with AES-CBC-192 encryption and SHA-256-128 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-256-128 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | ${encr_alg}= | Crypto Alg AES CBC 192 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC06: VPP process ESP packet in Transport Mode with AES-CBC-256 encryption and SHA-256-128 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-256-128 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 256 +| | ${auth_alg}= | Integ Alg SHA 256 128 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC07: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA-384-192 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-384-192 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 384 192 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC08: VPP process ESP packet in Transport Mode with AES-CBC-192 encryption and SHA-384-192 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-384-192 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 192 +| | ${auth_alg}= | Integ Alg SHA 384 192 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC09: VPP process ESP packet in Transport Mode with AES-CBC-256 encryption and SHA-384-192 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-384-192 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | ${encr_alg}= | Crypto Alg AES CBC 256 +| | ${auth_alg}= | Integ Alg SHA 384 192 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC10: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA-512-256 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-512-256 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC11: VPP process ESP packet in Transport Mode with AES-CBC-192 encryption and SHA-512-256 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-192 and integrity algorithm SHA-512-256 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | [Tags] | SKIP_PATCH +| | ${encr_alg}= | Crypto Alg AES CBC 192 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC12: VPP process ESP packet in Transport Mode with AES-CBC-256 encryption and SHA-512-256 integrity +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-256 and integrity algorithm SHA-512-256 in transport +| | ... | mode. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node. +| | ${encr_alg}= | Crypto Alg AES CBC 256 +| | ${auth_alg}= | Integ Alg SHA 512 256 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC13: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity - different encryption alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ +| | ... | mode. +| | ... | [Ver] Send an ESP packet encrypted by encryption key different from\ +| | ... | encryption key stored on VPP node from TG to VPP node and expect no\ +| | ... | response to be received on TG. +| | ... | [Ref] RFC4303. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC14: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity - different integrity alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ +| | ... | mode. +| | ... | [Ver] Send an ESP packet authenticated by integrity key different\ +| | ... | from integrity key stored on VPP node from TG to VPP node and expect\ +| | ... | no response to be received on TG. +| | ... | [Ref] RFC4303. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC15: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity - different encryption and integrity alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ +| | ... | mode. +| | ... | [Ver] Send an ESP packet authenticated by integrity key and encrypted\ +| | ... | by encryption key different from integrity and encryption keys stored\ +| | ... | on VPP node from TG to VPP node and expect no response to be received\ +| | ... | on TG. +| | ... | [Ref] RFC4303. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto +| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC16: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ +| | ... | mode. Then update SA keys - use new keys. +| | ... | [Ver] Send and receive ESP packet between TG and VPP node before\ +| | ... | and after SA keys update. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} +| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto +| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ +| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} +| | ... | ${new_encr_key} | ${new_auth_key} +| | Then Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${new_auth_key} +| | ... | ${tg_spi} | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC17: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different encryption alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ +| | ... | mode. Then update SA keys - use new keys. +| | ... | [Ver] Send an ESP packet encrypted by encryption key different from\ +| | ... | encryption key stored on VPP node from TG to VPP node and expect no\ +| | ... | response to be received on TG before and after SA keys update. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} +| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto +| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ +| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} +| | ... | ${new_encr_key} | ${new_auth_key} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${new_auth_key} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC18: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different integrity alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ +| | ... | mode. Then update SA keys - use new keys. +| | ... | [Ver] Send an ESP packet authenticated by integrity key different\ +| | ... | from integrity key stored on VPP node from TG to VPP node and expect\ +| | ... | no response to be received on TG before and after SA keys update. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} +| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto +| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ +| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} +| | ... | ${new_encr_key} | ${new_auth_key} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${new_encr_key} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +| TC19: VPP process ESP packet in Transport Mode with AES-CBC-128 encryption and SHA1-96 integrity with update SA keys - different encryption and integrity alogrithms used +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC4303. +| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\ +| | ... | algorithm AES-CBC-128 and integrity algorithm SHA1-96 in transport\ +| | ... | mode. Then update SA keys - use new keys. +| | ... | [Ver] Send an ESP packet authenticated by integrity key and encrypted\ +| | ... | by encryption key different from integrity and encryption keys stored\ +| | ... | on VPP node from TG to VPP node and expect no response to be received\ +| | ... | on TG before and after SA keys update. +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut_node} | ${dut_if} | ${encr_alg} | ${encr_key} | ${auth_alg} +| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip} +| | ${encr_key2}= | And Get Second Random String | ${encr_alg} | Crypto +| | ${auth_key2}= | And Get Second Random String | ${auth_alg} | Integ +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} +| | ${new_encr_key}= | Given Get Second Random String | ${encr_alg} | Crypto +| | ${new_auth_key}= | And Get Second Random String | ${auth_alg} | Integ +| | When Update IPSec SA keys | ${dut_node} | ${l_sa_id} | ${r_sa_id} +| | ... | ${new_encr_key} | ${new_auth_key} +| | Then Run Keyword And Expect Error | ESP packet Rx timeout +| | ... | Send IPsec Packet and verify ESP encapsulation in received packet +| | ... | ${tg_node} | ${tg_if} | ${dut_if_mac} +| | ... | ${encr_alg} | ${encr_key2} | ${auth_alg} | ${auth_key2} | ${tg_spi} +| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip} + +*** Keywords *** +| Get Second Random String +| | [Arguments] | ${req_alg} | ${req_type} +| | ${req_key_len}= | Run Keyword | Get ${req_type} Alg Key Len | ${req_alg} +| | ${key}= | Set Variable If | '${req_type}' == 'Crypto' | ${encr_key} +| | ... | '${req_type}' == 'Integ' | ${auth_key} +| | :FOR | ${index} | IN RANGE | 100 +| | | ${req_key}= | Generate Random String | ${req_key_len} +| | | Return From Keyword If | '${req_key}' != '${key}' | ${req_key} diff --git a/tests/vpp/func/crypto/eth2p-ethip6ipsectptlispgpe-ip4base-func.robot b/tests/vpp/func/crypto/eth2p-ethip6ipsectptlispgpe-ip4base-func.robot new file mode 100644 index 0000000000..f3bc2e28b1 --- /dev/null +++ b/tests/vpp/func/crypto/eth2p-ethip6ipsectptlispgpe-ip4base-func.robot @@ -0,0 +1,158 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.L2Util +| Library | resources.libraries.python.LispUtil +| Library | resources.libraries.python.IPsecUtil +| Library | resources.libraries.python.VatJsonUtil +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.VhostUser +| Library | resources.libraries.python.QemuUtils +| Library | String +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/crypto/ipsec.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/ipv4_lispgpe_ipv6/ipv4_lispgpe_ipsec_ipv6.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH +| ... +| Test Setup | Set up functional test +| ... +| Test Teardown | Tear down functional test +| ... +| Documentation | *IPv6 - ip4-ipsec-lispgpe-ip6 - main fib, virt2lisp, phy2lisp* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISPGPE-IPSec-IPv4-ICMP,\ +| ... | Eth-IPv6-IPSec-LISPGPE-IPv4-ICMP +| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec.\ +| ... | IPsec is in transport mode. Tests cases are for IPsec configured both\ +| ... | on RLOC interface or lisp_gpe0 interface. +| ... | *[Ver] TG verification:* Packet is send from TG(if1) across the DUT1 to\ +| ... | DUT2 where it is forwarded to TG(if2). +| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303. + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on RLOC Int. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv6-LISPGPE-IPSec-IPv4-ICMP on DUT1-DUT2, Eth-IPv4-ICMP\ +| | ... | on TG-DUTn. +| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 with\ +| | ... | IPsec in between DUTS. +| | ... | [Ver] Make TG send ICMPv6 Echo Req between its interfaces across\ +| | ... | both DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830, RFC4303. +| | ... +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Setup Topology And Lisp +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} +| | ... | ${dut1_to_dut2_ip6} | ${dut2_to_dut1_ip6} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} +| | ... | ${dut2_to_dut1_ip6} | ${dut1_to_dut2_ip6} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +| TC02: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv6-IPSec-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMP\ +| | ... | on TG-DUTn. +| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 with\ +| | ... | IPsec in between DUTS. +| | ... | [Ver] Make TG send ICMPv6 Echo Req between its interfaces across\ +| | ... | both DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830, RFC4303. +| | ... +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Setup Topology And Lisp +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | ${lisp_if_idx}= | resources.libraries.python.InterfaceUtil.get sw if index +| | ... | ${dut1_node} | ${lisp_gpe_int} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut1_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} +| | ... | ${dut1_to_dut2_ip6} | ${dut2_to_dut1_ip6} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut2_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} +| | ... | ${dut2_to_dut1_ip6} | ${dut1_to_dut2_ip6} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Setup Topology And Lisp +| | [Documentation] | Setup IPs and neighbors for interfaces on DUT1 and DUT2\ +| | ... | and then setup LISP. +| | Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | Set interfaces in 3-node circular topology up +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} +| | ... | ${prefix6} +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} +| | ... | ${prefix6} +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} +| | ... | ${prefix4} +| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} +| | ... | ${prefix6} +| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} +| | ... | ${prefix4} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} +| | ... | ${tg_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6} +| | ... | ${dut1_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} +| | ... | ${tg_to_dut1_mac} +| | Vpp All RA Suppress Link Layer | ${nodes} +| | Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_to_dut2_ip_static_adjacency} +| | ... | ${dut2_to_dut1_ip_static_adjacency} diff --git a/tests/vpp/func/crypto/eth2p-ethip6ipsectptlispgpe-ip6base-func.robot b/tests/vpp/func/crypto/eth2p-ethip6ipsectptlispgpe-ip6base-func.robot new file mode 100644 index 0000000000..ca81b425c8 --- /dev/null +++ b/tests/vpp/func/crypto/eth2p-ethip6ipsectptlispgpe-ip6base-func.robot @@ -0,0 +1,174 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.L2Util +| Library | resources.libraries.python.LispUtil +| Library | resources.libraries.python.VPPUtil +| Library | resources.libraries.python.IPsecUtil +| Library | resources.libraries.python.VatJsonUtil +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.VhostUser +| Library | resources.libraries.python.QemuUtils +| Library | String +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/crypto/ipsec.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipsec_ipv6.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH +| ... +| Test Setup | Run Keywords | Set up functional test +| ... | AND | Vpp All Ra Suppress Link Layer | ${nodes} +| ... +| Test Teardown | Tear down functional test +| ... +| Documentation | *IPv6 - ip6-ipsec-lispgpe-ip6 - main fib, +| ... | vrf (gpe_vni-to-vrf), phy2lisp, virt2lisp* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-IPSec-LISPGPE-IPv6-ICMPv6,\ +| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec.\ +| ... | IPsec is in transport mode. Tests cases are for IPsec configured both\ +| ... | on RLOC interface or lisp_gpe0 interface. +| ... | *[Ver] TG verification:* Packet is send from TG(if1) across the DUT1\ +| ... | to DUT2 where it is forwarded to TG(if2). +| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303. + +*** Variables *** +| ${dut2_spi}= | ${1000} +| ${dut1_spi}= | ${1001} + +| ${ESP_PROTO}= | ${50} + +| ${bid}= | 10 + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using IPsec (transport) on RLOC Int. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv6-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2,\ +| | ... | Eth-IPv6-ICMPv6 on TG-DUTn. +| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 with\ +| | ... | IPsec in between DUTS. +| | ... | [Ver] Case: ip6-lispgpe-ipsec-ip6 - main fib, phys2lisp\ +| | ... | Make TG send ICMPv6 Echo Req between its interfaces across\ +| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830, RFC4303. +| | ... +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Setup Topology +| | And Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_to_dut2_ip6_static_adjacency} +| | ... | ${dut2_to_dut1_ip6_static_adjacency} +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} +| | ... | ${dut1_to_dut2_ip6} | ${dut2_to_dut1_ip6} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} +| | ... | ${dut2_to_dut1_ip6} | ${dut1_to_dut2_ip6} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +| TC02: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using IPsec (transport) lisp_gpe0 Int. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv6-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2,\ +| | ... | Eth-IPv6-ICMPv6 on TG-DUTn. +| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 with\ +| | ... | IPsec in between DUTS. +| | ... | [Ver] Case: ip6-ipsec-lispgpe-ip6 - main fib, phys2lisp\ +| | ... | Make TG send ICMPv6 Echo Req between its interfaces across\ +| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830, RFC4303. +| | ... +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Setup Topology +| | And Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_to_dut2_ip6_static_adjacency} +| | ... | ${dut2_to_dut1_ip6_static_adjacency} +| | ${lisp_if_idx}= | resources.libraries.python.InterfaceUtil.get sw if index +| | ... | ${dut1_node} | lisp_gpe0 +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut1_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} | ${tg1_ip6} +| | ... | ${tg2_ip6} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut2_node} | ${lisp_if_idx} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} | ${tg2_ip6} +| | ... | ${tg1_ip6} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Setup Topology +| | Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | Set interfaces in 3-node circular topology up +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} +| | ... | ${prefix6} +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} +| | ... | ${prefix6} +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} +| | ... | ${prefix6} +| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} +| | ... | ${prefix6} +| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} +| | ... | ${prefix6} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} +| | ... | ${tg_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} +| | ... | ${tg_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6} +| | ... | ${dut1_to_dut2_mac} +| | Vpp All RA Suppress Link Layer | ${nodes} diff --git a/tests/vpp/func/honeycomb/__init__.robot b/tests/vpp/func/honeycomb/__init__.robot new file mode 100644 index 0000000000..b7f0c1d7b9 --- /dev/null +++ b/tests/vpp/func/honeycomb/__init__.robot @@ -0,0 +1,27 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables*** +# Honeycomb node to run tests on. +| ${node}= | ${nodes['DUT1']} + +*** Settings *** +| Library | resources/libraries/python/honeycomb/HcPersistence.py +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| ... +| Suite Setup | Run Keywords | Configure all DUTs before test | AND +| ... | Set Global Variable | ${node} | AND +| ... | Stop Honeycomb service on DUTs | ${node} +| ... +| Suite Teardown | Archive Honeycomb log file | ${node} diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot new file mode 100644 index 0000000000..3f209e3562 --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-acl-apihc-apivat-func.robot @@ -0,0 +1,169 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +# Interface to run tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/access_control_lists.robot +| Variables | resources/test_data/honeycomb/acl.py +| ... +| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Documentation | *Honeycomb access control lists test suite.* +| ... +| Force Tags | HC_FUNC + +*** Test Cases *** +| TC01: Honeycomb can create ACL classify table +| | [Documentation] | Check if Honeycomb API can create an ACL table. +| | ... +| | Given ACL table from Honeycomb should not exist +| | ... | ${node} | ${hc_acl_table['name']} +| | And ACL table from VAT should not exist +| | ... | ${node} | ${table_index} +| | When Honeycomb creates ACL table +| | ... | ${node} | ${hc_acl_table} +| | Then ACL table from Honeycomb should be | ${node} | ${hc_acl_table_oper} +| | And ACL table from VAT should be +| | ... | ${node} | ${table_index} | ${vat_acl_table} + +| TC02: Honeycomb can remove ACL table +| | [Documentation] | Check if Honeycomb API can delete an ACL table. +| | ... +| | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table_oper} +| | And ACL table from VAT should be +| | ... | ${node} | ${table_index} | ${vat_acl_table} +| | When Honeycomb removes ACL table | ${node} | ${hc_acl_table['name']} +| | Then ACL table from Honeycomb should not exist +| | ... | ${node} | ${hc_acl_table['name']} +| | And ACL table from VAT should not exist +| | ... | ${node} | ${table_index} + +| TC03: Honeycomb manages more than one ACL table +| | [Documentation] | Check if Honeycomb API can create another ACL table. +| | ... +| | Given ACL table from Honeycomb should not exist +| | ... | ${node} | ${hc_acl_table['name']} +| | And ACL table from VAT should not exist +| | ... | ${node} | ${table_index} +| | When Honeycomb creates ACL table | ${node} | ${hc_acl_table} +| | And Honeycomb creates ACL table | ${node} | ${hc_acl_table2} +| | Then ACL table from Honeycomb should be | ${node} | ${hc_acl_table_oper} +| | And ACL table from VAT should be +| | ... | ${node} | ${table_index} | ${vat_acl_table} +| | And ACL table from Honeycomb should be | ${node} | ${hc_acl_table2_oper} +| | And ACL table from VAT should be +| | ... | ${node} | ${table_index2} | ${vat_acl_table2} + +| TC04: Honeycomb can add ACL session to table +| | [Documentation] | Check if Honeycomb API can add an ACL session to a table. +| | ... +| | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table_oper} +| | And ACL table from VAT should be +| | ... | ${node} | ${table_index} | ${vat_acl_table} +| | When Honeycomb adds ACL session +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} +| | Then ACL session from Honeycomb should be +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} +| | And ACL session from VAT should be +| | ... | ${node} | ${table_index} | ${session_index} | ${vat_acl_session} + +| TC05: Honeycomb can remove ACL session +| | [Documentation] | Check if Honeycomb API can remove an ACL session. +| | ... +| | Given ACL session from Honeycomb should be +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} +| | And ACL session from VAT should be +| | ... | ${node} | ${table_index} | ${session_index} | ${vat_acl_session} +| | When Honeycomb removes ACL session +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session['match']} +| | Then ACL session from Honeycomb should not exist +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session['match']} +| | And ACL session from VAT should not exist +| | ... | ${node} | ${table_index} | ${session_index} + +| TC06: Honeycomb manages more than one ACL session on one table +| | [Documentation] | Check if Honeycomb API can add another ACL session\ +| | ... | to a table. +| | ... +| | Given ACL session from Honeycomb should not exist +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session['match']} +| | And ACL session from VAT should not exist +| | ... | ${node} | ${table_index} | ${session_index} +| | When Honeycomb adds ACL session +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} +| | And Honeycomb adds ACL session +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session2} +| | Then ACL session from Honeycomb should be +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} +| | And ACL session from VAT should be +| | ... | ${node} | ${table_index} | ${session_index} | ${vat_acl_session} +| | And ACL session from Honeycomb should be +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session2} +| | And ACL session from VAT should be +| | ... | ${node} | ${table_index} | ${session_index2} | ${vat_acl_session2} + +| TC07: Honeycomb enables ACL on interface +| | [Documentation] | Check if Honeycomb API can enable ACL on an interface. +| | ... +| | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table_oper} +| | And ACL table from VAT should be +| | ... | ${node} | ${table_index} | ${vat_acl_table} +| | And ACL session from Honeycomb should be +| | ... | ${node} | ${hc_acl_table['name']} | ${hc_acl_session} +| | And ACL session from VAT should be +| | ... | ${node} | ${table_index} | ${session_index} | ${vat_acl_session} +| | When Honeycomb enables ACL on interface +| | ... | ${node} | ${interface} | ${hc_acl_table['name']} +| | Then Interface ACL configuration from Honeycomb should be +| | ... | ${node} | ${interface} | ${hc_acl_table['name']} +| | And Interface ACL configuration from VAT should be +| | ... | ${node} | ${interface} | ${table_index} + +| TC08: Honeycomb disables ACL on interface +| | [Documentation] | Check if Honeycomb API can disable ACL on an interface. +| | ... +| | Given Interface ACL configuration from Honeycomb should be +| | ... | ${node} | ${interface} | ${hc_acl_table['name']} +| | And Interface ACL configuration from VAT should be +| | ... | ${node} | ${interface} | ${table_index} +| | When Honeycomb disables ACL on interface | ${node} | ${interface} +| | Then Interface ACL configuration from Honeycomb should be empty +| | ... | ${node} | ${interface} +| | And Interface ACL configuration from VAT should be empty +| | ... | ${node} | ${interface} + +| TC09: Honeycomb can remove one out of multiple ACL tables +| | [Documentation] | Check if Honeycomb API can delete an ACL table if more\ +| | ... | than one table exists. +| | ... +| | Given ACL table from Honeycomb should be | ${node} | ${hc_acl_table_oper} +| | And ACL table from VAT should be +| | ... | ${node} | ${table_index} | ${vat_acl_table} +| | And ACL table from Honeycomb should be | ${node} | ${hc_acl_table2_oper} +| | And ACL table from VAT should be +| | ... | ${node} | ${table_index2} | ${vat_acl_table2} +| | When Honeycomb removes ACL table | ${node} | ${hc_acl_table2['name']} +| | Then ACL table from Honeycomb should be | ${node} | ${hc_acl_table_oper} +| | And ACL table from VAT should be +| | ... | ${node} | ${table_index} | ${vat_acl_table} +| | And ACL table from Honeycomb should not exist +| | ... | ${node} | ${hc_acl_table2['name']} +| | And ACL table from VAT should not exist +| | ... | ${node} | ${table_index2} diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-dhcp-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-dhcp-apihc-apivat-func.robot new file mode 100644 index 0000000000..958b27fd32 --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-dhcp-apihc-apivat-func.robot @@ -0,0 +1,131 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/features/dhcp_proxy.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/dhcp.robot +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPv4Setup +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.IPv6Util +| Library | resources.libraries.python.Routing +| Variables | resources/test_data/honeycomb/dhcp_relay.py +| ... +| ... +| Documentation | *Honeycomb DHCP relay test suite.* +| ... +| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Force Tags | HC_FUNC + +*** Test Cases *** +| TC01: Honeycomb can configure DHCP relay entry +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-DHCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 configure IP addresses\ +| | ... | neighbors and configure DHCP relay. +| | ... | [Ver] Send DHCP packets from TG interface to DUT. Receive all packets\ +| | ... | on the second TG interface and verify required fields. +| | ... +| | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes} +| | ... | AND | Log DHCP relay configuration from VAT | ${node} | ipv4 +| | ... +| | Given DHCP relay Operational Data From Honeycomb Should Be empty | ${node} +| | When Honeycomb configures DHCP relay | ${node} | ${relay1} | ipv4 | ${0} +| | Then DHCP relay configuration from Honeycomb should contain +| | ... | ${node} | ${relay1_oper} +| | When DHCP relay test setup +| | Then Send DHCP messages and check answer | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if2} | ${dhcp_server1_ip} | ${tg_to_dut_if2_mac} +| | ... | ${client_ip} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_ip} + +| TC02: Honeycomb can remove DHCP relay entry +| | [Documentation] | Remove DHCP relay configuration, and verify that\ +| | ... | it was removed. +| | ... +| | Given DHCP relay configuration from Honeycomb should contain +| | ... | ${node} | ${relay1_oper} +| | When Honeycomb clears DHCP relay configuration | ${node} +| | Then DHCP relay Operational Data From Honeycomb Should Be empty | ${node} + +| TC03: Honeycomb can configure multiple DHCP relay servers. +| | [Documentation] | Configure multiple DHCP relay servers and verify\ +| | ... | their configuration using operational data. +| | ... +| | [Teardown] | Honeycomb clears DHCP relay configuration | ${node} +| | ... +| | Given DHCP relay Operational Data From Honeycomb Should Be empty | ${node} +| | And Honeycomb configures DHCP relay | ${node} | ${relay2} | ipv4 | ${0} +| | Then DHCP relay configuration from Honeycomb should contain +| | ... | ${node} | ${relay2_oper} + +| TC04: Honeycomb can configure DHCP relay entry with ipv6 +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv6-DHCPv6. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 configure IP addresses\ +| | ... | neighbors and configure DHCP relay. +| | ... | [Ver] Send DHCPv6 packets from TG interface to DUT. Receive all\ +| | ... | packets on the second TG interface and verify required fields. +| | ... +| | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes} +| | ... | AND | Log DHCP relay configuration from VAT | ${node} | ipv6 +| | ... | AND | Honeycomb clears DHCP relay configuration | ${node} +| | ... +| | Given DHCP relay Operational Data From Honeycomb Should Be empty | ${node} +| | When Honeycomb configures DHCP relay | ${node} | ${relay_v6} | ipv6 | ${0} +| | Then DHCP relay configuration from Honeycomb should contain +| | ... | ${node} | ${relay_v6_oper} +| | When DHCP relay test setup IPv6 +| | Then Send DHCPv6 Messages | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} +| | ... | ${dut_to_tg_if1_ip6} | ${dut_to_tg_if1_mac} | ${dhcp_server_ip6} +| | ... | ${tg_to_dut_if2_mac} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if2_mac} + +*** Keywords *** +| DHCP relay test setup +| | Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up +| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up +| | Honeycomb sets interface IPv4 address with prefix | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} +| | Honeycomb sets interface IPv4 address with prefix | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} +| | Add ARP on DUT | ${dut_node} | ${dut_to_tg_if2} | ${dhcp_server1_ip} +| | ... | ${tg_to_dut_if2_mac} +| | Add ARP on DUT | ${dut_node} | ${dut_to_tg_if2} | ${dhcp_server2_ip} +| | ... | ${tg_to_dut_if2_mac} +| | And VPP Route Add | ${dut_node} | 255.255.255.255 | 32 | ${NONE} | local +| | ... | ${FALSE} | ${NONE} + +| DHCP relay test setup IPv6 +| | Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up +| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up +| | And Vpp All Ra Suppress Link Layer | ${nodes} +| | Honeycomb sets interface IPv6 address | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip6} | ${prefix_length_v6} +| | Honeycomb sets interface IPv6 address | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip6} | ${prefix_length_v6} +| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${dhcp_server_ip6} +| | ... | ${tg_to_dut_if2_mac} +| | And VPP Route Add | ${dut_node} | ff02::1:2 | 128 | ${NONE} | local +| | ... | ${FALSE} | ${NONE} diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot new file mode 100644 index 0000000000..2ba904449a --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-int-apihcnc-func.robot @@ -0,0 +1,76 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/netconf.robot +| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot +| Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords +| ... | WITH NAME | InterfaceAPI +| Variables | resources/test_data/honeycomb/netconf/triggers.py +| ... +| Documentation | *Netconf test suite. Contains test cases that need to bypass\ +| ... | REST API.* +| ... +| Force Tags | HC_FUNC | HC_REST_ONLY +| ... +| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... + +*** Variables *** +| ${interface}= | ${node['interfaces']['port1']['name']} +| &{bd_settings}= | flood=${True} | forward=${True} | learn=${True} +| ... | unknown-unicast-flood=${True} | arp-termination=${True} + +*** Test Cases *** +| TC01: Honeycomb can create and delete interfaces +| | [Documentation] | Repeatedly create and delete an interface through Netconf\ +| | ... | and check the reply for any errors. +| | ... +| | Given Netconf session should be established | ${node} +| | And Honeycomb creates first L2 bridge domain +| | ... | ${node} | bd_netconf | ${bd_settings} +| | :FOR | ${index} | IN RANGE | 20 +| | | When Error trigger is sent | ${trigger_105} +| | | Then Replies should not contain RPC errors + +| TC02: Transaction revert test case 1 +| | [Documentation] | Configure two conflicting VxLAN tunnels, then verify\ +| | ... | that neither tunnel exists. +| | ... +| | Given Netconf session should be established | ${node} +| | ${if_data}= | And InterfaceAPI.Get all interfaces oper data | ${node} +| | When Error trigger is sent | ${trigger_revert1} +| | ${if_data_new}= | And InterfaceAPI.Get all interfaces oper data | ${node} +| | Then Should be equal | ${if_data} | ${if_data_new} + +| TC03: Transaction revert test case 2 +| | [Documentation] | Configure two conflicting TAP interfaces, then verify\ +| | ... | that neither interface exists. +| | ... +| | Given Netconf session should be established | ${node} +| | ${if_data}= | And InterfaceAPI.Get all interfaces oper data | ${node} +| | When Error trigger is sent | ${trigger_revert1} +| | ${if_data_new}= | And InterfaceAPI.Get all interfaces oper data | ${node} +| | Then Should be equal | ${if_data} | ${if_data_new} + +| TC04: Vlan subinterface creation +| | [Documentation] | Configure a Vlan sub-interface under a physical interface. +| | ... +| | Given Netconf session should be established | ${node} +| | When Error Trigger Is Sent +| | ... | ${trigger_vlan} | interface=${interface} +| | Then Replies should not contain RPC errors diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot new file mode 100644 index 0000000000..a37f538d2d --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-int-subint-apihc-apivat-func.robot @@ -0,0 +1,609 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/sub_interface.robot +| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Variables | resources/test_data/honeycomb/sub_interfaces.py +| ... +| Suite Setup | Run Keywords +| ... | Set Up Honeycomb Functional Test Suite | ${node} | AND +| ... | Add Interface local0 To Topology | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Force Tags | HC_FUNC +| ... +| Documentation | *Honeycomb sub-interface management test suite.* + +*** Variables *** +# Test interfaces and their sub-interface parameters: +| ${super_if}= | ${node['interfaces']['port1']['name']} +| ${super_if2}= | ${node['interfaces']['port3']['name']} +| ${sub_if_id}= | ${sub_if_1_settings['identifier']} +| ${sub_if_name}= | ${super_if}.${sub_if_id} +| ${sub_if2_name}= | ${super_if2}.${sub_if_id} + +*** Test Cases *** +| TC01: Honeycomb creates sub-interface +| | [Documentation] | Check if Honeycomb creates a sub-interface. +| | ... +| | Given Honeycomb configures interface state | ${node} | ${super_if} | down +| | And sub-interface Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And interface Operational Data From VAT Should Be empty +| | ... | ${node} | ${sub_if_name} +| | When Honeycomb creates sub-interface | ${node} | ${super_if} +| | ... | ${sub_if_1_match} | ${sub_if_1_tags} | ${sub_if_1_settings} +| | Then Sub-interface Operational Data From Honeycomb Should Be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper} +| | And Sub-interface Operational Data From VAT Should Be +| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} +| | And sub-interface indices from Honeycomb and VAT should correspond +| | ... | ${node} | ${super_if} | ${sub_if_id} + +| TC02: Honeycomb sets interface and sub-interface up +| | [Documentation] | Honeycomb changes the state of interface\ +| | ... | and of its sub-interface to up. +| | ... +| | Given interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | down +| | And interface state from VAT should be +| | ... | ${node} | ${super_if} | down +| | Sub-interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down +| | Sub-interface state from VAT should be +| | ... | ${node} | ${sub_if_name} | down | down +| | When Honeycomb configures interface state +| | ... | ${node} | ${super_if} | up +| | Then interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | up +| | And interface state from VAT should be +| | ... | ${node} | ${super_if} | up +| | When Honeycomb sets the sub-interface up +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | Then Sub-interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | up | up +| | And sub-interface state from VAT should be +| | ... | ${node} | ${sub_if_name} | up | up + +| TC03: Honeycomb sets sub-interface down while its super-interface is up +| | [Documentation] | Honeycomb sets the sub-interface down while its \ +| | ... | super-interface is up. It must be possible. +| | ... +| | [Teardown] | Set super and sub interfaces up +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given sub-interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | up | up +| | And sub-interface state from VAT should be +| | ... | ${node} | ${sub_if_name} | up | up +| | And interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | up +| | And interface state from VAT should be +| | ... | ${node} | ${super_if} | up +| | When Honeycomb sets the sub-interface down +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | Then interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | up +| | And interface state from VAT should be +| | ... | ${node} | ${super_if} | up +| | And sub-interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | down | up +| | And sub-interface state from VAT should be +| | ... | ${node} | ${sub_if_name} | down | up + +| TC04: Honeycomb sets interface and sub-interface down +| | [Documentation] | Honeycomb changes the state of interface down and then \ +| | ... | changes the state of its sub-interface down, in this order. +| | ... +| | [Teardown] | Set super and sub interfaces down +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | up +| | And interface state from VAT should be +| | ... | ${node} | ${super_if} | up +| | When Honeycomb configures interface state +| | ... | ${node} | ${super_if} | down +| | Then interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | down +| | And interface state from VAT should be +| | ... | ${node} | ${super_if} | down +| | Given sub-interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | up | down +| | And sub-interface state from VAT should be +| | ... | ${node} | ${sub_if_name} | up | down +| | When Honeycomb sets the sub-interface down +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | Then sub-interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down +| | And sub-interface state from VAT should be +| | ... | ${node} | ${sub_if_name} | down | down + +| TC05: Honeycomb fails to set sub-interface up while its super-interface is down +| | [Documentation] | Honeycomb tries to set the sub-interface up while its \ +| | ... | super-interface is down. It must not be possible. +| | ... +| | Given interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | down +| | And interface state from VAT should be +| | ... | ${node} | ${super_if} | down +| | And sub-interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down +| | And sub-interface state from VAT should be +| | ... | ${node} | ${sub_if_name} | down | down +| | When Honeycomb fails to set sub-interface up +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | Then interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | down +| | And interface state from VAT should be +| | ... | ${node} | ${super_if} | down +| | And sub-interface state from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | down | down +| | And sub-interface state from VAT should be +| | ... | ${node} | ${sub_if_name} | down | down + +| TC06: Honeycomb fails to delete sub-interface +| | [Documentation] | Check if Honeycomb can delete an existing sub-interface. +| | ... +| | [Setup] | Set super and sub interfaces down +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given sub-interface Operational Data From Honeycomb Should Be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper} +| | And sub-interface Operational Data From VAT Should Be +| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} +| | When Honeycomb fails to remove all sub-interfaces +| | ... | ${node} | ${super_if} +| | Then sub-interface Operational Data From Honeycomb Should Be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper} +| | And sub-interface Operational Data From VAT Should Be +| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} + +| TC07: Honeycomb adds sub-interface to new bridge domain +| | [Documentation] | Check if Honeycomb adds a sub-interface to bridge domain. +| | ... +| | [Setup] | Set super and sub interfaces down +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given sub-interface Operational Data From Honeycomb Should Be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_if_1_oper} +| | And sub-interface Operational Data From VAT Should Be +| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} +| | When Honeycomb creates first L2 bridge domain +| | ... | ${node} | ${bd_name} | ${bd_settings} +| | Then bridge domain Operational Data From Honeycomb Should Be +| | ... | ${node} | ${bd_name} | ${bd_settings} +| | When Honeycomb adds sub-interface to bridge domain +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_bd_settings} +| | Then sub-interface bridge domain Operational Data From Honeycomb Should Be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${sub_bd_settings} +| | And sub-interface bridge domain Operational Data From VAT Should Be +| | ... | ${node} | ${sub_if_name} | ${sub_bd_settings} +| | And sub-interface Operational Data From VAT Should Be +| | ... | ${node} | ${sub_if_name} | ${sub_if_1_oper} + +| TC08: Honeycomb enables tag-rewrite pop 1 +| | [Documentation] | Check if Honeycomb enables tag-rewrite and sets its \ +| | ... | parameters correctly. Case: pop 1. +| | ... +| | [Teardown] | Honeycomb disables tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given rewrite tag from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1} +| | Then rewrite tag from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_pop_1_VAT} + +| TC09: Honeycomb enables tag-rewrite push +| | [Documentation] | Check if Honeycomb enables tag-rewrite and sets its \ +| | ... | parameters correctly. Case: push. +| | ... +| | [Teardown] | Honeycomb disables tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given rewrite tag from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push} +| | Then rewrite tag from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push_oper} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_push_VAT} + +| TC10: Honeycomb enables tag-rewrite translate 1-2 +| | [Documentation] | Check if Honeycomb enables tag-rewrite and sets its \ +| | ... | parameters correctly. Case: translate 1-2. +| | ... +| | [Teardown] | Honeycomb disables tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given rewrite tag from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_translate_1_2} +| | Then rewrite tag from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${tag_rewrite_translate_1_2_oper} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_translate_1_2_VAT} + +| TC11: Honeycomb disables tag-rewrite +| | [Documentation] | Check if Honeycomb disables the tag-rewrite. +| | ... +| | [Teardown] | Honeycomb disables tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1} +| | Then rewrite tag from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper} +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_disabled} +| | Then rewrite tag from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_disabled_VAT} + +| TC12: Honeycomb enables tag-rewrite pop 1 again +| | [Documentation] | Check if Honeycomb can enable tag-rewrite again, once it \ +| | ... | was disabled by Honeycomb. +| | ... +| | [Teardown] | Honeycomb disables tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given rewrite tag from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1} +| | Then rewrite tag from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_pop_1_VAT} + +| TC13: Honeycomb modifies the tag-rewrite +| | [Documentation] | Honeycomb sets the tag-rewrite: +| | ... | 1. pop 1, then +| | ... | 2. push, then +| | ... | 3. translate 1 - 2 +| | ... | Then Honeycomb disables the tag-rewrite. +| | ... +| | [Teardown] | Honeycomb disables tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given rewrite tag from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1} +| | Then rewrite tag from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_pop_1_oper} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_pop_1_VAT} +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push} +| | Then rewrite tag from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_push_oper} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_push_VAT} +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_translate_1_2} +| | Then rewrite tag from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${tag_rewrite_translate_1_2_oper} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_translate_1_2_VAT} +| | When Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_disabled} +| | Then rewrite tag from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_disabled_VAT} + +| TC14: Honeycomb fails to set wrong vlan-type in tag-rewrite +| | [Documentation] | Check that Honeycomb does not accept wrong values of \ +| | ... | vlan-type in tag-rewrite. +| | ... +| | Given rewrite tag from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | When Honeycomb fails to set wrong rewrite tag +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${tag_rewrite_translate_1_2_wrong} +| | Then rewrite tag from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And rewrite tag from VAT should be +| | ... | ${node} | ${sub_if_name} | ${tag_rewrite_disabled_VAT} + +| TC15: Honeycomb configures sub-interface ipv4 address +| | [Documentation] | Check if Honeycomb can configure an ipv4 address on the\ +| | ... | sub-interface. +| | ... +| | Given sub-interface ipv4 address from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And sub-interface ipv4 address from VAT should be empty +| | ... | ${node} | ${sub_if_name} +| | When Honeycomb sets sub-interface ipv4 address +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} +| | Then sub-interface ipv4 address from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} +| | And sub-interface ipv4 address from VAT should be +| | ... | ${node} | ${sub_if_name} +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} + +| TC16: Honeycomb removes sub-interface ipv4 address +| | [Documentation] | Check if Honeycomb can remove configured ipv4 addresses\ +| | ... | from the sub-interface. +| | ... +| | Given sub-interface ipv4 address from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} +| | Run Keyword And Continue On Failure +| | ... | And sub-interface ipv4 address from VAT should be +| | ... | ${node} | ${sub_if_name} +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} +| | When Honeycomb removes all sub-interface ipv4 addresses +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | Then sub-interface ipv4 address from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And sub-interface ipv4 address from VAT should be empty +| | ... | ${node} | ${sub_if_name} + +| TC17: Honeycomb modifies existing sub-interface ipv4 address +| | [Documentation] | Check if Honeycomb can modify an ipv4 address already\ +| | ... | configured on the sub-interface. +| | ... +| | [Teardown] | Honeycomb removes all sub-interface ipv4 addresses +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given sub-interface ipv4 address from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And sub-interface ipv4 address from VAT should be empty +| | ... | ${node} | ${sub_if_name} +| | When Honeycomb sets sub-interface ipv4 address +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} +| | And Honeycomb sets sub-interface ipv4 address +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv4_2['address']} | ${ipv4_2['prefix-length']} +| | Then sub-interface ipv4 address from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv4_2['address']} | ${ipv4_2['prefix-length']} +| | And sub-interface ipv4 address from VAT should be +| | ... | ${node} | ${sub_if_name} +| | ... | ${ipv4_2['address']} | ${ipv4_2['prefix-length']} + +| TC18: Honeycomb modifies sub-interface exact tag match +| | [Documentation] | Check if Honeycomb can modify a sub-interface with exact\ +| | ... | tag match. +| | ... +| | Given Honeycomb configures interface state | ${node} | ${super_if2} | down +| | And sub-interface Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${super_if2} | ${sub_if_id} +| | And interface Operational Data From VAT Should Be empty +| | ... | ${node} | ${sub_if2_name} +| | When Honeycomb creates sub-interface | ${node} | ${super_if2} +| | ... | ${sub_if_2_match} | ${sub_if_2_tags} | ${sub_if_2_settings} +| | Then Sub-interface Operational Data From Honeycomb Should Be +| | ... | ${node} | ${super_if2} | ${sub_if_id} | ${sub_if_2_oper} +| | And Sub-interface Operational Data From VAT Should Be +| | ... | ${node} | ${sub_if2_name} | ${sub_if_2_oper} +| | And sub-interface indices from Honeycomb and VAT should correspond +| | ... | ${node} | ${super_if2} | ${sub_if_id} + +| TC19: Honeycomb configures sub-interface ipv6 address +| | [Documentation] | Check if Honeycomb can configure an ipv6 address on the\ +| | ... | sub-interface. +| | ... +| | Given sub-interface ipv6 address from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And sub-interface ipv6 address from VAT should be empty +| | ... | ${node} | ${sub_if_name} +| | When Honeycomb sets sub-interface ipv6 address +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv6['address']} | ${ipv6['prefix-length']} +| | Then sub-interface IPv6 address from Honeycomb should contain +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv6['address']} | ${ipv6['prefix-length']} +| | And sub-interface IPv6 address from VAT should contain +| | ... | ${node} | ${sub_if_name} +| | ... | ${ipv6['address']} | ${ipv6['prefix-length']} + +| TC20: Honeycomb removes sub-interface ipv6 address +| | [Documentation] | Check if Honeycomb can remove configured ipv6 addresses\ +| | ... | from the sub-interface. +| | ... +| | Given sub-interface IPv6 address from Honeycomb should contain +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv6['address']} | ${ipv6['prefix-length']} +| | Run Keyword And Continue On Failure +| | ... | And sub-interface IPv6 address from VAT should contain +| | ... | ${node} | ${sub_if_name} +| | ... | ${ipv6['address']} | ${ipv6['prefix-length']} +| | When Honeycomb removes all sub-interface ipv6 addresses +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | Then sub-interface ipv6 address from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And sub-interface ipv6 address from VAT should be empty +| | ... | ${node} | ${sub_if_name} + +| TC21: Honeycomb modifies existing sub-interface ipv6 address +| | [Documentation] | Check if Honeycomb can modify an ipv6 address already\ +| | ... | configured on the sub-interface. +| | ... +| | [Teardown] | Honeycomb removes all sub-interface ipv6 addresses +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Given sub-interface ipv6 address from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And sub-interface ipv6 address from VAT should be empty +| | ... | ${node} | ${sub_if_name} +| | When Honeycomb sets sub-interface ipv6 address +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv6['address']} | ${ipv6['prefix-length']} +| | And Honeycomb sets sub-interface ipv6 address +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv6_2['address']} | ${ipv6_2['prefix-length']} +| | Then sub-interface IPv6 address from Honeycomb should contain +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv6_2['address']} | ${ipv6_2['prefix-length']} +| | And sub-interface IPv6 address from VAT should contain +| | ... | ${node} | ${sub_if_name} +| | ... | ${ipv6_2['address']} | ${ipv6_2['prefix-length']} + +| TC22: Honeycomb can configure unnumbered sub-interface +| | [Documentation] | Check if Honeycomb can configure an unnumbered interface\ +| | ... | on a sub-interface, borrowing the IP address of 'local0'. +| | ... +| | Given sub-interface ipv4 address from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And sub-interface ipv4 address from VAT should be empty +| | ... | ${node} | ${sub_if_name} +| | And Honeycomb sets interface IPv4 address | ${node} +| | ... | local0 | ${ipv4['address']} | ${ipv4['prefix-length']} +| | When Honeycomb adds unnumbered configuration to interface +| | ... | ${node} | ${super_if}.${sub_if_id} | local0 +| | Then IPv4 address from Honeycomb should be +| | ... | ${node} | local0 | ${ipv4['address']} | ${ipv4['prefix-length']} +| | And IPv4 address from VAT should be +| | ... | ${node} | local0 +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} | ${ipv4['netmask']} +| | And sub-interface ipv4 address from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} +| | And sub-interface ipv4 address from VAT should be +| | ... | ${node} | ${sub_if_name} +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} + +| TC23: Honeycomb removes sub-interface unnumbered configuration +| | [Documentation] | Check if Honeycomb can remove unnumbered configuration\ +| | ... | from a sub-interface. +| | ... +| | [Teardown] | Honeycomb removes interface IPv4 addresses | ${node} +| | ... | local0 +| | ... +| | Given IPv4 address from Honeycomb should be +| | ... | ${node} | local0 | ${ipv4['address']} | ${ipv4['prefix-length']} +| | And IPv4 address from VAT should be +| | ... | ${node} | local0 +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} | ${ipv4['netmask']} +| | And sub-interface ipv4 address from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} +| | And sub-interface ipv4 address from VAT should be +| | ... | ${node} | ${sub_if_name} +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} +| | When Honeycomb removes unnumbered configuration from interface +| | ... | ${node} | ${super_if}.${sub_if_id} +| | Then IPv4 address from Honeycomb should be +| | ... | ${node} | local0 | ${ipv4['address']} | ${ipv4['prefix-length']} +| | And IPv4 address from VAT should be +| | ... | ${node} | local0 +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} | ${ipv4['netmask']} +| | And sub-interface ipv4 address from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And sub-interface ipv4 address from VAT should be empty +| | ... | ${node} | ${sub_if_name} + +| TC24: Honeycomb can configure unnumbered interface using a sub-interface +| | [Documentation] | Check if Honeycomb can configure an unnumbered interface\ +| | ... | on an interface, borrowing the IP address of a sub-interface. +| | ... +| | Given IPv4 address from Honeycomb should be empty | ${node} | local0 +| | And ipv4 address from VAT should be empty | ${node} | local0 +| | And sub-interface ipv4 address from Honeycomb should be empty +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | And sub-interface ipv4 address from VAT should be empty +| | ... | ${node} | ${sub_if_name} +| | And Honeycomb sets sub-interface ipv4 address +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} +| | When Honeycomb adds unnumbered configuration to interface +| | ... | ${node} | local0 | ${super_if}.${sub_if_id} +| | Then IPv4 address from Honeycomb should be +| | ... | ${node} | local0 | ${ipv4['address']} | ${ipv4['prefix-length']} +| | And IPv4 address from VAT should be +| | ... | ${node} | local0 +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} | ${ipv4['netmask']} +| | And sub-interface ipv4 address from Honeycomb should be +| | ... | ${node} | ${super_if} | ${sub_if_id} +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} +| | And sub-interface ipv4 address from VAT should be +| | ... | ${node} | ${sub_if_name} +| | ... | ${ipv4['address']} | ${ipv4['prefix-length']} + +*** Keywords *** +| Set super and sub interfaces up +| | [Documentation] | Honeycomb sets super-interface and sub-interface up, in \ +| | ... | this order. +| | ... +| | ... | *Arguments:* +| | ... | - node - Information about a DUT node. Type: dictionary +| | ... | - super_interface - Super interface. Type: string +| | ... | - identifier - Sub-interface identifier. Type: integer or string +| | ... +| | ... | *Example:* +| | ... | \| Set super and sub interfaces up\ +| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \| +| | ... +| | [Arguments] | ${node} | ${super_interface} | ${identifier} +| | ... +| | Honeycomb configures interface state +| | ... | ${node} | ${super_interface} | up +| | Honeycomb sets the sub-interface up +| | ... | ${node} | ${super_interface} | ${identifier} + +| Set super and sub interfaces down +| | [Documentation] | Honeycomb sets super-interface and sub-interface down, in\ +| | ... | this order. +| | ... +| | ... | *Arguments:* +| | ... | - node - Information about a DUT node. Type: dictionary +| | ... | - super_interface - Super interface. Type: string +| | ... | - identifier - Sub-interface identifier. Type: integer or string +| | ... +| | ... | *Example:* +| | ... | \| Set super and sub interfaces down\ +| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \| +| | ... +| | [Arguments] | ${node} | ${super_interface} | ${identifier} +| | ... +| | Honeycomb configures interface state +| | ... | ${node} | ${super_interface} | down +| | Honeycomb sets the sub-interface down +| | ... | ${node} | ${super_interface} | ${identifier} + +| Honeycomb disables tag rewrite +| | [Documentation] | +| | ... +| | ... | *Arguments:* +| | ... | - node - Information about a DUT node. Type: dictionary +| | ... | - super_if - Super-interface. Type: string +| | ... | - identifier - Sub-interface ID. Type: integer or string +| | ... +| | ... | *Example:* +| | ... | \| Honeycomb disables tag rewrite \ +| | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| 1 \| +| | ... +| | [Arguments] | ${node} | ${super_if} | ${sub_if_id} +| | ... +| | Honeycomb configures tag rewrite +| | ... | ${node} | ${super_if} | ${sub_if_id} | ${tag_rewrite_disabled} diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot new file mode 100644 index 0000000000..f0f6e4e6ad --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-intip4-intip6-apihc-apivat-func.robot @@ -0,0 +1,293 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +# Interface to run tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Variables | resources/test_data/honeycomb/interface_ip.py +| ... +| Force Tags | HC_FUNC +| ... +| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Documentation | *Honeycomb interface management test suite.* + +*** Test Cases *** +| TC01: Honeycomb configures and reads interface state +| | [Documentation] | Check if Honeycomb API can modify the admin state of\ +| | ... | VPP interfaces. +| | ... +| | Given Interface state from Honeycomb should be +| | ... | ${node} | ${interface} | down +| | And Interface state from VAT should be | ${node} | ${interface} | down +| | When Honeycomb configures interface state | ${node} | ${interface} | up +| | Then Interface state from Honeycomb should be +| | ... | ${node} | ${interface} | up +| | And Interface state from VAT should be | ${node} | ${interface} | up +| | When Honeycomb configures interface state | ${node} | ${interface} | down +| | Then Interface state from Honeycomb should be +| | ... | ${node} | ${interface} | down +| | And Interface state from VAT should be | ${node} | ${interface} | down + +| TC02: Honeycomb modifies interface IPv4 address with netmask +| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv4\ +| | ... | with address and netmask provided. +| | ... +| | Given IPv4 address from Honeycomb should be empty | ${node} | ${interface} +| | And ipv4 address from VAT should be empty | ${node} | ${interface} +| | When Honeycomb sets interface IPv4 address | ${node} | ${interface} +| | ... | ${ipv4_address} | ${ipv4_mask} +| | Then IPv4 address from Honeycomb should be +| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} +| | And IPv4 address from VAT should be +| | ... | ${node} | ${interface} | ${ipv4_address} +| | ... | ${ipv4_prefix} | ${ipv4_mask} + +| TC03: Honeycomb removes IPv4 address from interface +| | [Documentation] | Check if Honeycomb API can remove configured ipv4\ +| | ... | addresses from interface. +| | ... +| | Given IPv4 address from Honeycomb should be +| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} +| | And IPv4 address from VAT should be +| | ... | ${node} | ${interface} | ${ipv4_address} +| | ... | ${ipv4_prefix} | ${ipv4_mask} +| | When Honeycomb removes interface IPv4 addresses | ${node} | ${interface} +| | Then IPv4 address from Honeycomb should be empty | ${node} | ${interface} +| | And ipv4 address from VAT should be empty | ${node} | ${interface} + +| TC04: Honeycomb modifies interface IPv4 address with prefix +| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv4\ +| | ... | with address and prefix provided. +| | ... +| | [Teardown] | Honeycomb removes interface IPv4 addresses | ${node} +| | ... | ${interface} +| | ... +| | Given IPv4 address from Honeycomb should be empty | ${node} | ${interface} +| | And ipv4 address from VAT should be empty | ${node} | ${interface} +| | When Honeycomb sets interface IPv4 address with prefix +| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_prefix} +| | Then IPv4 address from Honeycomb should be +| | ... | ${node} | ${interface} | ${ipv4_address2} | ${ipv4_prefix} +| | And IPv4 address from VAT should be +| | ... | ${node} | ${interface} | ${ipv4_address2} +| | ... | ${ipv4_prefix} | ${ipv4_mask} + +| TC05: Honeycomb modifies IPv4 neighbor table +| | [Documentation] | Check if Honeycomb API can add and remove ARP entries. +| | ... +| | [Teardown] | Honeycomb clears all interface IPv4 neighbors +| | ... | ${node} | ${interface} +| | ... +| | Given IPv4 neighbor from Honeycomb should be empty +| | ... | ${node} | ${interface} +| | When Honeycomb adds interface IPv4 neighbor +| | ... | ${node} | ${interface} | ${ipv4_neighbor} | ${neighbor_mac} +| | Then IPv4 neighbor from Honeycomb should be +| | ... | ${node} | ${interface} | ${ipv4_neighbor} | ${neighbor_mac} + +| TC06: Honeycomb modifies interface configuration - IPv6 +| | [Documentation] | Check if Honeycomb API can configure interfaces for ipv6. +| | ... +| | [Teardown] | Honeycomb removes interface IPv6 addresses | ${node} +| | ... | ${interface} +| | ... +| | Given IPv6 address from Honeycomb should be empty +| | ... | ${node} | ${interface} +| | And IPv6 address from VAT should be empty +| | ... | ${node} | ${interface} +| | When Honeycomb sets interface IPv6 address +| | ... | ${node} | ${interface} | ${ipv6_address} | ${ipv6_prefix} +| | Then IPv6 address from Honeycomb should contain +| | ... | ${node} | ${interface} | ${ipv6_address} | ${ipv6_prefix} +| | And IPv6 address from VAT should contain +| | ... | ${node} | ${interface} | ${ipv6_address} | ${ipv6_prefix} + +| TC07: Honeycomb modifies IPv6 neighbor table +| | [Documentation] | Check if Honeycomb API can add and remove ARP entries. +| | ... +| | [Teardown] | Honeycomb clears all interface IPv6 neighbors +| | ... | ${node} | ${interface} +| | ... +| | Given IPv6 neighbor from Honeycomb should be empty +| | ... | ${node} | ${interface} +| | When Honeycomb adds interface IPv6 neighbor +| | ... | ${node} | ${interface} | ${ipv6_neighbor} | ${neighbor_mac} +| | Then IPv6 neighbor from Honeycomb should be +| | ... | ${node} | ${interface} | ${ipv6_neighbor} | ${neighbor_mac} + +| TC08: Honeycomb modifies interface configuration - MTU +| | [Documentation] | Check if Honeycomb API can configure interface\ +| | ... | MTU value. +| | ... +| | When Honeycomb sets interface ethernet configuration +| | ... | ${node} | ${interface} | ${ethernet} +| | Then Interface ethernet Operational Data From Honeycomb Should Be +| | ... | ${node} | ${interface} | ${ethernet} +| | And Interface ethernet Operational Data From VAT Should Be +| | ... | ${node} | ${interface} | ${ethernet['mtu']} + +| TC09: Honeycomb modifies interface configuration - vrf +| | [Documentation] | Check if Honeycomb API can configure interface\ +| | ... | vrf ID. +| | ... +| | [Teardown] | Honeycomb sets interface VRF ID +| | ... | ${node} | ${interface} | ${0} | ipv4 +| | ... +| | When Honeycomb sets interface VRF ID +| | ... | ${node} | ${interface} | ${1} | ipv4 +| | Then Interface VRF ID from Honeycomb should be +| | ... | ${node} | ${interface} | ${1} | ipv4 +| | And Interface VRF ID from VAT should be +| | ... | ${node} | ${interface} | ${1} + +| TC10: Honeycomb can configure multiple IP addresses on one interface +| | [Documentation] | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-ICMP; Eth-IPv6-ICMPv6 +| | ... | [Cfg] (Using Honeycomb API) On DUT1 set two IPv4 addresses\ +| | ... | and two IPv6 addresses on first interfaces to TG and add ARP entries\ +| | ... | for each address. +| | ... | [Ver] Send ICMP packets from TG to DUT, using different sets\ +| | ... | of source and destination IP addresses. Receive an ICMP reply\ +| | ... | for every packet sent. +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | When Honeycomb sets interface IPv4 address with prefix +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv4_address} | ${ipv4_prefix} +| | And Honeycomb adds interface IPv4 address +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv4_address2} | ${ipv4_prefix} +| | And Honeycomb sets interface IPv6 address +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv6_address} | ${ipv6_prefix} +| | And Honeycomb adds interface IPv6 address +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv6_address2} | ${ipv6_prefix} +| | Then IPv4 address from Honeycomb should be +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv4_address} | ${ipv4_prefix} +| | And IPv4 address from VAT should be +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv4_address} +| | ... | ${ipv4_prefix} | ${ipv4_mask} +| | And IPv6 address from Honeycomb should contain +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv6_address} | ${ipv6_prefix} +| | And IPv6 address from VAT should contain +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ipv6_address} | ${ipv6_prefix} +| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up +| | And Honeycomb adds interface IPv4 neighbor | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${ipv4_neighbor} | ${neighbor_mac} +| | And Honeycomb adds interface IPv4 neighbor | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${ipv4_neighbor2} | ${neighbor_mac2} +| | And Honeycomb adds interface IPv6 neighbor | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${ipv6_neighbor} | ${neighbor_mac} +| | And Honeycomb adds interface IPv6 neighbor | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${ipv6_neighbor2} | ${neighbor_mac2} +| | And Suppress ICMPv6 router advertisement message | ${nodes} +| | Then Ping and Verify IP address | ${nodes['TG']} +| | ... | ${ipv4_neighbor} | ${ipv4_address} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} +| | And Ping and Verify IP address | ${nodes['TG']} +| | ... | ${ipv4_neighbor2} | ${ipv4_address2} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} +| | And Ping and Verify IP address | ${nodes['TG']} +| | ... | ${ipv6_neighbor} | ${ipv6_address} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} +| | And Ping and Verify IP address | ${nodes['TG']} +| | ... | ${ipv6_neighbor2} | ${ipv6_address2} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} + +| TC11: Honeycomb can configure unnumbered interface +| | [Documentation] | Check if Honeycomb can configure an unnumbered interface\ +| | ... | on a physical interface, borrowing the IP address of 'local0'. +| | ... +| | Given Honeycomb sets interface IPv4 address | ${node} +| | ... | local0 | ${ipv4_address} | ${ipv4_prefix} +| | When Honeycomb adds unnumbered configuration to interface +| | ... | ${node} | ${interface} | local0 +| | Then IPv4 address from Honeycomb should be +| | ... | ${node} | local0 | ${ipv4_address} | ${ipv4_prefix} +| | And IPv4 address from VAT should be +| | ... | ${node} | local0 | ${ipv4_address} +| | ... | ${ipv4_prefix} | ${ipv4_mask} +| | And IPv4 address from Honeycomb should be +| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} +| | And IPv4 address from VAT should be +| | ... | ${node} | ${interface} | ${ipv4_address} +| | ... | ${ipv4_prefix} | ${ipv4_mask} + +| TC12: Honeycomb removes interface unnumbered configuration +| | [Documentation] | Check if Honeycomb can remove unnumbered configuration\ +| | ... | from an interface. +| | ... +| | Given IPv4 address from Honeycomb should be +| | ... | ${node} | local0 | ${ipv4_address} | ${ipv4_prefix} +| | And IPv4 address from VAT should be +| | ... | ${node} | local0 | ${ipv4_address} +| | ... | ${ipv4_prefix} | ${ipv4_mask} +| | And IPv4 address from Honeycomb should be +| | ... | ${node} | ${interface} | ${ipv4_address} | ${ipv4_prefix} +| | And IPv4 address from VAT should be +| | ... | ${node} | ${interface} | ${ipv4_address} +| | ... | ${ipv4_prefix} | ${ipv4_mask} +| | When Honeycomb removes unnumbered configuration from interface +| | ... | ${node} | ${interface} +| | Then IPv4 address from Honeycomb should be +| | ... | ${node} | local0 | ${ipv4_address} | ${ipv4_prefix} +| | And IPv4 address from VAT should be +| | ... | ${node} | local0 | ${ipv4_address} +| | ... | ${ipv4_prefix} | ${ipv4_mask} +| | And IPv4 address from Honeycomb should be empty | ${node} | ${interface} +| | And ipv4 address from VAT should be empty | ${node} | ${interface} + +| TC13: Honeycomb fails to configure two IPv4 addresses from the same subnet +| | [Documentation] | Check if Honeycomb can configure two IPv4 addresses in\ +| | ... | the same subnet onto a single interface. It should not be possible. +| | ... +| | [Teardown] | Honeycomb removes interface IPv4 addresses | ${node} +| | ... | ${interface} +| | ... +| | [Tags] | EXPECTED_FAILING +| | ... +# VPP API does not configure the second address, but returns success. VPP-649 +| | When Honeycomb sets interface IPv4 address with prefix +| | ... | ${node} | ${interface} | 192.168.0.1 | ${9} +| | Then Honeycomb fails to add interface IPv4 address +| | ... | ${node} | ${interface} | 192.168.0.2 | ${9} +| | And Honeycomb fails to add interface IPv4 address +| | ... | ${node} | ${interface} | 192.232.0.2 | ${9} + +| TC14: Honeycomb fails to configure two IPv6 addresses from the same subnet +| | [Documentation] | Check if Honeycomb can configure two IPv6 addresses in\ +| | ... | the same subnet onto a single interface. It should not be possible. +| | ... +| | [Tags] | EXPECTED_FAILING +| | ... +# VPP API does not configure the second address, but returns success. VPP-649 +| | [Teardown] | Honeycomb removes interface IPv6 addresses | ${node} +| | ... | ${interface} +| | When Honeycomb sets interface IPv6 address +| | ... | ${node} | ${interface} | 10::FF10 | ${64} +| | Then Honeycomb fails to add interface IPv6 address +| | ... | ${node} | ${interface} | 10::FF11 | ${64} +| | And Honeycomb fails to add interface IPv6 address +| | ... | ${node} | ${interface} | 10::FFFF | ${64} diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot new file mode 100644 index 0000000000..cffec5b246 --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-inttap-apihc-apivat-func.robot @@ -0,0 +1,79 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +# Interfaces to run tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} +| ${tap_interface}= | tap_test +# Configuration which will be set and verified during tests. +| &{tap_settings}= | tap-name=tap_test | mac=08:00:27:c0:5d:37 +| ... | device-instance=${1} +| &{tap_settings2}= | tap-name=tap_test | mac=08:00:27:60:26:ab +| ... | device-instance=${2} + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/tap.robot +| ... +| Force Tags | HC_FUNC +| ... +| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Documentation | *Honeycomb TAP management test suite.* + +*** Test Cases *** +| TC01: Honeycomb configures TAP interface +| | [Documentation] | Check if Honeycomb API can configure a TAP interface. +| | ... +| | Given TAP Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${tap_interface} +| | And TAP Operational Data From VAT Should Be empty +| | ... | ${node} | ${tap_interface} +| | When Honeycomb creates TAP interface +| | ... | ${node} | ${tap_interface} | ${tap_settings} +| | Then TAP Operational Data From Honeycomb Should Be +| | ... | ${node} | ${tap_interface} | ${tap_settings} +| | And TAP Operational Data From VAT Should Be +| | ... | ${node} | ${tap_interface} | ${tap_settings} + +| TC02: Honeycomb modifies existing TAP interface configuration +| | [Documentation] | Check if Honeycomb API can re-configure and existing TAP\ +| | ... | interface with new settings. +| | ... +| | Given TAP Operational Data From Honeycomb Should Be +| | ... | ${node} | ${tap_interface} | ${tap_settings} +| | And TAP Operational Data From VAT Should Be +| | ... | ${node} | ${tap_interface} | ${tap_settings} +| | When Honeycomb configures TAP interface +| | ... | ${node} | ${tap_interface} | ${tap_settings2} +| | Then TAP Operational Data From Honeycomb Should Be +| | ... | ${node} | ${tap_interface} | ${tap_settings2} +| | And TAP Operational Data From VAT Should Be +| | ... | ${node} | ${tap_interface} | ${tap_settings2} + +| TC03: Honeycomb removes TAP interface +| | [Documentation] | Check if Honeycomb API can remove TAP interface. +| | ... +| | Given TAP Operational Data From Honeycomb Should Be +| | ... | ${node} | ${tap_interface} | ${tap_settings2} +| | And TAP Operational Data From VAT Should Be +| | ... | ${node} | ${tap_interface} | ${tap_settings2} +| | When Honeycomb removes TAP interface | ${node} | ${tap_interface} +| | Then TAP Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${tap_interface} +| | And TAP Operational Data From VAT Should Be empty +| | ... | ${node} | ${tap_interface} diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot new file mode 100644 index 0000000000..c5cbe6ea4a --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-intvhost-apihc-apivat-func.robot @@ -0,0 +1,163 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +| ${interface}= | ${node['interfaces']['port1']['name']} +| ${vhost_interface}= | test_vhost +| &{vhost_user_server}= | socket=/tmp/soc1 | role=server +| &{vhost_user_server_edit_1}= | socket=/tmp/soc12 | role=server +| &{vhost_user_server_edit_2}= | socket=/tmp/soc12 | role=client +| &{vhost_user_client}= | socket=/tmp/soc2 | role=client +| &{vhost_user_client_edit_1}= | socket=/tmp/soc22 | role=client +| &{vhost_user_client_edit_2}= | socket=/tmp/soc22 | role=server +| &{vhost_user_wrong}= | socket=/tmp/soc2 | role=wrong + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/vhost_user.robot +| ... +| Force Tags | HC_FUNC +| ... +| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Documentation | *Honeycomb vhost-user interface management test suite.* + +*** Test Cases *** +| TC01: Honeycomb creates vhost-user interface - server +| | [Documentation] | Check if Honeycomb creates a vhost-user interface, role:\ +| | ... | server. +| | ... +| | Given vhost-user Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vhost_interface} +| | When Honeycomb creates vhost-user interface +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} +| | Then vhost-user Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} +| | And vhost-user Operational Data From VAT Should Be +| | ... | ${node} | ${vhost_user_server} + +| TC02: Honeycomb modifies vhost-user interface - server +| | [Documentation] | Check if Honeycomb can modify properties of existing\ +| | ... | vhost-user interface, role: server. +| | ... +| | Given vhost-user Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} +| | When Honeycomb configures vhost-user interface +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_1} +| | Then vhost-user Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_1} +| | And vhost-user Operational Data From VAT Should Be +| | ... | ${node} | ${vhost_user_server_edit_1} +| | When Honeycomb configures vhost-user interface +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_2} +| | Then vhost-user Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server_edit_2} +| | And vhost-user Operational Data From VAT Should Be +| | ... | ${node} | ${vhost_user_server_edit_2} +| | When Honeycomb configures vhost-user interface +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} +| | Then vhost-user Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} +| | And vhost-user Operational Data From VAT Should Be +| | ... | ${node} | ${vhost_user_server} + +| TC03: Honeycomb deletes vhost-user interface - server +| | [Documentation] | Check if Honeycomb can delete an existing vhost-user\ +| | ... | interface, role: server. +| | ... +| | Given vhost-user Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_server} +| | When Honeycomb removes vhost-user interface +| | ... | ${node} | ${vhost_interface} +| | Then vhost-user Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vhost_interface} +| | And vhost-user Operational Data From VAT Should Be empty +| | ... | ${node} + +| TC04: Honeycomb creates vhost-user interface - client +| | [Documentation] | Check if Honeycomb creates a vhost-user interface, role:\ +| | ... | client. +| | ... +| | Given vhost-user Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vhost_interface} +| | When Honeycomb creates vhost-user interface +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} +| | Then vhost-user Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} +| | And vhost-user Operational Data From VAT Should Be +| | ... | ${node} | ${vhost_user_client} + +| TC05: Honeycomb modifies vhost-user interface - client +| | [Documentation] | Check if Honeycomb can modify properties of existing\ +| | ... | vhost-user interface, role: client. +| | ... +| | Given vhost-user Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} +| | When Honeycomb configures vhost-user interface +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_1} +| | Then vhost-user Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_1} +| | And vhost-user Operational Data From VAT Should Be +| | ... | ${node} | ${vhost_user_client_edit_1} +| | When Honeycomb configures vhost-user interface +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_2} +| | Then vhost-user Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client_edit_2} +| | And vhost-user Operational Data From VAT Should Be +| | ... | ${node} | ${vhost_user_client_edit_2} +| | When Honeycomb configures vhost-user interface +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} +| | Then vhost-user Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} +| | And vhost-user Operational Data From VAT Should Be +| | ... | ${node} | ${vhost_user_client} + +| TC06: Honeycomb deletes vhost-user interface - client +| | [Documentation] | Check if Honeycomb can delete an existing vhost-user\ +| | ... | interface, role: client. +| | ... +| | Given vhost-user Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vhost_interface} | ${vhost_user_client} +| | When Honeycomb removes vhost-user interface +| | ... | ${node} | ${vhost_interface} +| | Then vhost-user Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vhost_interface} +| | And vhost-user Operational Data From VAT Should Be empty +| | ... | ${node} + +| TC07: Honeycomb does not set vhost-user configuration on another interface type +| | [Documentation] | Check if Honeycomb refuses to set vhost-user\ +| | ... | configuration for interface which is not v3po:vhost-user type. +| | ... +| | When Honeycomb fails setting vhost-user on different interface type +| | ... | ${node} | ${interface} | ${vhost_user_server} +| | Then vhost-user Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${interface} +| | And vhost-user Operational Data From VAT Should Be empty +| | ... | ${node} + +| TC08: Honeycomb does not set invalid vhost-user configuration +| | [Documentation] | Check if Honeycomb refuses to set invalid parameters to\ +| | ... | vhost-user interface. +| | ... +| | Given vhost-user Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vhost_interface} +| | When Honeycomb fails setting invalid vhost-user configuration +| | ... | ${node} | ${vhost_interface} | ${vhost_user_wrong} +| | Then vhost-user Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vhost_interface} +| | And vhost-user Operational Data From VAT Should Be empty +| | ... | ${node} diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot new file mode 100644 index 0000000000..a869e96c11 --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-l2bd-apihc-apivat-func.robot @@ -0,0 +1,116 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +# Interfaces to run tests on. +| @{interfaces}= | ${node['interfaces']['port1']['name']} +| ... | ${node['interfaces']['port3']['name']} +# Configuration which will be set and verified during tests. +| ${bd1_name}= | bd-01 +| ${bd2_name}= | bd-02 +| &{bd_settings}= | flood=${True} | forward=${True} | learn=${True} +| ... | unknown-unicast-flood=${True} | arp-termination=${True} +| &{if_settings}= | split_horizon_group=${1} | bvi=${False} +| &{if_settings2}= | split_horizon_group=${2} | bvi=${True} + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot +| ... +| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Force Tags | HC_FUNC +| ... +| Documentation | *Honeycomb bridge domain management test suite.* + +*** Test Cases *** +| TC01: Honeycomb sets up l2 bridge domain +| | [Documentation] | Check if Honeycomb can create bridge domains on VPP node. +| | ... +| | When Honeycomb creates first l2 bridge domain +| | ... | ${node} | ${bd1_name} | ${bd_settings} +| | Then Bridge domain Operational Data From Honeycomb Should Be +| | ... | ${node} | ${bd1_name} | ${bd_settings} +| | And Bridge domain Operational Data From VAT Should Be +| | ... | ${node} | ${0} | ${bd_settings} + +| TC02: Honeycomb manages multiple bridge domains on node +| | [Documentation] | Check if Honeycomb can manage multiple bridge domains on\ +| | ... | a single node. +| | ... +| | Given Bridge domain Operational Data From Honeycomb Should Be +| | ... | ${node} | ${bd1_name} | ${bd_settings} +| | When Honeycomb creates l2 bridge domain +| | ... | ${node} | ${bd2_name} | ${bd_settings} +| | Then Bridge domain Operational Data From Honeycomb Should Be +| | ... | ${node} | ${bd1_name} | ${bd_settings} +| | And Bridge domain Operational Data From Honeycomb Should Be +| | ... | ${node} | ${bd2_name} | ${bd_settings} +| | And Bridge domain Operational Data From VAT Should Be +| | ... | ${node} | ${0} | ${bd_settings} +| | And Bridge domain Operational Data From VAT Should Be +| | ... | ${node} | ${1} | ${bd_settings} + +| TC03: Honeycomb removes bridge domains +| | [Documentation] | Check if Honeycomb can remove bridge domains from a VPP\ +| | ... | node. +| | ... +| | Given Bridge domain Operational Data From Honeycomb Should Be +| | ... | ${node} | ${bd1_name} | ${bd_settings} +| | When Honeycomb removes all bridge domains | ${node} +| | Then Honeycomb should show no bridge domains | ${node} +| | And VAT should show no bridge domains | ${node} + +| TC04: Honeycomb assigns interfaces to bridge domain +| | [Documentation] | Check if Honeycomb can assign VPP interfaces to an\ +| | ... | existing bridge domain. +| | ... +| | Given Honeycomb creates first l2 bridge domain +| | ... | ${node} | ${bd1_name} | ${bd_settings} +| | When Honeycomb adds interfaces to bridge domain +| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings} +| | Then Bridge domain Operational Data From Honeycomb Should Be +| | ... | ${node} | ${bd1_name} | ${bd_settings} +| | And Bridge domain Operational Data From VAT Should Be +| | ... | ${node} | ${0} | ${bd_settings} +| | And Honeycomb should show interfaces assigned to bridge domain +| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings} +| | And VAT should show interfaces assigned to bridge domain +| | ... | ${node} | ${0} | @{interfaces} | ${if_settings} + +| TC05: Honeycomb cannot remove bridge domain with an interface assigned +| | [Documentation] | Check if Honeycomb can remove a bridge domain that has an\ +| | ... | interface assigned to it. Expect to fail with code 500. +| | ... +| | Given Bridge domain Operational Data From Honeycomb Should Be +| | ... | ${node} | ${bd1_name} | ${bd_settings} +| | And Bridge domain Operational Data From VAT Should Be +| | ... | ${node} | ${0} | ${bd_settings} +| | And Honeycomb should show interfaces assigned to bridge domain +| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings} +| | And VAT should show interfaces assigned to bridge domain +| | ... | ${node} | ${0} | @{interfaces} | ${if_settings} +| | When Run keyword and expect error | HoneycombError* Status code: 500. +| | ... | Honeycomb removes all bridge domains | ${node} +| | Then Bridge domain Operational Data From Honeycomb Should Be +| | ... | ${node} | ${bd1_name} | ${bd_settings} +| | And Bridge domain Operational Data From VAT Should Be +| | ... | ${node} | ${0} | ${bd_settings} +| | And Honeycomb should show interfaces assigned to bridge domain +| | ... | ${node} | @{interfaces} | ${bd1_name} | ${if_settings} +| | And VAT should show interfaces assigned to bridge domain +| | ... | ${node} | ${0} | @{interfaces} | ${if_settings} diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot new file mode 100644 index 0000000000..c243af28f9 --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-l2fib-apihc-apivat-func.robot @@ -0,0 +1,232 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot +| Resource | resources/libraries/robot/honeycomb/l2_fib.robot +| Variables | resources/test_data/honeycomb/l2_fib.py | ${node} | ${interface} +| ... | ${interface2} +| ... +| Documentation | *Honeycomb L2 FIB management test suite.* +| ... +| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Force tags | HC_FUNC + +*** Variables *** +# Interface to run tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} +| ${interface2}= | ${node['interfaces']['port3']['name']} + +*** Test Cases *** +| TC01: Honeycomb adds L2 FIB entry (forward) +| | [Documentation] | Honeycomb creates a bridge domain and assignes an \ +| | ... | interface to it. Then adds an L2 FIB entry (forward) to the bridge \ +| | ... | domain. +| | ... +| | [Teardown] | Honeycomb removes L2 FIB entry +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper['phys-address']} +| | ... +| | Given Interface state from Honeycomb should be +| | ... | ${node} | ${interface} | down +| | When Honeycomb configures interface state +| | ... | ${node} | ${interface} | up +| | Then Interface state from Honeycomb should be +| | ... | ${node} | ${interface} | up +| | When Honeycomb creates first l2 bridge domain +| | ... | ${node} | ${bd_name} | ${bd_settings} +| | Then Bridge domain Operational Data From Honeycomb Should Be +| | ... | ${node} | ${bd_name} | ${bd_settings} +| | Given Bridge domain Operational Interface Assignment should be empty +| | ... | ${node} | ${interface} +| | When Honeycomb adds interface to bridge domain +| | ... | ${node} | ${interface} | ${bd_name} | ${if_bd_settings} +| | Then Bridge domain Operational Interface Assignment should be +| | ... | ${node} | ${interface} | ${if_bd_settings} +| | Given L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} +| | When Honeycomb adds L2 FIB entry to bridge domain +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg} +| | Then L2 FIB Entry from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} +| | And L2 FIB entry from VAT should be +| | ... | ${node} | ${bd_index} | ${l2_fib_forward_vat} + +| TC02: Honeycomb adds L2 FIB entry (static, forward) +| | [Documentation] | Honeycomb adds an L2 FIB entry (static, forward) to the \ +| | ... | bridge domain. +| | ... +| | [Teardown] | Honeycomb removes L2 FIB entry +| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_oper['phys-address']} +| | ... +| | Given Bridge domain Operational Interface Assignment should be +| | ... | ${node} | ${interface} | ${if_bd_settings} +| | And L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} +| | When Honeycomb adds L2 FIB entry to bridge domain +| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_cfg} +| | Then L2 FIB Entry from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_oper} +| | And L2 FIB entry from VAT should be +| | ... | ${node} | ${bd_index} | ${l2_fib_static_forward_vat} + +| TC03: Honeycomb adds L2 FIB entry (static, filter) +| | [Documentation] | Honeycomb adds an L2 FIB entry (static, filter) to the \ +| | ... | bridge domain. +| | ... +| | [Teardown] | Honeycomb removes L2 FIB entry +| | ... | ${node} | ${bd_name} | ${l2_fib_filter_oper['phys-address']} +| | ... +| | Given Bridge domain Operational Interface Assignment should be +| | ... | ${node} | ${interface} | ${if_bd_settings} +| | And L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} +| | When Honeycomb adds L2 FIB entry to bridge domain +| | ... | ${node} | ${bd_name} | ${l2_fib_filter_cfg} +| | Then L2 FIB Entry from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${l2_fib_filter_oper} +| | And L2 FIB entry from VAT should be +| | ... | ${node} | ${bd_index} | ${l2_fib_filter_vat} + +| TC04: Honeycomb adds and removes L2 FIB entry (forward) +| | [Documentation] | Honeycomb adds an L2 FIB entry (forward) to the bridge \ +| | ... | domain and then Honeycomb removes it from the bridge domain. +| | ... +| | [Teardown] | Honeycomb removes L2 FIB entry +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper['phys-address']} +| | ... +| | Given Bridge domain Operational Interface Assignment should be +| | ... | ${node} | ${interface} | ${if_bd_settings} +| | And L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} +| | When Honeycomb adds L2 FIB entry to bridge domain +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg} +| | Then L2 FIB Entry from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} +| | And L2 FIB entry from VAT should be +| | ... | ${node} | ${bd_index} | ${l2_fib_forward_vat} +| | When Honeycomb removes L2 FIB entry +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper['phys-address']} +| | Then L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} + +| TC05: Honeycomb adds more than one L2 FIB entry +| | [Documentation] | Honeycomb adds three L2 FIB entries to the bridge domain. +| | ... +| | [Teardown] | Honeycomb removes all L2 FIB entries +| | ... | ${node} | ${bd_name} +| | ... +| | Given Bridge domain Operational Interface Assignment should be +| | ... | ${node} | ${interface} | ${if_bd_settings} +| | And L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} +| | When Honeycomb adds L2 FIB entry to bridge domain +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg} +| | And Honeycomb adds L2 FIB entry to bridge domain +| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_cfg} +| | And Honeycomb adds L2 FIB entry to bridge domain +| | ... | ${node} | ${bd_name} | ${l2_fib_filter_cfg} +| | Then L2 FIB Entry from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} +| | And L2 FIB Entry from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${l2_fib_static_forward_oper} +| | And L2 FIB Entry from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${l2_fib_filter_oper} +| | And L2 FIB entry from VAT should be +| | ... | ${node} | ${bd_index} | ${l2_fib_forward_vat} +| | And L2 FIB entry from VAT should be +| | ... | ${node} | ${bd_index} | ${l2_fib_static_forward_vat} +| | And L2 FIB entry from VAT should be +| | ... | ${node} | ${bd_index} | ${l2_fib_filter_vat} + +| TC06: Honeycomb fails to set wrong L2 FIB entry +| | [Documentation] | Honeycomb tries to add an L2 FIB entry with wrong \ +| | ... | parameters to the bridge domain. It must fail. +| | ... +| | [Teardown] | Honeycomb removes all L2 FIB entries +| | ... | ${node} | ${bd_name} +| | ... +| | Given Bridge domain Operational Interface Assignment should be +| | ... | ${node} | ${interface} | ${if_bd_settings} +| | And L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} +| | When Honeycomb fails to add wrong L2 FIB entry +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg_wrong_mac} +| | Then L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} +| | When Honeycomb fails to add wrong L2 FIB entry +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg_wrong_if} +| | Then L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} +| | When Honeycomb fails to add wrong L2 FIB entry +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg_wrong_action} +| | Then L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} + +| TC07: Honeycomb fails to modify existing L2 FIB entry +| | [Documentation] | Honeycomb tries to modify an existing L2 FIB entry. It \ +| | ... | must fail. +| | ... +| | [Teardown] | Honeycomb removes all L2 FIB entries +| | ... | ${node} | ${bd_name} +| | ... +| | Given Bridge domain Operational Interface Assignment should be +| | ... | ${node} | ${interface} | ${if_bd_settings} +| | And L2 FIB Table from Honeycomb should be empty +| | ... | ${node} | ${bd_name} +| | And L2 FIB Table from VAT should be empty +| | ... | ${node} | ${bd_index} +| | When Honeycomb adds L2 FIB entry to bridge domain +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_cfg} +| | Then L2 FIB Entry from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} +| | When Honeycomb fails to modify L2 FIB entry +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper['phys-address']} +| | ... | outgoing-interface +| | ... | ${l2_fib_forward_modified_cfg['outgoing-interface']} +| | Then L2 FIB Entry from Honeycomb should be +| | ... | ${node} | ${bd_name} | ${l2_fib_forward_oper} +| | And L2 FIB entry from VAT should be +| | ... | ${node} | ${bd_index} | ${l2_fib_forward_vat} + +*** Keywords *** +| Set test interface down +| | [Documentation] | Set the interface used in tests down. +| | ... +| | Honeycomb configures interface state +| | ... | ${node} | ${interface} | down diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.robot new file mode 100644 index 0000000000..ac5af9ab83 --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-lisp-apihc-apivat-func.robot @@ -0,0 +1,224 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables*** +| ${ip_address}= | 192.168.0.4 +| @{ip_addresses}= | 192.168.0.4 | 192.168.0.5 | 192.168.0.6 | 192.168.0.7 +| ${state}= | enabled +| ${interface}= | ${node['interfaces']['port1']['name']} +| ${bd_name}= | bd_lisp +| ${bd2_name}= | bd2_lisp +| &{bd_settings}= | flood=${True} | forward=${True} | learn=${True} +| ... | unknown-unicast-flood=${True} | arp-termination=${True} + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/lisp.robot +| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot +| Variables | resources/test_data/honeycomb/lisp.py +| ... +| Documentation | *Honeycomb Lisp test suite.* +| ... +| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Force Tags | HC_FUNC + +*** Test Cases *** +| TC01: Honeycomb enables LISP feature +| | [Documentation] | Check if Honeycomb can enable the Lisp feature. +| | ... +| | Given Lisp Should Not Be Configured | ${node} +| | When Honeycomb enables LISP | ${node} +| | Then LISP state from Honeycomb should be | ${node} | ${state} +| | And LISP state from VAT should be | ${node} | ${state} + +| TC02: Honeycomb adds locator set and locator +| | [Documentation] | Check if Honeycomb can configure a locator set. +| | ... +| | Given LISP state from Honeycomb should be | ${node} | ${state} +| | When Honeycomb adds locator set | ${node} | ${interface} | ${locator_set} +| | Then Locator Set From Honeycomb Should Be +| | ... | ${node} | ${interface} | ${locator_set} + +| TC03: Honeycomb configures Lisp - remote mapping - Bridge Domain +| | [Documentation] | Check if Honeycomb can configure a remote Lisp mapping\ +| | ... | with a bridge domain. +| | ... +| | Given LISP state from Honeycomb should be | ${node} | ${state} +| | And Honeycomb creates first l2 bridge domain +| | ... | ${node} | ${bd_name} | ${bd_settings} +| | When Honeycomb adds LISP mapping | ${node} | ${lisp_settings_remote_bd} +| | Then LISP mapping from Honeycomb should be +| | ... | ${node} | ${remote_bd_subtable} +| | And LISP mapping from VAT should be +| | ... | ${node} | ${vat_remote_bd} + +| TC04: Honeycomb can remove Lisp mapping +| | [Documentation] | Check if Honeycomb can remove a configured Lisp mapping. +| | ... +| | Given LISP mapping from Honeycomb should be +| | ... | ${node} | ${remote_bd_subtable} +| | And LISP mapping from VAT should be +| | ... | ${node} | ${vat_remote_bd} +| | When Honeycomb removes all lisp mappings | ${node} +| | Then LISP mappings from Honeycomb should not exist +| | ... | ${node} +| | And LISP mappings from VAT should not exist +| | ... | ${node} + +| TC05: Honeycomb configures Lisp - remote mapping - VRF +| | [Documentation] | Check if Honeycomb can configure a remote Lisp mapping\ +| | ... | with VRF. +| | ... +| | [Teardown] | Honeycomb removes all lisp mappings | ${node} +| | ... +| | Given LISP mappings from Honeycomb should not exist +| | ... | ${node} +| | And LISP mappings from VAT should not exist +| | ... | ${node} +| | When Honeycomb adds LISP mapping | ${node} | ${lisp_settings_remote_vrf} +| | Then LISP mapping from Honeycomb should be +| | ... | ${node} | ${remote_vrf_subtable} +| | And LISP mapping from VAT should be | ${node} | ${vat_remote_vrf} + +| TC06: Honeycomb configures Lisp - local mapping - Bridge Domain +| | [Documentation] | Check if Honeycomb can configure a local Lisp mapping\ +| | ... | with a bridge domain. +| | ... +| | [Teardown] | Honeycomb removes all lisp mappings | ${node} +| | ... +| | Given Locator Set From Honeycomb Should Be +| | ... | ${node} | ${interface} | ${locator_set} +| | And LISP mappings from Honeycomb should not exist +| | ... | ${node} +| | And LISP mappings from VAT should not exist +| | ... | ${node} +| | And Honeycomb creates first l2 bridge domain +| | ... | ${node} | ${bd2_name} | ${bd_settings} +| | When Honeycomb adds LISP mapping | ${node} | ${lisp_settings_local_bd} +| | Then LISP mapping from Honeycomb should be | ${node} | ${local_bd_subtable} +| | And LISP mapping from VAT should be | ${node} | ${vat_local_bd} + +| TC07: Honeycomb configures Lisp - local mapping - VRF +| | [Documentation] | Check if Honeycomb can configure a local Lisp mapping\ +| | ... | with VRF. +| | ... +| | [Teardown] | Honeycomb removes all lisp mappings | ${node} +| | ... +| | Given Locator Set From Honeycomb Should Be +| | ... | ${node} | ${interface} | ${locator_set} +| | And LISP mappings from Honeycomb should not exist +| | ... | ${node} +| | And LISP mappings from VAT should not exist +| | ... | ${node} +| | When Honeycomb adds LISP mapping | ${node} | ${lisp_settings_local_vrf} +| | Then LISP mapping from Honeycomb should be | ${node} | ${local_vrf_subtable} +| | And LISP mapping from VAT should be | ${node} | ${vat_local_vrf} + +| TC08: Honeycomb configures Lisp mapping with adjacency +| | [Documentation] | Check if Honeycomb can configure local and remote Lisp\ +| | ... | mappings with VRF, and configure adjacency. +| | ... +| | [Teardown] | Honeycomb removes all lisp mappings | ${node} +| | ... +| | Given Locator Set From Honeycomb Should Be +| | ... | ${node} | ${interface} | ${locator_set} +| | And Honeycomb creates first l2 bridge domain +| | ... | ${node} | ${bd2_name} | ${bd_settings} +| | And LISP mappings from Honeycomb should not exist +| | ... | ${node} +| | And LISP mappings from VAT should not exist +| | ... | ${node} +| | And Honeycomb adds LISP mapping | ${node} | ${lisp_settings_both_vrf} +| | When Honeycomb adds LISP adjacency | ${node} | ${7} | remote_map_vrf +| | ... | adj01 | ${vrf_adjacency} +| | Then Lisp mapping from Honeycomb should be +| | ... | ${node} | ${adj_subtable} + +| TC09: Honeycomb configures Lisp Map Resolver +| | [Documentation] | Check if Honeycomb can configure a Lisp Map Resolver. +| | ... +| | Given LISP state from Honeycomb should be | ${node} | ${state} +| | And LISP state from VAT should be | ${node} | ${state} +| | When Honeycomb adds Lisp Map Resolver | ${node} | ${ip_address} +| | Then Map Resolver from Honeycomb should be | ${node} | ${ip_address} +| | And Map Resolver from VAT should be | ${node} | ${ip_address} + +| TC10: Honeycomb configures Lisp Map Server +| | [Documentation] | Check if Honeycomb can configure a Lisp Map Server. +| | ... +| | Given LISP state from Honeycomb should be | ${node} | ${state} +| | And LISP state from VAT should be | ${node} | ${state} +| | When Honeycomb adds Lisp Map Server | ${node} | @{ip_addresses} +| | Then Map Server from Honeycomb should be | ${node} | @{ip_addresses} +| | And Map Server from VAT should be | ${node} | @{ip_addresses} + +| TC11: Honeycomb configures Lisp PETR configuration +| | [Documentation] | Check if Honeycomb can configure Lisp +| | ... | PETR configuration. +| | ... +| | Given LISP state from Honeycomb should be | ${node} | ${state} +| | And LISP state from VAT should be | ${node} | ${state} +| | When Honeycomb enables LISP PETR feature | ${node} | ${ip_address} +| | Then PETR configuration from Honeycomb should be | ${node} | ${ip_address} +| | And PETR configuration from VAT should be | ${node} | enabled + +| TC12: Honeycomb configures Lisp RLOC Probing +| | [Documentation] | Check if Honeycomb can configure Lisp RLOC Probing. +| | ... +| | Given LISP state from Honeycomb should be | ${node} | ${state} +| | And LISP state from VAT should be | ${node} | ${state} +| | When Honeycomb enables LISP RLOC feature | ${node} +| | Then RLOC Probing from Honeycomb should be | ${node} | ${True} +| | And RLOC Probing from VAT should be | ${node} | enabled + +| TC13: Honeycomb configures Lisp Map Register +| | [Documentation] | Check if Honeycomb can configure a Lisp Map Register. +| | ... +| | Given LISP state from Honeycomb should be | ${node} | ${state} +| | And LISP state from VAT should be | ${node} | ${state} +| | When Honeycomb adds Lisp Map Register | ${node} | ${True} +| | Then Map Register from Honeycomb should be | ${node} | ${True} +| | And Map Register from VAT should be | ${node} | enabled + +| TC14: Honeycomb enabled Lisp PITR feature +| | [Documentation] | Check if Honeycomb can configure the Lisp PITR feature. +| | ... +| | Given Locator Set From Honeycomb Should Be +| | ... | ${node} | ${interface} | ${locator_set} +| | When Honeycomb enables LISP PITR feature | ${node} | ${locator_set} +| | Then PITR config from Honeycomb should be | ${node} | ${locator_set} +| | And PITR config from VAT should be | ${node} | ${locator_set} + +| TC15: Honeycomb can remove configuration of Lisp features +| | [Documentation] | Check if Honeycomb can disable all Lisp features. +| | ... +| | Given Map resolver from Honeycomb should be | ${node} | ${ip_address} +| | And PITR config from Honeycomb should be | ${node} | ${locator_set} +| | When Honeycomb disables all LISP features | ${node} +| | Then Lisp Should Not Be Configured | ${node} + +| TC16: Honeycomb configures Lisp Map Request Mode +| | [Documentation] | Check if Honeycomb can configure Lisp Map Request mode. +| | ... | Note: Map Request Mode cannot be removed once configured. +| | ... +| | [Teardown] | Honeycomb disables LISP | ${node} +| | ... +| | Given Honeycomb enables LISP | ${node} +| | When Honeycomb sets Lisp Map Request Mode | ${node} | ${True} +| | Then Map Request Mode from Honeycomb should be +| | ... | ${node} | source-destination +| | And Map Request Mode from VAT should be | ${node} | src-dst diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot new file mode 100644 index 0000000000..b5048944f5 --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-nsh-apihc-apivat-func.robot @@ -0,0 +1,147 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables*** +| ${super_if}= | ${node['interfaces']['port1']['name']} + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/nsh.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/vxlan_gpe.robot +| Variables | resources/test_data/honeycomb/nsh.py +| Variables | resources/test_data/honeycomb/vxlan_gpe.py +| ... +| Documentation | *Honeycomb NSH test suite.* +| ... +| Suite Setup | Run Keywords +| ... | Enable Honeycomb Feature | ${node} | NSH | AND +| ... | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Run Keywords +| ... | Tear Down Honeycomb Functional Test Suite | ${node} | AND +| ... | Disable Honeycomb Feature | ${node} | NSH +| ... +| Force Tags | honeycomb_sanity | honeycomb_odl + +*** Test Cases *** +| TC01: Honeycomb can configure NSH entry +| | [Documentation] | Check if Honeycomb can configure an NSH entry. +| | ... +| | Given NSH Operational Data From Honeycomb Should Be empty | ${node} +| | When Honeycomb adds NSH entry | ${node} | entry1 | ${nsh_entry1} +| | Then NSH entry from Honeycomb should be +| | ... | ${node} | entry1 | ${nsh_entry1_oper} + +| TC02: Honeycomb can remove NSH entry +| | [Documentation] | Check if Honeycomb can remove an existing NSH entry. +| | ... +| | Given NSH entry from Honeycomb should be +| | ... | ${node} | entry1 | ${nsh_entry1_oper} +| | When Honeycomb removes NSH entry | ${node} | entry1 +| | Then NSH Operational Data From Honeycomb Should Be empty | ${node} + +| TC03: Honeycomb can configure new NSH entry +| | [Documentation] | Check if Honeycomb can configure an NSH antry after one\ +| | ... | has been deleted. +| | ... +| | [Teardown] | Honeycomb removes NSH entry | ${node} | entry2 +| | ... +| | Given NSH Operational Data From Honeycomb Should Be empty | ${node} +| | When Honeycomb adds NSH entry | ${node} | entry2 | ${nsh_entry2} +| | Then NSH entry from Honeycomb should be +| | ... | ${node} | entry2 | ${nsh_entry2_oper} + +| TC04: Honeycomb can configure multiple NSH entries at the same time +| | [Documentation] | Check if Honeycomb can configure an NSH entry when one\ +| | ... | already exists. +| | ... +| | [Teardown] | Honeycomb clears NSH configuration | ${node} +| | ... +| | Given NSH Operational Data From Honeycomb Should Be empty | ${node} +| | When Honeycomb adds NSH entry | ${node} | entry1 | ${nsh_entry1} +| | And Honeycomb adds NSH entry | ${node} | entry2 | ${nsh_entry2} +| | Then NSH entry from Honeycomb should be +| | ... | ${node} | entry1 | ${nsh_entry1_oper} +| | And NSH entry from Honeycomb should be +| | ... | ${node} | entry2 | ${nsh_entry2_oper} + +| TC05: Honeycomb can configure NSH map +| | [Documentation] | Check if Honeycomb can configure an NSH map. +| | ... +| | Given NSH Operational Data From Honeycomb Should Be empty | ${node} +| | And Honeycomb creates VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if1} +| | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1} +| | When Honeycomb adds NSH entry | ${node} | entry1 | ${nsh_entry1} +| | And Honeycomb adds NSH map | ${node} | map1 | ${nsh_map1} +| | Then NSH map from Honeycomb should be | ${node} | map1 | ${nsh_map1_oper} + +| TC06: Honeycomb can remove NSH map +| | [Documentation] | Check if Honeycomb can remove an existing NSH map. +| | ... +| | Given NSH entry from Honeycomb should be +| | ... | ${node} | entry1 | ${nsh_entry1_oper} +| | And VxLAN GPE Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vxlan_gpe_if1} +| | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1} +| | And NSH map from Honeycomb should be | ${node} | map1 | ${nsh_map1_oper} +| | When Honeycomb removes NSH map | ${node} | map1 +| | Then NSH map from Honeycomb should not exist | ${node} | map1 +| | And NSH entry from Honeycomb should be +| | ... | ${node} | entry1 | ${nsh_entry1_oper} + +| TC07: Honeycomb can modify existing NSH map +| | [Documentation] | Check if Honeycomb can configure an NSH map after one\ +| | ... | has been deleted. +| | ... +| | [Teardown] | Honeycomb removes NSH map | ${node} | map1_edit +| | ... +| | Given NSH map from Honeycomb should not exist | ${node} | map1_edit +| | And NSH entry from Honeycomb should be +| | ... | ${node} | entry1 | ${nsh_entry1_oper} +| | And VxLAN GPE Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vxlan_gpe_if1} +| | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1} +| | When Honeycomb adds NSH map | ${node} | map1_edit | ${nsh_map1_edit} +| | Then NSH map from Honeycomb should be +| | ... | ${node} | map1_edit | ${nsh_map1_edit_oper} +| | And NSH entry from Honeycomb should be +| | ... | ${node} | entry1 | ${nsh_entry1_oper} + +| TC08: Honeycomb can configure multiple NSH maps at the same time +| | [Documentation] | Check if Honeycomb can configure and NSH map when one\ +| | ... | already exists. +| | ... +| | [Teardown] | Run Keywords +| | ... | Honeycomb clears NSH configuration | ${node} | AND +| | ... | Honeycomb removes VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if1} | AND +| | ... | Honeycomb removes VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if2} +| | ... +| | Given NSH map from Honeycomb should not exist | ${node} | map2 +| | And NSH entry from Honeycomb should be +| | ... | ${node} | entry1 | ${nsh_entry1_oper} +| | And VxLAN GPE Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vxlan_gpe_if1} +| | ... | ${vxlan_gpe_base_settings1} | ${vxlan_gpe_settings1} +| | And Honeycomb creates VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if2} +| | ... | ${vxlan_gpe_base_settings2} | ${vxlan_gpe_settings2} +| | When Honeycomb adds NSH map | ${node} | map1 | ${nsh_map1} +| | And Honeycomb adds NSH map | ${node} | map2 | ${nsh_map2} +| | Then NSH map from Honeycomb should be +| | ... | ${node} | map1 | ${nsh_map1_oper} +| | And NSH map from Honeycomb should be +| | ... | ${node} | map2 | ${nsh_map2_oper} diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot new file mode 100644 index 0000000000..4547c0c4bf --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-pbb-apihc-apivat-func.robot @@ -0,0 +1,86 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables*** +| ${super_if}= | ${node['interfaces']['port1']['name']} + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/provider_backbone_bridge.robot +| Variables | resources/test_data/honeycomb/pbb/pbb.py +| ... +| Documentation | *Honeycomb provider backbone bridge test suite.* +| ... +| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Force Tags | HC_FUNC + +*** Test Cases *** +# TODO: add verifications once operational data or VPP dump is available. +| TC01: Honeycomb sets PBB sub-interface +| | [Documentation] | Honeycomb creates a new PBB sub-interface. +| | ... +| | Honeycomb creates PBB sub-interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_1} + +| TC02: Honeycomb modifies existing PBB sub-interface +| | [Documentation] | Honeycomb modifies an existing PBB sub-interface. +| | ... +| | Honeycomb creates PBB sub-interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_1_mod} + +| TC03: Honeycomb deletes existing PBB sub-interface +| | [Documentation] | Honeycomb deletes an existing PBB sub-interface. +| | ... +| | Honeycomb removes PBB sub-interface +| | ... | ${node} | ${super_if} + +| TC04: Honeycomb fails to set wrong destination-address for new PBB sub-interface +| | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ +| | ... | wrong value of parameter destination-address, type yang:mac-address. +| | ... +| | Honeycomb fails to create PBB sub-interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_wrong_dst_addr} + +| TC05: Honeycomb fails to set wrong source-address for new PBB sub-interface +| | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ +| | ... | wrong value of parameter source-address, type yang:mac-address. +| | ... +| | Honeycomb fails to create PBB sub-interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_wrong_src_addr} + +| TC06: Honeycomb fails to set wrong b-vlan-tag-vlan-id for new PBB sub-interface +| | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ +| | ... | wrong value of parameter b-vlan-tag-vlan-id, type uint16, 12 bit\ +| | ... | range, range 1..4095. +| | ... +| | Honeycomb fails to create PBB sub-interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_wrong_vlan_tag} + +| TC07: Honeycomb fails to set wrong i-tag-isid for new PBB sub-interface +| | [Documentation] | Honeycomb fails to create a new PBB sub-interface with\ +| | ... | wrong value of parameter i-tag-isid, type uint32, 24 bit range,\ +| | ... | range 1..16777215. +| | ... +| | Honeycomb fails to create PBB sub-interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_wrong_i_tag} + +| TC08: Honeycomb fails to create new PBB sub-interface without vlan tag +| | [Documentation] | Honeycomb fails to create a new PBB sub-interface without\ +| | ... | parameter b-vlan-tag-vlan-id. +| | ... +| | Honeycomb fails to create PBB sub-interface | ${node} | ${super_if} +| | ... | ${cfg_pbb_sub_if_no_vlan_tag} diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot new file mode 100644 index 0000000000..a08aecc050 --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-pluginacl-apihc-apivat-func.robot @@ -0,0 +1,742 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +| &{if_settings}= | enabled=True +# Bridge domain settings +| ${bd_name}= | bd1 +| &{bd_settings}= | flood=${True} | forward=${True} | learn=${True} +| ... | unknown-unicast-flood=${True} | arp-termination=${False} +| &{bd_if_settings}= | split_horizon_group=${0} | bvi=${False} +# Names for AC lists +| ${acl_name_macip}= | macip +| ${acl_name_l3_ip4}= | acl_l3_ip4 +| ${acl_name_l3_ip6}= | acl_l3_ip6 +| ${acl_name_l4}= | acl_l4 +| ${acl_name_mixed}= | acl_mixed +| ${acl_name_icmp}= | acl_icmp +| ${acl_name_icmpv6}= | acl_icmpv6 +| ${acl_name_reflex}= | acl_reflex + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot +| Resource | resources/libraries/robot/honeycomb/access_control_lists.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Library | resources.libraries.python.honeycomb.HcAPIKwACL.ACLKeywords +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPv4Setup +| Library | resources.libraries.python.IPv4Util +| Library | resources.libraries.python.IPv6Util +| Library | resources.libraries.python.Routing +| ... +| Test Setup | Clear Packet Trace on All DUTs | ${nodes} +| ... +| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Documentation | *Honeycomb access control lists test suite for ACL plugin.* +| ... +# Failing due to HC2VPP-173: cannot clean up ACLs in test teardown +| Force Tags | HC_FUNC | EXPECTED_FAILING + +*** Test Cases *** +| TC01: ACL MAC filtering through plugin-acl node - bridged +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ +| | ... | and configure L2 MAC ACL on ingress interface. +| | ... | [Ver] Send simple TCP packets from one TG interface to the other,\ +| | ... | using different MACs. Receive all packets except those with\ +| | ... | MACs in the filtered ranges. +| | ... +| | [Teardown] | Bridged ACL test teardown +| | ... +| | Given Setup Interfaces And Bridge Domain For plugin-acl Test +| | ... | macip | ${acl_name_macip} +| | When Honeycomb Creates ACL Chain Through ACL plugin +| | ... | ${dut_node} | ${acl_name_macip} | ${acl_settings} | macip=${True} +| | And Honeycomb Assigns plugin-acl Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_macip} +| | ... | ingress | macip=${True} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${classify_src} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${classify_src2} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} + +| TC02: ACL IPv4 filtering through plugin-acl node - bridged +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ +| | ... | and configure L3 IPv4 ACL on ingress interface with src/dst IP +| | ... | and protocol number. +| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ +| | ... | to the other, using different IPv4 IPs. Receive all packets except\ +| | ... | those with IPs in the filtered ranges and UDP protocol payload. +| | ... +| | [Teardown] | Bridged ACL test teardown +| | ... +| | Given Setup Interfaces And Bridge Domain For plugin-acl Test +| | ... | l3_ip4 | ${acl_name_l3_ip4} +| | When Honeycomb Creates ACL Chain Through ACL plugin +| | ... | ${dut_node} | ${acl_name_l3_ip4} | ${acl_settings} +| | And Honeycomb Assigns plugin-acl Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_l3_ip4} | ingress +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | UDP | ${src_port} | ${dst_port} +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${classify_src} | ${classify_dst} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${classify_src} | ${classify_dst} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | UDP | ${src_port} | ${dst_port} + +| TC03: ACL IPv6 filtering through plugin-acl node - bridged +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv6-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ +| | ... | and configure L3 IPv6 ACL on ingress interface with src/dst IP +| | ... | and protocol number. +| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ +| | ... | to the other, using different IPv6 IPs. Receive all packets except\ +| | ... | those with IPs in the filtered ranges and UDP protocol payload. +| | ... +| | [Teardown] | Bridged ACL test teardown +| | ... +| | Given Setup interfaces and bridge domain for plugin-acl test +| | ... | l3_ip6 | ${acl_name_l3_ip6} +| | When Honeycomb Creates ACL Chain Through ACL plugin +| | ... | ${dut_node} | ${acl_name_l3_ip6} | ${acl_settings} +| | And Honeycomb Assigns plugin-acl Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_l3_ip6} | ingress +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | UDP | ${src_port} | ${dst_port} +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${classify_src} | ${classify_dst} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${classify_src} | ${classify_dst} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | UDP | ${src_port} | ${dst_port} + +| TC04: ACL port filtering through plugin-acl node - bridged +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ +| | ... | and and configure L4 port ACL on ingress interface +| | ... | with src/dst port ranges. +| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ +| | ... | to the other, using different ports. Receive all packets except\ +| | ... | those with ports in the filtered ranges. +| | ... +| | [Teardown] | Bridged ACL test teardown +| | ... +| | Given Setup interfaces and bridge domain for plugin-acl test +| | ... | L4 | ${acl_name_l4} +| | When Honeycomb Creates ACL Chain Through ACL plugin +| | ... | ${dut_node} | ${acl_name_l4} | ${acl_settings} +| | And Honeycomb Assigns plugin-acl Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_l4} | ingress +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${classify_src} | ${classify_dst} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${classify_src+5} | ${classify_dst+5} + +| TC05: ACL filtering with IPv4 address and TCP port in one rule - bridged +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ +| | ... | and configure a mixed rule with src/dst IP, TCP protocol +| | ... | and port ranges. +| | ... | [Ver] Send simple TCP packets from one TG interface to the other,\ +| | ... | using IPs and ports. Receive all packets except those with\ +| | ... | both IPs and ports in the filtered ranges. +| | ... +| | [Teardown] | Bridged ACL test teardown +| | ... +| | Given Setup Interfaces And Bridge Domain For plugin-acl Test +| | ... | mixed | ${acl_name_mixed} +| | When Honeycomb Creates ACL Chain Through ACL plugin +| | ... | ${dut_node} | ${acl_name_mixed} | ${acl_settings} +| | And Honeycomb Assigns plugin-acl Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_mixed} | ingress +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${classify_src_ip} | ${classify_dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${classify_src_ip} | ${classify_dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${classify_src_port} | ${classify_dst_port} + +| TC06: ACL ICMP packet filtering - bridged +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-ICMP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ +| | ... | and configure a ICMP protocol filtering by ICMP type and code. +| | ... | [Ver] Send ICMP packets from one TG interface\ +| | ... | to the other, using different codes and types. Receive all packets\ +| | ... | except those with types and codes in the filtered ranges. +| | ... +| | [Teardown] | Bridged ACL test teardown +| | ... +| | Given Setup interfaces and bridge domain for plugin-acl test +| | ... | icmp | ${acl_name_icmp} +| | When Honeycomb Creates ACL Chain Through ACL plugin +| | ... | ${dut_node} | ${acl_name_icmp} | ${acl_settings} +| | And Honeycomb Assigns plugin-acl Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_icmp} | ingress +| | Then Send ICMP packet with type and code and verify received packet +| | ... | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | ${icmp_type} | ${icmp_code} +| | Then Send ICMP packet with type and code and verify received packet +| | ... | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | ${classify_type} | ${icmp_code} +| | And Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet with type and code and verify received packet +| | ... | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | ${classify_type} | ${classify_code} + +| TC07: ACL ICMPv6 packet filtering - bridged +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv6-ICMP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG\ +| | ... | and configure a ICMPv6 protocol filtering by ICMPv6 type and code. +| | ... | [Ver] Send ICMPv6 packets from one TG interface\ +| | ... | to the other, using different codes and types. Receive all packets\ +| | ... | except those with the filtered type and code. +| | ... +| | [Teardown] | Bridged ACL test teardown +| | ... +| | Given Setup interfaces and bridge domain for plugin-acl test +| | ... | icmpv6 | ${acl_name_icmpv6} +| | When Honeycomb Creates ACL Chain Through ACL plugin +| | ... | ${dut_node} | ${acl_name_icmpv6} | ${acl_settings} +| | And Honeycomb Assigns plugin-acl Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_icmpv6} | ingress +| | Then Send ICMP packet with type and code and verify received packet +| | ... | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | ${icmp_type} | ${icmp_code} +| | Then Send ICMP packet with type and code and verify received packet +| | ... | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | ${classify_type} | ${icmp_code} +| | And Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet with type and code and verify received packet +| | ... | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | ${classify_type} | ${classify_code} + +| TC08: ACL reflexive IPv4 filtering through plugin-acl node - bridged +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 bridge both interfaces to TG,\ +| | ... | configure a "drop all" ACL on ingress and reflexive ACL on egress. +| | ... | [Ver] Send a simple TCP packet to VPP interface 1 and do not receive\ +| | ... | it back. Then send the packet with reversed src/dst IP address\ +| | ... | to VPP interface 2 and receive it from interface 1(this should create\ +| | ... | a reflexive "permit" rule) Finally, send the original packet again\ +| | ... | and receive it from interface 2. +| | ... +| | [Teardown] | Bridged ACL test teardown +| | ... +| | Given Setup Interfaces And Bridge Domain For plugin-acl Test +| | ... | reflex | ${acl_name_reflex} +| | When Honeycomb Creates ACL Chain Through ACL plugin +| | ... | ${dut_node} | ${acl_name_reflex} | ${acl_settings} +| | And Honeycomb Assigns plugin-acl Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_reflex} | egress +| | And Import Variables | resources/test_data/honeycomb/plugin_acl.py +| | ... | block_all | block_all +| | When Honeycomb Creates ACL Chain Through ACL plugin +| | ... | ${dut_node} | block_all | ${acl_settings} +| | And Honeycomb Assigns plugin-acl Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | block_all | ingress +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${classify_src} | ${classify_dst} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${classify_dst} | ${classify_src} +| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if2_mac} +| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if2_mac} +| | ... | TCP | ${dst_port} | ${src_port} +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${classify_src} | ${classify_dst} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} + +# Routing section +# =============== + +| TC09: ACL IPv4 filtering through plugin-acl node - routed +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv4 addresses on both\ +| | ... | interfaces to TG, add ARP entry and routes, and configure L3 IPv4 ACL\ +| | ... | on ingress interface with src/dst IP and protocol. +| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ +| | ... | to the other, using different IPv4 IPs. Receive all packets except\ +| | ... | those with IPs in the filtered ranges and UDP protocol payload. +| | ... +| | [Teardown] | Routed ACL test teardown - ipv4 +| | ... +| | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test +| | ... | l3_ip4 | ${acl_name_l3_ip4} +| | When Honeycomb Creates ACL Chain Through ACL plugin +| | ... | ${dut_node} | ${acl_name_l3_ip4} | ${acl_settings} +| | And Honeycomb Assigns plugin-acl Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_l3_ip4} | ingress +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | UDP | ${src_port} | ${dst_port} +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${classify_src} | ${classify_dst} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${classify_src} | ${classify_dst} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | UDP | ${src_port} | ${dst_port} + +| TC10: ACL IPv6 filtering through plugin-acl node - routed +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv6-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv6 addresses on both\ +| | ... | interfaces to TG, add IP neighbor entry and routes, and configure\ +| | ... | L3 IPv6 ACL on ingress interface with src/dst IP and next-header. +| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ +| | ... | to the other, using different IPv6 IPs. Receive all packets except\ +| | ... | those with IPs in the filtered ranges and UDP protocol payload. +| | ... +| | [Teardown] | Routed ACL test teardown - ipv6 +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Import Variables | resources/test_data/honeycomb/plugin_acl.py +| | ... | L3_IP6 | ${acl_name_l3_ip6} +| | And Honeycomb configures interface state +| | ... | ${dut_node} | ${dut_to_tg_if1} | up +| | And Honeycomb configures interface state +| | ... | ${dut_node} | ${dut_to_tg_if2} | up +| | And Honeycomb sets interface IPv6 address | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} +| | And Honeycomb sets interface IPv6 address | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} +| | And VPP RA suppress link layer | ${dut_node} | ${dut_to_tg_if2} +| | And Honeycomb adds interface IPv6 neighbor +| | ... | ${node} | ${dut_to_tg_if2} | ${gateway} | ${tg_to_dut_if2_mac} +| | And VPP Route Add | ${node} | ${dst_net} | ${prefix_length} +| | ... | ${gateway} | interface=${dut_to_tg_if2} | use_sw_index=False +| | And VPP Route Add | ${node} | ${classify_dst_net} | ${prefix_length} +| | ... | ${gateway} | interface=${dut_to_tg_if2} | use_sw_index=False +| | When Honeycomb Creates ACL Chain Through ACL plugin +| | ... | ${dut_node} | ${acl_name_l3_ip6} | ${acl_settings} +| | And Honeycomb Assigns plugin-acl Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_l3_ip6} | ingress +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | UDP | ${src_port} | ${dst_port} +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${classify_src} | ${classify_dst} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${classify_src} | ${classify_dst} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | UDP | ${src_port} | ${dst_port} + +| TC11: ACL port filtering through plugin-acl node - routed +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv4 addresses on both\ +| | ... | interfaces to TG, add ARP entry and routes, and configure L4 port ACL\ +| | ... | on ingress interface with src/dst port ranges. +| | ... | [Ver] Send simple TCP and UDP packets from one TG interface\ +| | ... | to the other, using different ports. Receive all packets except\ +| | ... | those with ports in the filtered ranges. +| | ... +| | [Teardown] | Routed ACL test teardown - ipv4 +| | ... +| | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test +| | ... | L4 | ${acl_name_l4} +| | When Honeycomb Creates ACL Chain Through ACL plugin +| | ... | ${dut_node} | ${acl_name_l4} | ${acl_settings} +| | And Honeycomb Assigns plugin-acl Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_l4} | ingress +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${classify_src} | ${classify_dst} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${classify_src+5} | ${classify_dst+5} + +| TC12: ACL filtering with IPv4 address and TCP port in one rule - routed +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv4 addresses on both\ +| | ... | interfaces to TG, add ARP entry and routes and configure a mixed +| | ... | rule with src/dst IP, TCP protocol and port ranges. +| | ... | [Ver] Send simple TCP packets from one TG interface to the other,\ +| | ... | using IPs and ports. Receive all packets except those with\ +| | ... | both IPs and ports in the filtered ranges. +| | ... +| | [Teardown] | Routed ACL test teardown - ipv4 +| | ... +| | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test +| | ... | mixed | ${acl_name_mixed} +| | When Honeycomb Creates ACL Chain Through ACL plugin +| | ... | ${dut_node} | ${acl_name_mixed} | ${acl_settings} +| | And Honeycomb Assigns plugin-acl Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_mixed} | ingress +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${classify_src_ip} | ${classify_dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${classify_src_ip} | ${classify_dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dst_mac} +| | ... | TCP | ${classify_src_port} | ${classify_dst_port} + +| TC13: ACL ICMP packet filtering - routed +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv4 addresses on both\ +| | ... | interfaces to TG, add ARP entry and routes, and configure ICMP ACL\ +| | ... | on ingress interface with ICMP type and code. +| | ... | [Ver] Send ICMP packets from one TG interface\ +| | ... | to the other, using different codes and types. Receive all packets\ +| | ... | except those with the filtered type and code. +| | ... +| | [Teardown] | Routed ACL test teardown - ipv4 +| | ... +| | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test +| | ... | icmp | ${acl_name_icmp} +| | When Honeycomb Creates ACL Chain Through ACL plugin +| | ... | ${dut_node} | ${acl_name_icmp} | ${acl_settings} +| | And Honeycomb Assigns plugin-acl Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_icmp} | ingress +| | Then Send ICMP packet with type and code and verify received packet +| | ... | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | ${icmp_type} | ${icmp_code} +| | Then Send ICMP packet with type and code and verify received packet +| | ... | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | ${classify_type} | ${icmp_code} +| | And Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet with type and code and verify received packet +| | ... | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | ${classify_type} | ${classify_code} + +| TC14: ACL ICMPv6 packet filtering - routed +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv6 addresses on both\ +| | ... | interfaces to TG, add ARP entry and routes, and configure ICMP ACL\ +| | ... | on ingress interface with ICMPv6 type and code. +| | ... | [Ver] Send ICMPv6 packets from one TG interface\ +| | ... | to the other, using different codes and types. Receive all packets\ +| | ... | except those with the filtered type and code. +| | ... +| | [Teardown] | Routed ACL test teardown - ipv6 +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Import Variables | resources/test_data/honeycomb/plugin_acl.py +| | ... | icmpv6 | ${acl_name_icmpv6} +| | And Honeycomb configures interface state +| | ... | ${dut_node} | ${dut_to_tg_if1} | up +| | And Honeycomb configures interface state +| | ... | ${dut_node} | ${dut_to_tg_if2} | up +| | And Honeycomb sets interface IPv6 address | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} +| | And Honeycomb sets interface IPv6 address | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} +| | And Honeycomb adds interface IPv6 neighbor +| | ... | ${node} | ${dut_to_tg_if2} | ${gateway} | ${tg_to_dut_if2_mac} +| | And VPP RA suppress link layer | ${dut_node} | ${dut_to_tg_if2} +| | And VPP Route Add | ${node} | ${dst_net} | ${prefix_length} +| | ... | ${gateway} | interface=${dut_to_tg_if2} | use_sw_index=False +| | And VPP Route Add | ${node} | ${classify_dst_net} | ${prefix_length} +| | ... | ${gateway} | interface=${dut_to_tg_if2} | use_sw_index=False +| | When Honeycomb Creates ACL Chain Through ACL plugin +| | ... | ${dut_node} | ${acl_name_icmpv6} | ${acl_settings} +| | And Honeycomb Assigns plugin-acl Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_icmpv6} | ingress +| | Then Send ICMP packet with type and code and verify received packet +| | ... | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | ${icmp_type} | ${icmp_code} +| | Then Send ICMP packet with type and code and verify received packet +| | ... | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | ${classify_type} | ${icmp_code} +| | And Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet with type and code and verify received packet +| | ... | ${tg_node} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | ${classify_type} | ${classify_code} + +| TC15: ACL reflexive IPv4 filtering through plugin-acl node - routed +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-TCP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 set IPv4 addresses on both\ +| | ... | interfaces to TG, add ARP entries and routes,\ +| | ... | configure a "drop all" ACL on ingress and reflexive ACL on egress. +| | ... | [Ver] Send a simple TCP packet to VPP interface 1 and do not receive\ +| | ... | it back. Then send the packet with reversed src/dst IP address\ +| | ... | to VPP interface 2 and receive it from interface 1(this should create\ +| | ... | a reflexive "permit" rule) Finally, send the original packet again\ +| | ... | and receive it from interface 2. +| | ... +| | [Teardown] | Routed ACL test teardown - ipv4 +| | ... +| | Given Setup Interface IPs And Routes For IPv4 plugin-acl Test +| | ... | reflex | ${acl_name_reflex} +| | And Add ARP on DUT +| | ... | ${node} | ${dut_to_tg_if1} | ${gateway2} | ${tg_to_dut_if1_mac} +| | And VPP Route Add +| | ... | ${node} | ${src_net} | ${prefix_length} | ${gateway2} +| | ... | interface=${dut_to_tg_if1} | use_sw_index=False +| | And VPP Route Add +| | ... | ${node} | ${classify_src_net} | ${prefix_length} | ${gateway2} +| | ... | interface=${dut_to_tg_if1} | use_sw_index=False +| | When Honeycomb Creates ACL Chain Through ACL plugin +| | ... | ${dut_node} | ${acl_name_reflex} | ${acl_settings} +| | And Honeycomb Assigns plugin-acl Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_name_reflex} | egress +| | And Import Variables | resources/test_data/honeycomb/plugin_acl.py +| | ... | block_all | block_all +| | When Honeycomb Creates ACL Chain Through ACL plugin +| | ... | ${dut_node} | block_all | ${acl_settings} +| | And Honeycomb Assigns plugin-acl Chain To Interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | block_all | ingress +| | And Run Keyword And Expect Error | TCP/UDP Rx timeout +| | ... | Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${classify_src} | ${classify_dst} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${classify_dst} | ${classify_src} +| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if2_mac} +| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if2_mac} +| | ... | TCP | ${dst_port} | ${src_port} +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${classify_src} | ${classify_dst} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | TCP | ${src_port} | ${dst_port} + +*** Keywords *** +| Setup interface IPs and routes for IPv4 plugin-acl test +| | [Documentation] | Import test variables, set interfaces up, +| | ... | configure IPv4 addresses, add neighbor entry and routes. +| | ... +| | [Arguments] | ${test_data_id} | ${acl_name} +| | ... +| | Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | Import Variables | resources/test_data/honeycomb/plugin_acl.py +| | ... | ${test_data_id} | ${acl_name} +| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up +| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up +| | Honeycomb sets interface IPv4 address with prefix | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} +| | Honeycomb sets interface IPv4 address with prefix | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} +| | And Honeycomb adds interface IPv4 neighbor +| | ... | ${node} | ${dut_to_tg_if2} | ${gateway} | ${tg_to_dut_if2_mac} +| | VPP Route Add +| | ... | ${node} | ${dst_net} | ${prefix_length} | ${gateway} +| | ... | interface=${dut_to_tg_if2} | use_sw_index=False +| | VPP Route Add +| | ... | ${node} | ${classify_dst_net} | ${prefix_length} | ${gateway} +| | ... | interface=${dut_to_tg_if2} | use_sw_index=False + +| Setup interfaces and bridge domain for plugin-acl test +| | [Documentation] | Import test variables, set interfaces up and bridge them. +| | ... +| | [Arguments] | ${test_data_id} | ${acl_name} +| | ... +| | Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | Import Variables | resources/test_data/honeycomb/plugin_acl.py +| | ... | ${test_data_id} | ${acl_name} +| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up +| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up +| | Honeycomb Creates first L2 Bridge Domain +| | ... | ${dut_node} | ${bd_name} | ${bd_settings} +| | Honeycomb Adds Interfaces To Bridge Domain +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} +| | ... | ${bd_name} | ${bd_if_settings} + +| Bridged ACL test teardown +| | [Documentation] | Log packet trace and ACL settings, +| | ... | then clean up bridge domains. +| | ... +| | Show Packet Trace on All DUTs | ${nodes} +| | Read plugin-ACL configuration from VAT | ${node} +| | Clear plugin-ACL configuration | ${node} | ${dut_to_tg_if1} +| | Honeycomb Removes All Bridge Domains +| | ... | ${node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} + +| Routed ACL test teardown - ipv4 +| | [Documentation] | Log packet trace and ACL settings, +| | ... | then clean up IPv4 addresses and neighbors. +| | ... +| | Show Packet Trace on All DUTs | ${nodes} +| | Read plugin-ACL configuration from VAT | ${node} +| | Clear plugin-ACL configuration | ${node} | ${dut_to_tg_if1} +| | Honeycomb removes interface IPv4 addresses | ${node} | ${dut_to_tg_if1} +| | Honeycomb clears all interface IPv4 neighbors | ${node} | ${dut_to_tg_if1} + +| Routed ACL test teardown - ipv6 +| | [Documentation] | Log packet trace and ACL settings, +| | ... | then clean up IPv6 addresses and neighbors. +| | ... +| | Show Packet Trace on All DUTs | ${nodes} +| | Clear plugin-ACL configuration | ${node} | ${dut_to_tg_if1} +| | Read plugin-ACL configuration from VAT | ${node} +| | Honeycomb removes interface IPv6 addresses | ${node} | ${dut_to_tg_if1} +| | Honeycomb clears all interface IPv6 neighbors | ${node} | ${dut_to_tg_if1} diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-policer-apihc-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-policer-apihc-func.robot new file mode 100644 index 0000000000..7f61780fb5 --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-policer-apihc-func.robot @@ -0,0 +1,144 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +| ${interface}= | ${node['interfaces']['port1']['name']} +| ${tg_to_dut_if1_ip}= | 192.168.122.1 +| ${dut_to_tg_if1_ip}= | 192.168.122.2 +| ${dut_to_tg_if2_ip}= | 192.168.123.1 +| ${tg_to_dut_if2_ip}= | 192.168.123.2 +| ${prefix_length}= | ${24} +| ${dscp_number}= | ${20} + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/policer.robot +| Resource | resources/libraries/robot/honeycomb/access_control_lists.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Library | resources.libraries.python.Trace +| Variables | resources/test_data/honeycomb/policer_variables.py +| ... +| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Force Tags | HC_FUNC +| ... +| Documentation | *Honeycomb Policer management test suite.* + +*** Test Cases *** +| TC01: Honeycomb can configure Policer +| | [Documentation] | Checks if Honeycomb can configure Policer. +| | ... +| | Given Policer Operational Data From Honeycomb Should Be empty | ${node} +| | When Honeycomb configures Policer | ${node} | ${policer_data} +| | Then Policer Operational Data From Honeycomb Should Be | ${node} +| | ... | ${policer_data_oper} + +| TC02: Honeycomb can disable Policer +| | [Documentation] | Checks if Honeycomb can disable Policer. +| | ... +| | Given Policer Operational Data From Honeycomb Should Be | ${node} +| | ... | ${policer_data_oper} +| | When Honeycomb removes Policer configuration | ${node} +| | Then Policer Operational Data From Honeycomb Should Be empty | ${node} + +| TC03: Honeycomb can configure Policer with increased values of CIR (900kbps) +| | [Documentation] | Checks if Honeycomb can configure Policer\ +| | ... | with increased values of CIR. +| | ... +| | [Teardown] | Tear down policer test | ${node} +| | ... +| | Given Policer Operational Data From Honeycomb Should Be empty | ${node} +| | When Honeycomb configures Policer | ${node} | ${policer_data_2} +| | Then Policer Operational Data From Honeycomb Should Be | ${node} +| | ... | ${policer_data_oper_2} + +| TC04: Honeycomb can configure Packets-Per-Second Based Policer +| | [Documentation] | Checks if Honeycomb can configure Policer\ +| | ... | based on rate-type measured in pps. +| | ... +| | [Teardown] | Tear down policer test | ${node} +| | ... +| | Given Policer Operational Data From Honeycomb Should Be empty | ${node} +| | When Honeycomb configures Policer | ${node} | ${policer_data_3} +| | Then Policer Operational Data From Honeycomb Should Be | ${node} +| | ... | ${policer_data_oper_3} + +| TC05: Configure Policer on Interface +| | [Documentation] | Honeycomb can configure Policer on a given interface. +| | ... +| | [Teardown] | Run Keywords +| | ... | Honeycomb disables Policer on interface | ${node} | ${interface} | AND +| | ... | Honeycomb removes ACL session | ${node} +| | ... | ${acl_tables['hc_acl_table']['name']} +| | ... | ${acl_tables['hc_acl_session']['match']} | AND +| | ... | Honeycomb removes ACL table | ${node} +| | ... | ${acl_tables['hc_acl_table']['name']} | AND +| | ... | Tear down policer test | ${node} +| | ... +| | Given Honeycomb configures Policer | ${node} | ${policer_data} +| | And ACL table from Honeycomb should not exist +| | ... | ${node} | ${acl_tables['hc_acl_table']['name']} +| | When Honeycomb creates ACL table +| | ... | ${node} | ${acl_tables['hc_acl_table']} +| | And Honeycomb adds ACL session +| | ... | ${node} | ${acl_tables['hc_acl_table']['name']} +| | ... | ${acl_tables['hc_acl_session']} +| | Then Honeycomb enables policer on interface +| | ... | ${node} | ${interface} | ${acl_tables['hc_acl_table']['name']} + +| TC06: VPP policer 2R3C Color-aware marks packet +# Pending rework +| | [Tags] | EXPECTED_FAILING +| | [Documentation] +| | ... | [Top] TG=DUT1. +| | ... | [Ref] RFC2474, RFC2698. +| | ... | [Cfg] Configure 2R3C color-aware policer on DUT1 on the first\ +| | ... | interface. +| | ... | [Ver] TG sends IPv4 TCP packet on the first link to DUT1.\ +| | ... | Packet on DUT1 is marked with DSCP tag. Verifies if DUT1 sends\ +| | ... | correct IPv4 TCP packet with correct DSCP on the second link to TG. +| | ... +| | [Teardown] | Show Packet Trace on All DUTs | ${nodes} +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Honeycomb configures Policer | ${dut_node} | ${policer_data_3} +| | And ACL table from Honeycomb should not exist +| | ... | ${dut_node} | ${acl_tables['hc_acl_table']['name']} +| | When Honeycomb creates ACL table +| | ... | ${dut_node} | ${acl_tables['hc_acl_table']} +| | And Honeycomb adds ACL session +| | ... | ${dut_node} | ${acl_tables['hc_acl_table']['name']} +| | ... | ${acl_tables['hc_acl_session']} +| | And Honeycomb enables policer on interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${acl_tables['hc_acl_table']['name']} +| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} +| | ... | up +| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} +| | ... | up +| | And Honeycomb sets interface IPv4 address with prefix | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} +| | And Honeycomb sets interface IPv4 address with prefix | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} +| | And Honeycomb adds interface IPv4 neighbor +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${tg_to_dut_if2_ip} +| | ... | ${tg_to_dut_if2_mac} +| | And VPP Node Interfaces Ready Wait | ${dut_node} +| | Then Honeycomb Send packet and verify marking | ${tg_node} +| | ... | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} +| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if2_ip} | ${dscp_number} diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot new file mode 100644 index 0000000000..1404633acd --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-proxyarp-apihc-func.robot @@ -0,0 +1,89 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +# Interface to run tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} +| &{proxyarp_settings_ipv4}= | vrf-id=${0} +| ... | low-addr=192.168.1.2 | high-addr=192.168.1.10 +| ${tg_to_dut_ip}= | 10.0.0.100 +| ${dut_to_tg_ip}= | 10.0.0.1 +| ${prefix_length}= | ${24} +| ${test_ip}= | 192.168.1.5 + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/proxyarp.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Library | resources.libraries.python.Trace +| ... +| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Force Tags | HC_FUNC +| ... +| Documentation | *Honeycomb proxyARP management test suite.* + +*** Test Cases *** +# TODO: Add operational data and VAT dump verification if/when avaliable +| TC01: Honeycomb can configure ipv4 proxyARP +| | [Documentation] | Check if Honeycomb can configure the proxyARP feature. +| | ... +| | [Teardown] | Honeycomb removes proxyARP configuration | ${node} +| | ... +| | Honeycomb configures proxyARP | ${node} | ${proxyarp_settings_ipv4} + +| TC02: Honeycomb can enable proxyarp on an interface +| | [Documentation] | Check if Honeycomb can enable the proxyARP feature\ +| | ... | on an interface. +| | ... +| | [Teardown] | Honeycomb disables proxyARP on interface +| | ... | ${node} | ${interface} +| | ... +| | Honeycomb enables proxyARP on interface | ${node} | ${interface} + +| TC03: DUT sends ARP reply on behalf of another machine from the IP range +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC1027. +| | ... | [Cfg] On DUT1 configure interface IPv4 address and proxy ARP +| | ... | for IP range, using Honeycomb API. +| | ... | [Ver] Make TG send ARP request to DUT1 interface, +| | ... | verify if DUT1 sends correct ARP reply on behalf of machine whose +| | ... | IP is in the configured range. +| | ... +| | [Teardown] | Run Keywords +| | ... | Show Packet Trace on all DUTs | ${nodes} +| | ... | AND | Honeycomb removes proxyARP configuration | ${node} +| | ... | AND | Honeycomb configures interface state +| | ... | ${dut_node} | ${dut_to_tg_if1} | down +| | ... | AND | Honeycomb removes interface IPv4 addresses +| | ... | ${node} | ${interface} +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | ${dut_to_tg_name}= | Get interface name | ${dut_node} | ${dut_to_tg_if1} +| | ${tg_to_dut_name}= | Get interface name | ${tg_node} | ${tg_to_dut_if1} +| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up +| | And Honeycomb sets interface IPv4 address with prefix | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${dut_to_tg_ip} | ${prefix_length} +| | When Honeycomb configures proxyARP | ${dut_node} | ${proxyarp_settings_ipv4} +| | And Honeycomb enables proxyARP on interface | ${node} | ${dut_to_tg_name} +| | Then Send ARP Request | ${tg_node} | ${tg_to_dut_name} +| | ... | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} +| | ... | ${tg_to_dut_ip} | ${test_ip} diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-proxynd6-apihc-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-proxynd6-apihc-func.robot new file mode 100644 index 0000000000..4425750add --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-proxynd6-apihc-func.robot @@ -0,0 +1,117 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +# Interface to run configuration tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} +# IPv6 addresses to configure on DUT. +| ${dut_to_tg_if1_ip}= | 10::1 +| ${dut_to_tg_if2_ip}= | 11::1 +# IPv6 addresses used for TG interfaces. +| ${test_src_ip}= | 10::2 +| ${test_dst_ip}= | 11::2 +| ${test_dst_ip2}= | 11::3 +# IPv6 subnet prefix length +| ${prefix_length}= | 64 + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/proxyarp.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/features/dhcp_proxy.robot +| Library | resources.libraries.python.Trace +| ... +| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Force Tags | HC_FUNC +| ... +| Documentation | *Honeycomb IPv6 neighbor discovery proxy test suite.* + +*** Test Cases *** +| TC01: Honeycomb can configure IPv6 ND proxy on an interface +| | [Documentation] | Check if Honeycomb can configure the IPv6 ND proxy\ +| | ... | feature on an interface. +| | ... +| | Given IPv6 ND proxy from Honeycomb should be empty | ${node} | ${interface} +| | And Honeycomb configures interface state | ${node} | ${interface} | up +| | When Honeycomb configures IPv6 ND proxy on interface +| | ... | ${node} | ${interface} | ${test_dst_ip} +| | Then IPv6 ND proxy from Honeycomb should be +| | ... | ${node} | ${interface} | ${test_dst_ip} + +| TC02: Honeycomb can disable IPv6 ND proxy on an interface +| | [Documentation] | Check if Honeycomb can remove IPv6 ND proxy feature\ +| | ... | configuration from an interface. +| | ... +| | Given IPv6 ND proxy from Honeycomb should be +| | ... | ${node} | ${interface} | ${test_dst_ip} +| | When Honeycomb disables IPv6 ND proxy on interface | ${node} | ${interface} +| | Then IPv6 ND proxy from Honeycomb should be empty | ${node} | ${interface} + +| TC03: Honeycomb can configure multiple IPv6 ND proxies on an interface +| | [Documentation] | Check if Honeycomb can configure two ND proxies\ +| | ... | on one interface. +| | ... +| | [Teardown] | Honeycomb disables IPv6 ND proxy on interface +| | ... | ${node} | ${interface} +| | ... +| | Given IPv6 ND proxy from Honeycomb should be empty | ${node} | ${interface} +| | And Honeycomb configures interface state | ${node} | ${interface} | up +| | When Honeycomb configures IPv6 ND proxy on interface +| | ... | ${node} | ${interface} | ${test_dst_ip} | ${test_dst_ip2} +| | Then IPv6 ND proxy from Honeycomb should be +| | ... | ${node} | ${interface} | ${test_dst_ip} | ${test_dst_ip2} + +| TC04: VPP proxies valid ICMPv6 Neighbor Discovery request +| | [Documentation] | +| | ... | [Top] TG=DUT +| | ... | [Cfg] On DUT configure IPv6 addresses and neighbors, supress router\ +| | ... | advertisement and configure IPv6 Neighbor Discovery proxy. +| | ... | [Ver] Make TG send a neighbor solicitation packet to it's other\ +| | ... | interface through DUT, verify DUT responds to the packet instead\ +| | ... | of forwarding it. Then exchange ICMPv6 Echo request/reply to verify\ +| | ... | connectivity between interfaces. +| | ... | [Ref] RFC 4389 +| | ... +| | [Teardown] | Run Keywords +| | ... | Show Packet Trace on All DUTs | ${nodes} | AND +| | ... | Honeycomb disables IPv6 ND proxy on interface +| | ... | ${dut_node} | ${dut_to_tg_if2} +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up +| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up +| | Honeycomb sets interface IPv6 address | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} +| | Honeycomb sets interface IPv6 address | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} +| | And Vpp Ra Suppress Link Layer | ${dut_node} | ${dut_to_tg_if1} +| | And Vpp Ra Suppress Link Layer | ${dut_node} | ${dut_to_tg_if2} +| | And Honeycomb adds interface IPv6 neighbor | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${test_src_ip} | ${tg_to_dut_if1_mac} +| | And Honeycomb adds interface IPv6 neighbor | ${dut_node} | ${dut_to_tg_if2} +| | ... | ${test_dst_ip} | ${tg_to_dut_if2_mac} +| | When Honeycomb configures IPv6 ND proxy on interface +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${test_dst_ip} +| | Then Verify IPv6ND proxy | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2} +| | ... | ${test_src_ip} | ${test_dst_ip} +| | ... | ${tg_to_dut_if1_mac} | ${tg_to_dut_if2_mac} +| | ... | ${dut_to_tg_if1_mac} | ${dut_to_tg_if2_mac} diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot new file mode 100644 index 0000000000..9f2dbc0ae6 --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-routing-apihc-apivat-func.robot @@ -0,0 +1,231 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.honeycomb.Routing.RoutingKeywords +| Library | resources.libraries.python.Trace.Trace +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/routing.robot +| ... +| Test Setup | Clear Packet Trace on All DUTs | ${nodes} +| ... +| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Test Teardown | Honeycomb routing test teardown | ${node} | ${table} +| ... +| Documentation | *Honeycomb routing test suite.* +| ... +| Force Tags | HC_FUNC + +*** Test Cases *** +| TC01: Single hop IPv4 route +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-ICMP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 add ARP entries to both TG\ +| | ... | interfaces and configure route with TG-if2 as next-hop. +| | ... | [Ver] Send ICMP packet from first TG interface to configured route +| | ... | destination. Receive packet on the second TG interface. +| | ... +| | ${table}= | Set Variable | table1 +| | Given Setup interfaces and neighbors for IPv4 routing test +| | When Honeycomb configures routing table +| | ... | ${node} | table1 | ipv4 | ${table1} | ${1} +| | Then Routing data from Honeycomb should contain +| | ... | ${node} | table1 | ipv4 | ${table1_oper} +| | And Verify route IPv4 | ${nodes['TG']} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} + +| TC02: Multi hop IPv4 route +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-ICMP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 add ARP entries to both TG\ +| | ... | interfaces and configure two routes through the second DUT interface. +| | ... | [Ver] Send 100 ICMP packets from first TG interface to configured +| | ... | route destination. Receive all packets on the second TG interface and\ +| | ... | verify that each destination MAC was used by exactly 50 packets. +| | ... | Receive packet on the second TG interface. +| | ... +| | ${table}= | Set Variable | table2 +| | Given Setup interfaces and neighbors for IPv4 routing test +| | And Honeycomb adds interface IPv4 neighbor | ${dut_node} | ${dut_to_tg_if2} +| | ... | ${next_hop1} | ${next_hop_mac1} +| | And Honeycomb adds interface IPv4 neighbor | ${dut_node} | ${dut_to_tg_if2} +| | ... | ${next_hop2} | ${next_hop_mac2} +| | When Honeycomb configures routing table +| | ... | ${node} | table2 | ipv4 | ${table2} | ${1} +| | Then Routing data from Honeycomb should contain +| | ... | ${node} | table2 | ipv4 | ${table2_oper} +| | And Verify multipath Route | ${nodes['TG']} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | ${dut_to_tg_if2_mac} | ${next_hop_mac1} | ${next_hop_mac2} + +| TC03: Special hop - blackhole IPv4 route +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv4-ICMP. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 add ARP entries to both TG\ +| | ... | interfaces and configure route with special rule blackhole. +| | ... | [Ver] Send ICMP packet from first TG interface to configured route +| | ... | destination. Make sure no packet is received on the second TG\ +| | ... | interface. +| | ... +| | ${table}= | Set Variable | table3 +| | Given Setup interfaces and neighbors for IPv4 routing test +| | When Honeycomb configures routing table +| | ... | ${node} | table3 | ipv4 | ${table3} | ${1} | special=${TRUE} +| | Then Routing data from Honeycomb should contain +| | ... | ${node} | table3 | ipv4 | ${table3_oper} +| | And Run keyword and Expect Error | ICMP echo Rx timeout +| | ... | Verify route IPv4 | ${nodes['TG']} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} + +| TC04: Single hop IPv6 route +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv6-ICMPv6. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 add ARP entries to both TG\ +| | ... | interfaces and configure route with TG-if2 as next-hop. +| | ... | [Ver] Send ICMP packet from first TG interface to configured route +| | ... | destination. Receive packet on the second TG interface. +| | ... +| | ${table}= | Set Variable | table4 +| | Given Setup interfaces and neighbors for IPv6 routing test +| | When Honeycomb configures routing table +| | ... | ${node} | table4 | ipv6 | ${table4} | ${1} +| | Then Routing data from Honeycomb should contain +| | ... | ${node} | table4 | ipv6 | ${table4_oper} +| | And Verify route IPv6 | ${nodes['TG']} +| | ... | ${src_ip} | ${next_hop} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} + +| TC05: Multi hop IPv6 route +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv6-ICMPv6. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 add ARP entries to both TG\ +| | ... | interfaces and configure two routes through the second DUT interface. +| | ... | [Ver] Send 100 ICMP packets from first TG interface to configured +| | ... | route destination. Receive all packets on the second TG interface and\ +| | ... | verify that each destination MAC was used by exactly 50 packets. +| | ... | Receive packet on the second TG interface. +| | ... +| | ${table}= | Set Variable | table5 +| | Given Setup interfaces and neighbors for IPv6 routing test +| | And Honeycomb adds interface IPv6 neighbor | ${dut_node} | ${dut_to_tg_if2} +| | ... | ${next_hop1} | ${next_hop_mac1} +| | And Honeycomb adds interface IPv6 neighbor | ${dut_node} | ${dut_to_tg_if2} +| | ... | ${next_hop2} | ${next_hop_mac2} +| | When Honeycomb configures routing table +| | ... | ${node} | table5 | ipv6 | ${table5} | ${1} +| | Then Routing data from Honeycomb should contain +| | ... | ${node} | table5 | ipv6 | ${table5_oper} +| | And Verify multipath Route | ${nodes['TG']} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} +| | ... | ${dut_to_tg_if2_mac} | ${next_hop_mac1} | ${next_hop_mac2} + +| TC06: Special hop - blackhole IPv6 route +| | [Documentation] +| | ... | [Top] TG=DUT1=TG. +| | ... | [Enc] Eth-IPv6-ICMPv6. +| | ... | [Cfg] (Using Honeycomb API) On DUT1 add ARP entries to both TG\ +| | ... | interfaces and configure route with special rule blackhole. +| | ... | [Ver] Send ICMP packet from first TG interface to configured route +| | ... | destination. Make sure no packet is received on the second TG\ +| | ... | interface. +| | ... +| | ${table}= | Set Variable | table6 +| | Given Setup interfaces and neighbors for IPv6 routing test +| | When Honeycomb configures routing table +| | ... | ${node} | table6 | ipv6 | ${table6} | ${1} | special=${TRUE} +| | Then Routing data from Honeycomb should contain +| | ... | ${node} | table6 | ipv6 | ${table6_oper} +| | And Run keyword and Expect Error | ICMP echo Rx timeout +| | ... | Verify route IPv6 | ${nodes['TG']} +| | ... | ${src_ip} | ${dst_ip} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if1_mac} + +*** Keywords *** +| Setup interfaces and neighbors for IPv4 routing test +| | Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | Import Variables | resources/test_data/honeycomb/routing.py +| | ... | ${nodes['DUT1']} | ipv4 | ${dut_to_tg_if2} +| | Setup vrf IDs | ${dut_node} | ${dut_to_tg_if1} | ${1} +| | Setup vrf IDs | ${dut_node} | ${dut_to_tg_if2} | ${1} +| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up +| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up +| | Honeycomb sets interface IPv4 address with prefix | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_len} +| | Honeycomb sets interface IPv4 address with prefix | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_len} +| | Honeycomb adds interface IPv4 neighbor | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${src_ip} | ${tg_to_dut_if1_mac} +| | Honeycomb adds interface IPv4 neighbor | ${dut_node} | ${dut_to_tg_if2} +| | ... | ${next_hop} | ${tg_to_dut_if2_mac} + +| Setup interfaces and neighbors for IPv6 routing test +| | Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | Import Variables | resources/test_data/honeycomb/routing.py +| | ... | ${nodes['DUT1']} | ipv6 | ${dut_to_tg_if2} +| | Honeycomb sets interface VRF ID +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${1} | ipv6 +| | Honeycomb sets interface VRF ID +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${1} | ipv6 +| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} | up +| | Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} | up +| | Honeycomb sets interface IPv6 address | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_len} +| | Honeycomb sets interface IPv6 address | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_len} +| | Honeycomb adds interface IPv6 neighbor | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${src_ip} | ${tg_to_dut_if1_mac} +| | Honeycomb adds interface IPv6 neighbor | ${dut_node} | ${dut_to_tg_if2} +| | ... | ${next_hop} | ${tg_to_dut_if2_mac} +| | Vpp all ra suppress link layer | ${nodes} + +| Honeycomb routing test teardown +| | ... +| | [arguments] | ${node} | ${routing_table} +| | ... +| | Show Packet Trace on All DUTs | ${nodes} +| | Log routing configuration from VAT | ${node} +| | Honeycomb removes routing configuration | ${node} | ${routing_table} + +| Setup vrf IDs +| | ... +| | [Arguments] | ${node} | ${interface} | ${vrf} +| | ... +| | Honeycomb sets interface VRF ID +| | ... | ${node} | ${interface} | ${vrf} | ipv4 +| | Honeycomb sets interface VRF ID +| | ... | ${node} | ${interface} | ${vrf} | ipv6 \ No newline at end of file diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-slaac-apihc-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-slaac-apihc-func.robot new file mode 100644 index 0000000000..3b5f365758 --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-slaac-apihc-func.robot @@ -0,0 +1,138 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +# Interface to run tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/slaac.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| ... +| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Force Tags | HC_FUNC +| ... +| Documentation | *Honeycomb SLAAC management test suite.* +| ... +| Variables | resources/test_data/honeycomb/slaac_variables.py + +*** Test Cases *** +| TC01: Honeycomb can configure SLAAC +| | [Documentation] | Checks if Honeycomb can congigure SLAAC. +| | ... +| | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node} +| | ... | ${interface} +| | And Honeycomb Configures Interface State | ${node} | ${interface} | up +| | And Honeycomb sets interface IPv6 address | ${node} | ${interface} +| | ... | ${address} | ${prefix} +| | When Honeycomb configures SLAAC | ${node} | ${interface} | ${slaac_data} +| | Then SLAAC Operational Data From Honeycomb Should Be | ${node} +| | ... | ${interface} | ${slaac_data} + +| TC02: Honeycomb can disable SLAAC +| | [Documentation] | Checks if Honeycomb can disable SLAAC. +| | ... +| | Given SLAAC Operational Data From Honeycomb Should Be | ${node} +| | ... | ${interface} | ${slaac_data} +| | When Honeycomb removes SLAAC configuration | ${node} | ${interface} +| | Then SLAAC Operational Data From Honeycomb Should Be empty | ${node} +| | ... | ${interface} + +| TC03: Honeycomb can configure SLAAC with suppress link layer disabled +| | [Documentation] | Checks if Honeycomb can congigure SLAAC. +| | ... +| | [Teardown] | SLAAC test teardown | ${node} | ${interface} +| | ... +| | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node} +| | ... | ${interface} +| | And Honeycomb Configures Interface State | ${node} | ${interface} | up +| | And Honeycomb sets interface IPv6 address | ${node} | ${interface} +| | ... | ${address} | ${prefix} +| | When Honeycomb configures SLAAC | ${node} | ${interface} | ${slaac_data} +| | Then SLAAC Operational Data From Honeycomb Should Be | ${node} +| | ... | ${interface} | ${slaac_data} + +| TC04: Honeycomb can configure SLAAC with sending RA packets disabled +| | [Documentation] | Checks if Honeycomb can configure SLAAC\ +| | ... | with given settings. +| | ... +| | [Teardown] | SLAAC test teardown | ${node} | ${interface} +| | ... +| | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node} +| | ... | ${interface} +| | And Honeycomb Configures Interface State | ${node} | ${interface} | up +| | And Honeycomb sets interface IPv6 address | ${node} | ${interface} +| | ... | ${address} | ${prefix} +| | When Honeycomb configures SLAAC | ${node} | ${interface} | ${slaac_data_01} +| | Then SLAAC Operational Data From Honeycomb Should Be | ${node} +| | ... | ${interface} | ${slaac_data_01} + +| TC05: Honeycomb can configure SLAAC with min interval values +| | [Documentation] | Checks if Honeycomb can configure SLAAC\ +| | ... | with given settings. +| | ... +| | [Teardown] | SLAAC test teardown | ${node} | ${interface} +| | ... +| | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node} +| | ... | ${interface} +| | And Honeycomb Configures Interface State | ${node} | ${interface} | up +| | And Honeycomb sets interface IPv6 address | ${node} | ${interface} +| | ... | ${address} | ${prefix} +| | When Honeycomb configures SLAAC | ${node} | ${interface} | ${slaac_data_02} +| | Then SLAAC Operational Data From Honeycomb Should Be | ${node} +| | ... | ${interface} | ${slaac_data_02} + +| TC06: Honeycomb can configure SLAAC with max interval values +| | [Documentation] | Checks if Honeycomb can configure SLAAC\ +| | ... | with given settings. +| | ... +| | [Teardown] | SLAAC test teardown | ${node} | ${interface} +| | ... +| | Given SLAAC Operational Data From Honeycomb Should Be empty | ${node} +| | ... | ${interface} +| | And Honeycomb Configures Interface State | ${node} | ${interface} | up +| | And Honeycomb sets interface IPv6 address | ${node} | ${interface} +| | ... | ${address} | ${prefix} +| | When Honeycomb configures SLAAC | ${node} | ${interface} | ${slaac_data_03} +| | Then SLAAC Operational Data From Honeycomb Should Be | ${node} +| | ... | ${interface} | ${slaac_data_03} + +| TC07: DUT retransmits RA on IPv6 enabled interface after a set interval +# Traffic test failing in VIRL +| | [Tags] | EXPECTED_FAILING +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Cfg] On DUT1 configure IPv6 interface on the link to TG. +| | ... | [Ver] Make TG wait for two IPv6 Router Advertisement packets\ +| | ... | to be sent by DUT1 and verify the received RA packets are correct. +| | ... +| | [Teardown] | SLAAC test teardown | ${dut_node} | ${dut_to_tg_if1} +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Honeycomb sets interface IPv6 address +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${address} | ${prefix} +| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} +| | ... | up +| | When Honeycomb configures SLAAC | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${slaac_data} +| | :FOR | ${n} | IN RANGE | ${2} +| | | Then Receive and verify router advertisement packet +| | | ... | ${tg_node} | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} | ${20} diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot new file mode 100644 index 0000000000..2ce02c6aa1 --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-snat44-apihc-apivat-func.robot @@ -0,0 +1,105 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables*** +| ${interface}= | ${node['interfaces']['port1']['name']} + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/nat.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Variables | resources/test_data/honeycomb/nat.py | ${node} | ${interface} +| ... +| Documentation | *Honeycomb NAT test suite.* +| ... +| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Force Tags | HC_FUNC + +*** Test Cases *** +| TC01: Honeycomb configures NAT entry +| | [Documentation] | Honeycomb configures a static NAT entry. +| | ... +| | Given NAT Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${nat_empty} +| | When Honeycomb Configures NAT Entry | ${node} | ${entry1} +| | Then NAT Entries From Honeycomb Should Be | ${node} | ${entry1} + +| TC02: Honeycomb removes NAT entry +| | [Documentation] | Honeycomb removes a configured static NAT entry. +| | ... +| | Given NAT Entries From Honeycomb Should Be | ${node} | ${entry1} +| | When Honeycomb Configures NAT Entry | ${node} | ${NONE} +| | Then NAT Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${nat_empty} + +| TC03: Honeycomb configures multiple NAT entries +| | [Documentation] | Honeycomb configures two static NAT entries. +| | ... +| | [Teardown] | Honeycomb Configures NAT Entry | ${node} | ${NONE} +| | ... +| | Given NAT Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${nat_empty} +| | When Honeycomb Configures NAT Entry | ${node} | ${entry1} | ${0} | ${1} +| | And Honeycomb Configures NAT Entry | ${node} | ${entry2} | ${0} | ${2} +| | Then NAT Entries From Honeycomb Should Be +| | ... | ${node} | ${entry1_2_oper} | ${0} + +| TC04: Honeycomb enables NAT on interface - inbound +| | [Documentation] | Honeycomb configures NAT on an interface\ +| | ... | in inbound direction. +| | ... +| | Given NAT Interface Operational Data From Honeycomb Should Be Empty +| | ... | ${node} | ${interface} | inbound +| | And NAT Interface Operational Data From Honeycomb Should Be Empty +| | ... | ${node} | ${interface} | outbound +| | When Honeycomb Configures NAT On Interface +| | ... | ${node} | ${interface} | inbound +| | Then NAT Interface Operational Data From Honeycomb Should Be +| | ... | ${node} | ${interface} | inbound +| | And NAT Interface Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${interface} | outbound + +| TC05: Honeycomb removes NAT interface configuration +| | [Documentation] | Honeycomb removes NAT configuration from an interface. +| | ... +| | Given NAT Interface Operational Data From Honeycomb Should Be +| | ... | ${node} | ${interface} | inbound +| | And NAT Interface Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${interface} | outbound +| | When Honeycomb removes NAT interface configuration +| | ... | ${node} | ${interface} | inbound +| | Then NAT Interface Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${interface} | inbound +| | And NAT Interface Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${interface} | outbound + +| TC06: Honeycomb enables NAT on interface - outbound +| | [Documentation] | Honeycomb configures NAT on an interface\ +| | ... | in outbound direction. +| | ... +| | [Teardown] | Honeycomb removes NAT interface configuration +| | ... | ${node} | ${interface} | outbound +| | ... +| | Given NAT Interface Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${interface} | inbound +| | And NAT Interface Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${interface} | outbound +| | When Honeycomb Configures NAT on Interface +| | ... | ${node} | ${interface} | outbound +| | Then NAT Interface Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${interface} | inbound +| | And NAT Interface Operational Data From Honeycomb Should Be +| | ... | ${node} | ${interface} | outbound diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot new file mode 100644 index 0000000000..2bad2d7507 --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-spanrx-apihc-apivat-func.robot @@ -0,0 +1,260 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/port_mirroring.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/sub_interface.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/telemetry/span.robot +| Variables | resources/test_data/honeycomb/span.py +| ... | ${node['interfaces']['port1']['name']} +| ... | ${node['interfaces']['port3']['name']} +| ... | local0 +| Variables | resources/test_data/honeycomb/sub_interfaces.py +| ... +| Force Tags | HC_FUNC +| ... +| Suite Setup | Run Keywords +| ... | Set Up Honeycomb Functional Test Suite | ${node} | AND +| ... | Add Interface local0 To Topology | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Documentation | *Honeycomb port mirroring test suite.* + +*** Test Cases *** +| TC01: Honeycomb can configure SPAN on an interface - receive +| | [Documentation] | Honeycomb configures SPAN on interface and verifies +| | ... | against VPP SPAN dump in state receive. +| | ... +| | When Honeycomb configures SPAN on interface +| | ... | ${node} | ${interface1} | ${settings_receive} +| | Then Interface SPAN Operational Data from Honeycomb should be +| | ... | ${node} | ${interface1} | ${settings_receive} + +| TC02: Honeycomb can configure SPAN on an interface - transmit +| | [Documentation] | Honeycomb configures SPAN on interface and verifies +| | ... | against VPP SPAN dump in state transmit. +| | ... +| | When Honeycomb configures SPAN on interface +| | ... | ${node} | ${interface1} | ${settings_transmit} +| | Then Interface SPAN Operational Data from Honeycomb should be +| | ... | ${node} | ${interface1} | ${settings_transmit} + +| TC03: Honeycomb can configure SPAN on an interface - both +| | [Documentation] | Honeycomb configures SPAN on interface and verifies +| | ... | against VPP SPAN dump in state both. +| | ... +| | When Honeycomb configures SPAN on interface +| | ... | ${node} | ${interface1} | ${settings_both} +| | Then Interface SPAN Operational Data from Honeycomb should be +| | ... | ${node} | ${interface1} | ${settings_both} + +| TC04: Honeycomb can configure SPAN on an interface with two source interfaces +| | [Documentation] | Honeycomb configures SPAN on interface and verifies +| | ... | against VPP SPAN dump in state both. +| | ... +| | When Honeycomb configures SPAN on interface +| | ... | ${node} | ${interface1} | ${settings_both} | ${settings_if2} +| | Then Interface SPAN Operational Data from Honeycomb should be +| | ... | ${node} | ${interface1} | ${settings_both} | ${settings_if2} + +| TC05: Honeycomb can disable SPAN on interface +| | [Documentation] | Honeycomb removes existing SPAN configuration +| | ... | from interface. +| | ... +| | Given Interface SPAN Operational Data from Honeycomb should be +| | ... | ${node} | ${interface1} | ${settings_both} | ${settings_if2} +| | When Honeycomb removes interface SPAN configuration +| | ... | ${node} | ${interface1} +| | Then Interface SPAN Operational Data from Honeycomb should be empty +| | ... | ${node} | ${interface1} + +| TC06: Honeycomb can configure SPAN with two destination interfaces from the same source +| | [Documentation] | Honeycomb configures SPAN on two interfaces and verifies +| | ... | against VPP SPAN dump. +| | ... +| | [Teardown] | Run Keywords +| | ... | Honeycomb removes interface SPAN configuration +| | ... | ${node} | ${interface1} | AND +| | ... | Honeycomb removes interface SPAN configuration +| | ... | ${node} | ${interface2} +| | ... +| | When Honeycomb configures SPAN on interface +| | ... | ${node} | ${interface1} | ${settings_if2} +| | And Honeycomb configures SPAN on interface +| | ... | ${node} | ${interface2} | ${settings_if2} +| | Then Interface SPAN Operational Data from Honeycomb should be +| | ... | ${node} | ${interface1} | ${settings_if2} +| | Then Interface SPAN Operational Data from Honeycomb should be +| | ... | ${node} | ${interface2} | ${settings_if2} + +| TC07: DUT mirrors IPv4 packets from one interface to another +# Pending rework +| | [Tags] | EXPECTED_FAILING +| | [Documentation] +| | ... | [Top] TG=DUT1 +| | ... | [Cfg] (using Honeycomb) On DUT1 configure IPv4 address and set SPAN\ +| | ... | mirroring from one DUT interface to the other. +| | ... | [Ver] Make TG send an ARP packet to DUT through one interface,\ +| | ... | then receive a copy of sent packet and of DUT's ARP reply\ +| | ... | on the second interface. +| | ... +| | [Teardown] | Run Keywords +| | ... | Show Packet Trace on All DUTs | ${nodes} | AND +| | ... | Honeycomb clears all interface IPv4 neighbors +| | ... | ${dut_node} | ${dut_to_tg_if1} | AND +| | ... | Honeycomb removes interface IPv4 addresses +| | ... | ${dut_node} | ${dut_to_tg_if1} | AND +| | ... | Honeycomb removes interface SPAN configuration +| | ... | ${node} | ${dut_to_tg_if2} +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} +| | ... | up +| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} +| | ... | up +| | And Honeycomb sets interface IPv4 address with prefix | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix} +| | And Honeycomb adds interface IPv4 neighbor | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if1_mac} +| | ${settings_5}= | create dictionary | state=both +| | ... | iface-ref=${dut_to_tg_if1} +| | And All Vpp Interfaces Ready Wait | ${nodes} +| | When Honeycomb configures SPAN on interface +| | ... | ${node} | ${dut_to_tg_if2} | ${settings_5} +| | Then Send Packet And Check Received Copies | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${dut_to_tg_if1_mac} | ${tg_to_dut_if2} +| | ... | ${tg_to_dut_if1_ip} | ${dut_to_tg_if1_ip} | ICMP + +| TC08: Honeycomb can configure SPAN on a sub-interface - receive +| | [Documentation] | Honeycomb configures SPAN on sub-interface and verifies +| | ... | against VPP SPAN dump in state receive. +| | ... +| | Given Honeycomb creates sub-interface | ${node} | ${interface1} +| | ... | ${sub_if_1_match} | ${sub_if_1_tags} | ${sub_if_1_settings} +| | When Honeycomb Configures SPAN on sub-interface +| | ... | ${node} | ${interface1} | ${1} | ${settings_receive} +| | Then sub-Interface SPAN Operational Data from Honeycomb should be +| | ... | ${node} | ${interface1} | ${1} | ${settings_receive} + +| TC09: Honeycomb can configure SPAN on a sub-interface - transmit +| | [Documentation] | Honeycomb configures SPAN on sub-interface and verifies +| | ... | against VPP SPAN dump in state transmit. +| | ... +| | Given Sub-interface state from Honeycomb should be +| | ... | ${node} | ${interface1} | ${1} | down | up +| | When Honeycomb Configures SPAN on sub-interface +| | ... | ${node} | ${interface1} | ${1} | ${settings_transmit} +| | Then sub-Interface SPAN Operational Data from Honeycomb should be +| | ... | ${node} | ${interface1} | ${1} | ${settings_transmit} + +| TC10: Honeycomb can configure SPAN on a sub-interface - both +| | [Documentation] | Honeycomb configures SPAN on sub-interface and verifies +| | ... | against VPP SPAN dump in state both. +| | ... +| | Given Sub-interface state from Honeycomb should be +| | ... | ${node} | ${interface1} | ${1} | down | up +| | When Honeycomb Configures SPAN on sub-interface +| | ... | ${node} | ${interface1} | ${1} | ${settings_both} +| | Then sub-Interface SPAN Operational Data from Honeycomb should be +| | ... | ${node} | ${interface1} | ${1} | ${settings_both} + +| TC11: Honeycomb can configure SPAN on a sub-interface with two source interfaces +| | [Documentation] | Honeycomb configures SPAN on sub-interface and verifies +| | ... | against VPP SPAN dump in state both. +| | ... +| | Given Sub-interface state from Honeycomb should be +| | ... | ${node} | ${interface1} | ${1} | down | up +| | When Honeycomb Configures SPAN on sub-interface +| | ... | ${node} | ${interface1} | ${1} | ${settings_both} | ${settings_if2} +| | Then sub-Interface SPAN Operational Data from Honeycomb should be +| | ... | ${node} | ${interface1} | ${1} | ${settings_both} | ${settings_if2} + +| TC12: Honeycomb can disable SPAN on interface +| | [Documentation] | Honeycomb removes existing SPAN configuration +| | ... | from sub-interface. +| | ... +| | Given Sub-interface state from Honeycomb should be +| | ... | ${node} | ${interface1} | ${1} | down | up +| | Given sub-Interface SPAN Operational Data from Honeycomb should be +| | ... | ${node} | ${interface1} | ${1} | ${settings_both} | ${settings_if2} +| | When Honeycomb removes sub-interface SPAN configuration +| | ... | ${node} | ${interface1} | ${1} +| | Then sub-Interface SPAN Operational Data from Honeycomb should be empty +| | ... | ${node} | ${interface1} | ${1} + +| TC13: Honeycomb can configure SPAN with two destination sub-interfaces from the same source +| | [Documentation] | Honeycomb configures SPAN on two sub-interfaces +| | ... | and verifies against VPP SPAN dump. +| | ... +| | [Teardown] | Run Keywords +| | ... | Honeycomb removes sub-interface SPAN configuration +| | ... | ${node} | ${interface1} | ${1} | AND +| | ... | Honeycomb removes sub-interface SPAN configuration +| | ... | ${node} | ${interface2} | ${1} +| | ... +| | Given Honeycomb creates sub-interface | ${node} | ${interface2} +| | ... | ${sub_if_2_match} | ${sub_if_2_tags} | ${sub_if_2_settings} +| | When Honeycomb Configures SPAN on sub-interface +| | ... | ${node} | ${interface1} | ${1} | ${settings_if2} +| | And Honeycomb Configures SPAN on sub-interface +| | ... | ${node} | ${interface2} | ${1} | ${settings_if2} +| | Then Sub-Interface SPAN Operational Data from Honeycomb should be +| | ... | ${node} | ${interface1} | ${1} | ${settings_if2} +| | Then Sub-Interface SPAN Operational Data from Honeycomb should be +| | ... | ${node} | ${interface2} | ${1} | ${settings_if2} + +| TC14: DUT mirrors IPv4 packets from an interface to a sub-interface +# Pending rework +| | [Tags] | EXPECTED_FAILING +| | [Documentation] +| | ... | [Top] TG=DUT1 +| | ... | [Cfg] (using Honeycomb) On DUT1 configure IPv4 address and set SPAN\ +| | ... | mirroring from one DUT interface to a sub-interface on the other\ +| | ... | interface. +| | ... | [Ver] Make TG send an ARP packet to DUT through one interface,\ +| | ... | then receive a copy of sent packet and of DUT's ARP reply\ +| | ... | on the sub-interface. +| | ... +| | [Teardown] | Show Packet Trace on All DUTs | ${nodes} +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Sub-interface state from Honeycomb should be +| | ... | ${dut_node} | ${interface1} | ${1} | down | up +| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if1} +| | ... | up +| | And Honeycomb configures interface state | ${dut_node} | ${dut_to_tg_if2} +| | ... | up +| | And Honeycomb sets the sub-interface up +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${1} +| | And Honeycomb sets interface IPv4 address with prefix | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix} +| | And And Honeycomb adds interface IPv4 neighbor +| | ... | ${dut_node} | ${dut_to_tg_if2} +| | ... | ${tg_to_dut_if2_ip} | ${tg_to_dut_if2_mac} +| | ${settings_5}= | create dictionary | state=both +| | ... | iface-ref=${dut_to_tg_if2} +| | And All Vpp Interfaces Ready Wait | ${nodes} +| | When Honeycomb Configures SPAN on sub-interface +| | ... | ${node} | ${dut_to_tg_if1} | ${1} | ${settings_5} +| | Then Send Packet And Check Received Copies | ${tg_node} +| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if2_mac} +| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if2_ip} | ${dut_to_tg_if2_ip} | ICMP diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot new file mode 100644 index 0000000000..e40f9ff9cd --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-vxlan-apihc-apivat-func.robot @@ -0,0 +1,139 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +# Interfaces to run tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} +| ${vx_interface}= | vx_tunnel_test +# Configuration which will be set and verified during tests. +| &{vxlan_settings}= | src=192.168.0.2 | dst=192.168.0.3 | vni=${88} +| ... | encap-vrf-id=${0} +| &{vxlan_settings2}= | src=192.168.0.4 | dst=192.168.0.5 | vni=${47} +| ... | encap-vrf-id=${0} +| &{vxlan_settings_ipv6}= | src=10::10 | dst=10::11 | vni=${88} +| ... | encap-vrf-id=${0} +| &{vxlan_settings_ipv6_long}= | src=10:0:0:0:0:0:0:10 | dst=10:0:0:0:0:0:0:11 +| ... | vni=${88} | encap-vrf-id=${0} + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/vxlan.robot +# import additional VxLAN settings from resource file +| Variables | resources/test_data/honeycomb/vxlan.py +| ... +| Force Tags | HC_FUNC +| ... +| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Documentation | *Honeycomb VxLAN management test suite.* + +*** Test Cases *** +| TC01: Honeycomb configures VxLAN tunnel +| | [Documentation] | Check if Honeycomb API can configure VxLAN settings. +| | ... +| | Given VxLAN Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vx_interface} +| | And VxLAN Operational Data From VAT Should Be empty | ${node} +| | When Honeycomb sets interface VxLAN configuration +| | ... | ${node} | ${vx_interface} | ${vxlan_settings} +| | Then VxLAN Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vx_interface} | ${vxlan_settings} +| | And VxLAN Operational Data From VAT Should Be +| | ... | ${node} | ${vxlan_settings} +| | ${vxlan_index}= | Get interface index from oper data +| | ... | ${node} | ${vx_interface} +| | Set Suite Variable | ${vxlan_index} + +| TC02: Honeycomb disables VxLAN tunnel +| | [Documentation] | Check if Honeycomb API can reset VxLAN configuration. +| | ... +| | Given VxLAN Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vx_interface} | ${vxlan_settings} +| | And Honeycomb should not show disabled interface in oper data +| | ... | ${node} | ${vxlan_index} +| | And VxLAN Operational Data From VAT Should Be +| | ... | ${node} | ${vxlan_settings} +| | When Honeycomb removes VxLAN tunnel settings | ${node} | ${vx_interface} +| | Then VxLAN Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vx_interface} +| | And Honeycomb should show disabled interface in oper data +| | ... | ${node} | ${vxlan_index} +| | And VxLAN Operational Data From VAT Should Be empty | ${node} + +| TC03: Honeycomb can configure VXLAN tunnel after one has been disabled +| | [Documentation] | Check if Honeycomb API can configure VxLAN settings again\ +| | ... | after previous settings have been removed. +| | ... +| | [Teardown] | Honeycomb removes VxLAN tunnel settings +| | ... | ${node} | ${vx_interface} +| | ... +| | Given VxLAN Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vx_interface} +| | And Honeycomb should show disabled interface in oper data +| | ... | ${node} | ${vxlan_index} +| | And VxLAN Operational Data From VAT Should Be empty | ${node} +| | When Honeycomb sets interface VxLAN configuration +| | ... | ${node} | ${vx_interface} | ${vxlan_settings2} +| | Then VxLAN Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vx_interface} | ${vxlan_settings2} +| | And Honeycomb should not show disabled interface in oper data +| | ... | ${node} | ${vxlan_index} +| | And VxLAN Operational Data From VAT Should Be +| | ... | ${node} | ${vxlan_settings2} + +| TC04: Honeycomb does not set VxLAN configuration on another interface type +| | [Documentation] | Check if Honeycomb API prevents setting VxLAN\ +| | ... | on incorrect interface. +| | ... +| | Given VxLAN Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${interface} +| | And VxLAN Operational Data From VAT Should Be empty | ${node} +| | When Honeycomb fails setting VxLan on different interface type +| | ... | ${node} | ${interface} | ${vxlan_settings2} +| | Then VxLAN Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${interface} +| | And VxLAN Operational Data From VAT Should Be empty +| | ... | ${node} + +| TC05: Honeycomb does not set invalid VxLAN configuration +| | [Documentation] | Check if Honeycomb API prevents setting incorrect VxLAN\ +| | ... | settings. +| | ... +| | Given VxLAN Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vx_interface} +| | And VxLAN Operational Data From VAT Should Be empty | ${node} +| | When Honeycomb fails setting invalid VxLAN configuration +| | ... | ${node} | ${vx_interface} | ${vxlan_invalid} +| | Then VxLAN Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vx_interface} + +| TC06: Honeycomb configures VxLAN tunnel with ipv6 +| | [Documentation] | Check if Honeycomb API can configure VxLAN with\ +| | ... | ipv6 settings. +| | ... +| | [Teardown] | Honeycomb removes VxLAN tunnel settings +| | ... | ${node} | ${vx_interface} +| | ... +| | Given VxLAN Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vx_interface} +| | And VxLAN Operational Data From VAT Should Be empty | ${node} +| | When Honeycomb sets interface VxLAN configuration +| | ... | ${node} | ${vx_interface} | ${vxlan_settings_ipv6} +| | Then VxLAN Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vx_interface} | ${vxlan_settings_ipv6_long} +| | And VxLAN Operational Data From VAT Should Be +| | ... | ${node} | ${vxlan_settings_ipv6} diff --git a/tests/vpp/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot b/tests/vpp/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot new file mode 100644 index 0000000000..680baf1130 --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-cfg-vxlangpe-apihc-apivat-func.robot @@ -0,0 +1,168 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +# Interface to run tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} + +# Parameters to be set on existing interface +| ${vxlan_gpe_existing_if}= | ${interface} +| &{vxlan_gpe_base_wrong_interface_settings}= +| ... | name=${vxlan_gpe_existing_if} +| ... | type=iana-if-type:ethernetCsmacd +| ... | description=for testing purposes +| ... | enabled=true +| ... | link-up-down-trap-enable=enabled +| &{vxlan_gpe_wrong_interface_settings}= +| ... | local=192.168.50.77 +| ... | remote=192.168.50.72 +| ... | vni=${9} +| ... | next-protocol=wrong_ipv4 +| ... | encap-vrf-id=${0} +| ... | decap-vrf-id=${0} + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/vxlan_gpe.robot +# Import additional VxLAN GPE settings from resource file +| Variables | resources/test_data/honeycomb/vxlan_gpe.py +| ... +| Documentation | *Honeycomb VxLAN-GPE management test suite.* +| ... +| Suite Setup | Set Up Honeycomb Functional Test Suite | ${node} +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +# Disabled due to VPP-875: Configuring VxLAN GPE tunnel crashes VPP +#| Force Tags | HC_FUNC + +*** Test Cases *** +| TC01: Honeycomb creates VxLAN GPE tunnel +| | [Documentation] | Check if Honeycomb API can configure a VxLAN GPE tunnel. +| | ... +| | Given interface Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vxlan_gpe_if1} +| | And interface Operational Data From VAT Should Be empty +| | ... | ${node} | ${vxlan_gpe_if1} +| | When Honeycomb creates VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if1} +| | ... | ${vxlan_gpe_base_settings} | ${vxlan_gpe_settings} +| | Then VxLAN GPE Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vxlan_gpe_if1} +| | ... | ${vxlan_gpe_base_settings} | ${vxlan_gpe_settings} +| | And VxLAN GPE Operational Data From VAT Should Be +| | ... | ${node} | ${vxlan_gpe_if1} | ${vxlan_gpe_settings} +| | And VxLAN GPE Interface indices from Honeycomb and VAT should correspond +| | ... | ${node} | ${vxlan_gpe_if1} + +| TC02: Honeycomb removes VxLAN GPE tunnel +| | [Documentation] | Check if Honeycomb API can remove VxLAN GPE tunnel. +| | ... +| | Given VxLAN GPE Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vxlan_gpe_if1} +| | ... | ${vxlan_gpe_base_settings} | ${vxlan_gpe_settings} +| | VxLAN GPE Operational Data From VAT Should Be +| | ... | ${node} | ${vxlan_gpe_if1} | ${vxlan_gpe_settings} +| | When Honeycomb removes VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if1} +| | Then VxLAN GPE Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vxlan_gpe_if1} +| | And VxLAN GPE Operational Data From VAT Should Be empty +| | ... | ${node} + +| TC03: Honeycomb sets wrong interface type while creating VxLAN GPE tunnel +| | [Documentation] | Check if Honeycomb refuses to create a VxLAN GPE tunnel\ +| | ... | with a wrong interface type set. +| | ... +| | Given interface Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vxlan_gpe_if2} +| | And interface Operational Data From VAT Should Be empty +| | ... | ${node} | ${vxlan_gpe_if2} +| | When Honeycomb fails to create VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if2} +| | ... | ${vxlan_gpe_wrong_type_base_settings} | ${vxlan_gpe_settings} +| | Then interface Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vxlan_gpe_if2} +| | And interface Operational Data From VAT Should Be empty +| | ... | ${node} | ${vxlan_gpe_if2} + +| TC04: Honeycomb sets wrong protocol while creating VxLAN GPE tunnel +| | [Documentation] | Check if Honeycomb refuses to create a VxLAN GPE tunnel\ +| | ... | with a wrong next-protocol set. +| | ... +| | Given interface Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vxlan_gpe_if3} +| | And interface Operational Data From VAT Should Be empty +| | ... | ${node} | ${vxlan_gpe_if3} +| | When Honeycomb fails to create VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if3} +| | ... | ${vxlan_gpe_wrong_protocol_base_settings} +| | ... | ${vxlan_gpe_wrong_protocol_settings} +| | Then interface Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vxlan_gpe_if3} +| | And interface Operational Data From VAT Should Be empty +| | ... | ${node} | ${vxlan_gpe_if3} + +| TC05: Honeycomb sets VxLAN GPE tunnel on existing interface with wrong type +| | [Documentation] | Check if Honeycomb refuses to create a VxLAN GPE tunnel\ +| | ... | on existing interface with wrong type. +| | ... +| | Given VxLAN GPE Operational Data From VAT Should Be empty +| | ... | ${node} +| | When Honeycomb fails to create VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_existing_if} +| | ... | ${vxlan_gpe_base_wrong_interface_settings} +| | ... | ${vxlan_gpe_wrong_interface_settings} +| | Then VxLAN GPE Operational Data From VAT Should Be empty +| | ... | ${node} + +| TC06: Honeycomb creates VxLAN GPE tunnel with ipv6 +| | [Documentation] | Check if Honeycomb API can configure a VxLAN GPE tunnel\ +| | ... | with IPv6 addresses. +| | ... +| | Given VxLAN GPE Operational Data From VAT Should Be empty +| | ... | ${node} +| | And VxLAN GPE Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vxlan_gpe_if5} +| | When Honeycomb creates VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if5} +| | ... | ${vxlan_gpe_base_ipv6_settings} | ${vxlan_gpe_ipv6_settings} +| | Then VxLAN GPE Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vxlan_gpe_if5} +| | ... | ${vxlan_gpe_base_ipv6_settings} | ${vxlan_gpe_ipv6_settings} +| | And Run Keyword And Continue On Failure +| | ... | VxLAN GPE Operational Data From VAT Should Be +| | ... | ${node} | ${vxlan_gpe_if5} | ${vxlan_gpe_ipv6_settings} +| | And VxLAN GPE Interface indices from Honeycomb and VAT should correspond +| | ... | ${node} | ${vxlan_gpe_if5} + +| TC07: Honeycomb creates a second VxLAN GPE tunnel with ipv6 +| | [Documentation] | Check if Honeycomb API can configure another VxLAN\ +| | ... | GPE tunnel with IPv6 addresses. +| | ... +| | Given interface Operational Data From Honeycomb Should Be empty +| | ... | ${node} | ${vxlan_gpe_if6} +| | And interface Operational Data From VAT Should Be empty +| | ... | ${node} | ${vxlan_gpe_if6} +| | When Honeycomb creates VxLAN GPE interface +| | ... | ${node} | ${vxlan_gpe_if6} +| | ... | ${vxlan_gpe_base_ipv6_settings2} | ${vxlan_gpe_ipv6_settings2} +| | Then VxLAN GPE Operational Data From Honeycomb Should Be +| | ... | ${node} | ${vxlan_gpe_if6} +| | ... | ${vxlan_gpe_base_ipv6_settings2} | ${vxlan_gpe_ipv6_settings2} +| | And VxLAN GPE Operational Data From VAT Should Be +| | ... | ${node} | ${vxlan_gpe_if6} | ${vxlan_gpe_ipv6_settings2} +| | And VxLAN GPE Interface indices from Honeycomb and VAT should correspond +| | ... | ${node} | ${vxlan_gpe_if6} diff --git a/tests/vpp/func/honeycomb/mgmt-notif-apihcnc-func.robot b/tests/vpp/func/honeycomb/mgmt-notif-apihcnc-func.robot new file mode 100644 index 0000000000..5320a7fcb7 --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-notif-apihcnc-func.robot @@ -0,0 +1,68 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables *** +# Interfaces to run tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} +| ${tap_interface}= | tap_test +| &{tap_settings}= | tap-name=tap_test | mac=08:00:27:c0:5d:37 +| ... | device-instance=${1} + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/honeycomb.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/tap.robot +| Resource | resources/libraries/robot/honeycomb/notifications.robot +| ... +| Documentation | *Honeycomb notifications test suite.* +| ... +| Suite Setup | Set Up Honeycomb Notifications Functional Test Suite +| ... +| Suite Teardown | Tear Down Honeycomb Functional Test Suite | ${node} +| ... +| Force Tags | HC_FUNC + +*** Test Cases *** +| TC01: Honeycomb sends notification on interface state change +| | [Documentation] | Check if Honeycomb sends a state-changed notification\ +| | ... | when the state of an interface is changed. +| | ... +| | Given Interface state from Honeycomb should be +| | ... | ${node} | ${interface} | down +| | And Interface state from VAT should be | ${node} | ${interface} | down +| | And Notification listener should be established | ${node} +| | When Honeycomb configures interface state | ${node} | ${interface} | up +| | Then Honeycomb should send interface state notification | ${interface} | up +| | When Honeycomb configures interface state | ${node} | ${interface} | down +| | And Honeycomb should send interface state notification | ${interface} | down + +| TC02: Honeycomb sends notification on interface deletion +| | [Documentation] | Check if Honeycomb sends an interface-deleted notification +| | ... | when an interface is deleted. +| | ... +| | Given TAP Operational Data From Honeycomb Should Be +| | ... | ${node} | ${tap_interface} | ${tap_settings} +| | And TAP Operational Data From VAT Should Be +| | ... | ${node} | ${tap_interface} | ${tap_settings} +| | And Notification listener should be established | ${node} +| | When Honeycomb removes TAP interface | ${node} | ${tap_interface} +| | Then Honeycomb should send interface deleted notification | ${tap_interface} + +*** Keywords *** +| Set Up Honeycomb Notifications Functional Test Suite +| | Set Up Honeycomb Functional Test Suite | ${node} +| | Honeycomb configures interface state +| | ... | ${node} | ${interface} | down +| | Honeycomb creates TAP interface +| | ... | ${node} | ${tap_interface} | ${tap_settings} \ No newline at end of file diff --git a/tests/vpp/func/honeycomb/mgmt-statepersist-apihc-func.robot b/tests/vpp/func/honeycomb/mgmt-statepersist-apihc-func.robot new file mode 100644 index 0000000000..1d3ce02e05 --- /dev/null +++ b/tests/vpp/func/honeycomb/mgmt-statepersist-apihc-func.robot @@ -0,0 +1,169 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Variables*** +# Interface to run tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/honeycomb/persistence.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/bridge_domain.robot +| Resource | resources/libraries/robot/honeycomb/l2_fib.robot +| ... +| Suite Setup | Run Keywords +| ... | Configure Persistence | ${node} | enable | AND +| ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| ... +| Suite Teardown | Configure Persistence | ${node} | disable +| ... +| Force Tags | HC_PERSIST | HC_REST_ONLY +| ... +| Documentation | *Honeycomb configuration persistence test suite.* + +*** Test Cases *** +# multi-feature cases +# =================== +| TC01: Honeycomb persists configuration through restart of both Honeycomb and VPP +| | [Documentation] | Checks if Honeycomb maintains configuration after both\ +| | ... | Restart Honeycomb and VPP. +| | ... +# Failing due to HC2VPP-47 +| | [Tags] | HC_FUNC | EXPECTED_FAILING +| | ... +| | [Teardown] +| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| | ... +| | Given Multi-Feature Persistence test configuration | ${node} | ${interface} +| | And Multi-Feature persistence Test Verification | ${node} | ${interface} +| | And Log persisted configuration on node | ${node} +| | When Restart Honeycomb and VPP in pesistence test | ${node} +| | Then Multi-Feature persistence Test Verification | ${node} | ${interface} + +| TC02: Honeycomb reverts to defaults if persistence files are invalid +| | [Documentation] | Checks if Honeycomb reverts to default configuration when\ +| | ... | persistence files are damaged or invalid. +| | ... +| | [Tags] | HC_FUNC +| | ... +| | [Teardown] +| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| | ... +| | Given Multi-Feature Persistence test configuration | ${node} | ${interface} +| | And Multi-Feature persistence Test Verification | ${node} | ${interface} +| | When Persistence file is damaged during restart | ${node} +| | Then Honeycomb and VPP should have default configuration | ${node} + +| TC03: Honeycomb persists configuration through restart of Honeycomb +| | [Documentation] | Checks if Honeycomb maintains configuration after it\ +| | ... | is restarted. +| | ... +| | [Teardown] +| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| | ... +| | Given Multi-Feature Persistence test configuration | ${node} | ${interface} +| | And Multi-Feature persistence Test Verification | ${node} | ${interface} +| | And Log persisted configuration on node | ${node} +| | When Restart Honeycomb | ${node} +| | Then Multi-Feature persistence Test Verification | ${node} | ${interface} + +| TC04: Honeycomb persists configuration through restart of VPP +| | [Documentation] | Checks if Honeycomb updates VPP settings after VPP is\ +| | ... | restarted. +| | ... +| | [Teardown] +| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| | ... +| | Given Multi-Feature Persistence test configuration | ${node} | ${interface} +| | And Multi-Feature persistence Test Verification | ${node} | ${interface} +| | And Log persisted configuration on node | ${node} +| | When Restart VPP | ${node} +| | Then Multi-Feature persistence Test Verification | ${node} | ${interface} + +# single-feature cases +# ==================== + +| TC05: Persist configuration of IP addresses and neighbors - HC and VPP restart +| | [Documentation] | Verify persistence of interface state, IPv4 address +| | ... | and neighbor entries through restart of both Honeycomb and VPP. +| | ... +| | [Teardown] +| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| | ... +| | Given Interface Persistence Setup | ${node} +| | And Interface Persistence Check | ${node} +| | When Restart Honeycomb and VPP in pesistence test | ${node} +| | Then Interface Persistence Check | ${node} + +| TC06: Persist configuration of IP addresses and neighbors - HC restart +| | [Documentation] | Verify persistence of interface state, IPv4 address +| | ... | and neighbor entries through restart of Honeycomb. +| | ... +| | [Teardown] +| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| | ... +| | Given Interface Persistence Setup | ${node} +| | And Interface Persistence Check | ${node} +| | When Restart Honeycomb | ${node} +| | Then Interface Persistence Check | ${node} + +| TC07: Persist configuration of IP addresses and neighbors - VPP restart +| | [Documentation] | Verify persistence of interface state, IPv4 address +| | ... | and neighbor entries through restart of VPP. +| | ... +| | [Teardown] +| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| | ... +| | Given Interface Persistence Setup | ${node} +| | And Interface Persistence Check | ${node} +| | When Restart VPP | ${node} +| | Then Interface Persistence Check | ${node} + +| TC08: Honeycomb persists configuration of bridge domains - HC and VPP restart +| | [Documentation] | Verify persistence of bridge domain, L2-FIB entry +| | ... | and Bridge domain Operational Interface Assignment through restart +| | ... | of both Honeycomb and VPP. +| | ... +| | [Teardown] +| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| | ... +| | Given Bridge Domain Persistence Setup | ${node} +| | When Restart Honeycomb and VPP in pesistence test | ${node} +| | Then Bridge Domain Persistence Check | ${node} + +| TC09: Honeycomb persists configuration of bridge domains - HC restart +| | [Documentation] | Verify persistence of bridge domain, L2-FIB entry +| | ... | and Bridge domain Operational Interface Assignment through restart +| | ... | of Honeycomb. +| | ... +| | [Teardown] +| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| | ... +| | Given Bridge Domain Persistence Setup | ${node} +| | When Restart Honeycomb | ${node} +| | Then Bridge Domain Persistence Check | ${node} + +| TC10: Honeycomb persists configuration of bridge domains - VPP restart +| | [Documentation] | Verify persistence of bridge domain, L2-FIB entry +| | ... | and Bridge domain Operational Interface Assignment through restart +| | ... | of VPP. +| | ... +| | [Teardown] +| | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} +| | ... +| | Given Bridge Domain Persistence Setup | ${node} +| | When Restart VPP | ${node} +| | Then Bridge Domain Persistence Check | ${node} + +#TODO: All other features diff --git a/tests/vpp/func/interfaces/api-crud-tap-func.robot b/tests/vpp/func/interfaces/api-crud-tap-func.robot new file mode 100644 index 0000000000..8116f9d60d --- /dev/null +++ b/tests/vpp/func/interfaces/api-crud-tap-func.robot @@ -0,0 +1,72 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.Tap +| Library | resources.libraries.python.Namespaces +| Library | resources.libraries.python.IPUtil +| ... +| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO +| ... +| Test Setup | Set up TAP functional test +| ... +| Test Teardown | Tear down TAP functional test +| ... +| Documentation | *Tap Interface CRUD Tests* +| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links +| ... | between nodes. +| ... | *[Enc] Packet Encapsulations:* No packet sent. +| ... | *[Cfg] DUT configuration:* Add/Modify/Delete linux-TAP on DUT1. +| ... | *[Ver] Verification:* Check dump of tap interfaces for correctness. +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| ${tap_int1}= | tap_int1 +| ${tap_int2}= | tap_int2 +| ${mod_tap_name}= | tap_int1MOD + +*** Test Cases *** +| TC01: Tap Interface Modify And Delete +| | [Documentation] +| | ... | [Top] TG-DUT1-TG. +| | ... | [Enc] Eth-IPv4-ICMPv4. +| | ... | [Cfg] Set two TAP interfaces. +| | ... | [Ver] Verify that TAP interface can be modified, deleted, and no\ +| | ... | other TAP interface is affected. +| | ... +| | Given Configure path in 2-node circular topology | ${nodes['TG']} +| | ... | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1} +| | ${int2}= | And Add Tap Interface | ${dut_node} | ${tap_int2} +| | And Set Interface State | ${dut_node} | ${int1} | up +| | And Set Interface State | ${dut_node} | ${int2} | up +| | When Modify Tap Interface | ${dut_node} | ${int1} | ${mod_tap_name} +| | Then Check Tap Present | ${dut_node} | ${mod_tap_name} +| | When Delete Tap Interface | ${dut_node} | ${int1} +| | Then Run Keyword And Expect Error +| | ... | Tap interface :${mod_tap_name} does not exist +| | ... | Check Tap Present | ${dut_node} | ${mod_tap_name} +| | And Check Tap Present | ${dut_node} | ${tap_int2} +| | When Delete Tap Interface | ${dut_node} | ${int2} +| | Then Run Keyword And Expect Error +| | ... | ValueError: No JSON object could be decoded +| | ... | Check Tap Present | ${dut_node} | ${tap_int2} diff --git a/tests/vpp/func/interfaces/eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot b/tests/vpp/func/interfaces/eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot new file mode 100644 index 0000000000..3b69f05698 --- /dev/null +++ b/tests/vpp/func/interfaces/eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot @@ -0,0 +1,88 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.Tap +| Library | resources.libraries.python.Namespaces +| Library | resources.libraries.python.IPUtil +| ... +| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO +| ... +| Test Setup | Set up TAP functional test +| ... +| Test Teardown | Tear down TAP functional test with Linux bridge | ${bid_TAP} +| ... +| Documentation | *Tap Interface Traffic Tests* +| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links +| ... | between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of +| ... | IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | bridge-domain (L2BD) MAC learning enabled; Split Horizon Groups (SHG) +| ... | are set depending on test case; Namespaces (NM) +| ... | are set on DUT1 with attached linux-TAP. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets +| ... | are sent by TG on link to DUT1; On receipt TG verifies packets +| ... | for correctness and their IPv4 src-addr, dst-addr, and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| ${bid_from_TG}= | 19 +| ${bid_to_TG}= | 20 +| ${bid_TAP}= | tapBr + +| ${tap_int1}= | tap_int1 +| ${tap_int2}= | tap_int2 + +*** Test Cases *** +| TC01: Tap Interface Simple BD +| | [Documentation] +| | ... | [Top] TG-DUT1-TG. +| | ... | [Enc] Eth-IPv4-ICMPv4. +| | ... | [Cfg] On DUT1 configure two L2BD with two if's for each L2BD with MAC\ +| | ... | learning and one L2BD joining two linux-TAP interfaces created by VPP\ +| | ... | located in namespace. +| | ... | [Ver] Packet sent from TG is passed through all L2BD and received\ +| | ... | back on TG. Then src_ip, dst_ip and MAC are checked. +| | ... +| | Given Configure path in 2-node circular topology | ${nodes['TG']} +| | ... | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1} +| | ${int2}= | And Add Tap Interface | ${dut_node} | ${tap_int2} +| | And Set Interface State | ${dut_node} | ${int1} | up +| | And Set Interface State | ${dut_node} | ${int2} | up +| | And Create bridge domain | ${dut_node} +| | ... | ${bid_from_TG} | learn=${TRUE} +| | And Create bridge domain | ${dut_node} +| | ... | ${bid_to_TG} | learn=${TRUE} +| | And Linux Add Bridge | ${dut_node} +| | ... | ${bid_TAP} | ${tap_int1} | ${tap_int2} +| | And Add interface to bridge domain | ${dut_node} +| | ... | ${int1} | ${bid_to_TG} | 0 +| | And Add interface to bridge domain | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${bid_to_TG} | 0 +| | And Add interface to bridge domain | ${dut_node} +| | ... | ${int2} | ${bid_from_TG} | 0 +| | And Add interface to bridge domain | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${bid_from_TG} | 0 +| | Then Send ICMP packet and verify received packet | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2} diff --git a/tests/vpp/func/interfaces/eth2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot b/tests/vpp/func/interfaces/eth2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot new file mode 100644 index 0000000000..515596b147 --- /dev/null +++ b/tests/vpp/func/interfaces/eth2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot @@ -0,0 +1,176 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.Tap +| Library | resources.libraries.python.Namespaces +| Library | resources.libraries.python.IPUtil +| ... +| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO +| ... +| Test Setup | Set up TAP functional test +| ... +| Test Teardown | Tear down TAP functional test +| ... +| Documentation | *Tap Interface Traffic Tests* +| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links +| ... | between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of +| ... | IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | bridge-domain (L2BD) MAC learning enabled; Split Horizon Groups (SHG) +| ... | are set depending on test case; Namespaces (NM) +| ... | are set on DUT1 with attached linux-TAP. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets +| ... | are sent by TG on link to DUT1; On receipt TG verifies packets +| ... | for correctness and their IPv4 src-addr, dst-addr, and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| ${tap1_NM_ip}= | 16.0.10.2 +| ${tap2_NM_SHG}= | 16.0.10.3 + +| ${bd_id1}= | 21 +| ${shg1}= | 2 +| ${shg2}= | 3 + +| ${tap1_NM_mac}= | 02:00:00:00:00:02 +| ${tap2_NM_mac}= | 02:00:00:00:00:04 + +| ${tap_int1}= | tap_int1 +| ${tap_int2}= | tap_int2 + +| ${namespace1}= | nmspace1 +| ${namespace2}= | nmspace2 + +| ${tg_ip_address_SHG}= | 16.0.10.20 +| ${prefix}= | 24 + +*** Test Cases *** +| TC01: Tap Interface BD - Different Split Horizon +| | [Documentation] +| | ... | [Top] TG-DUT1-TG. +| | ... | [Enc] Eth-IPv4-ICMPv4. +| | ... | [Cfg] On DUT1 configure one if into L2BD with MAC learning. Add two\ +| | ... | TAP interfaces into this L2BD and assign them different SHG. Setup\ +| | ... | two namespaces and assign two linux-TAP interfaces to it respectively. +| | ... | [Ver] Packet is sent from TG to both linux-TAP interfaces and reply\ +| | ... | is checked. Ping from First linux-TAP to another should pass. +| | ... +| | Given Configure path in 2-node circular topology | ${nodes['TG']} +| | ... | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1} +| | ${int2}= | And Add Tap Interface | ${dut_node} | ${tap_int2} +| | And Set Interface State | ${dut_node} | ${int1} | up +| | And Set Interface State | ${dut_node} | ${int2} | up +| | When Create Namespace | ${dut_node} | ${namespace1} +| | And Attach Interface To Namespace | ${dut_node} +| | ... | ${namespace1} | ${tap_int1} +| | And Create Namespace | ${dut_node} | ${namespace2} +| | And Attach Interface To Namespace | ${dut_node} +| | ... | ${namespace2} | ${tap_int2} +| | And Set Linux Interface IP | ${dut_node} | ${tap_int1} +| | ... | ${tap1_NM_ip} | ${prefix} | ${namespace1} +| | And Set Linux Interface IP | ${dut_node} | ${tap_int2} +| | ... | ${tap2_NM_SHG} | ${prefix} | ${namespace2} +| | And Set Linux Interface MAC | ${dut_node} +| | ... | ${tap_int1} | ${tap1_NM_mac} | ${namespace1} +| | And Set Linux Interface MAC | ${dut_node} +| | ... | ${tap_int2} | ${tap2_NM_mac} | ${namespace2} +| | And Set Linux Interface ARP | ${dut_node} | ${tap_int1} +| | ... | ${tg_ip_address_SHG} | ${tg_to_dut_if1_mac} | ${namespace1} +| | And Set Linux Interface ARP | ${dut_node} | ${tap_int2} +| | ... | ${tg_ip_address_SHG} | ${tg_to_dut_if1_mac} | ${namespace2} +| | And Create bridge domain | ${dut_node} +| | ... | ${bd_id1} | learn=${TRUE} +| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut_node} | ${int1} +| | ... | ${bd_id1} | ${shg1} +| | And Add interface to bridge domain | ${dut_node} | ${int2} +| | ... | ${bd_id1} | ${shg2} +| | Then Send ICMP echo request and verify answer | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${tap1_NM_mac} | ${tg_to_dut_if1_mac} +| | ... | ${tap1_NM_ip} | ${tg_ip_address_SHG} +| | And Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${tap2_NM_mac} | ${tg_to_dut_if1_mac} +| | ... | ${tap2_NM_SHG} | ${tg_ip_address_SHG} +| | And Send Ping From Node To Dst | ${dut_node} | ${tap1_NM_ip} +| | ... | namespace=${namespace2} +| | And Send Ping From Node To Dst | ${dut_node} | ${tap2_NM_SHG} +| | ... | namespace=${namespace1} + +| TC02: Tap Interface BD - Same Split Horizon +| | [Documentation] +| | ... | [Top] TG-DUT1-TG. +| | ... | [Enc] Eth-IPv4-ICMPv4. +| | ... | [Cfg] On DUT1 configure one if into L2BD with MAC learning. Add two\ +| | ... | TAP interfaces into this L2BD and assign them same SHG. Setup two\ +| | ... | namespaces and assign two linux-TAP interfaces to it respectively. +| | ... | [Ver] Packet is sent from TG to both linux-TAP interfaces and reply\ +| | ... | is checked. Ping from First linux-TAP to another should fail. +| | ... +| | Given Configure path in 2-node circular topology | ${nodes['TG']} +| | ... | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1} +| | ${int2}= | And Add Tap Interface | ${dut_node} | ${tap_int2} +| | And Set Interface State | ${dut_node} | ${int1} | up +| | And Set Interface State | ${dut_node} | ${int2} | up +| | When Create Namespace | ${dut_node} | ${namespace1} +| | And Attach Interface To Namespace | ${dut_node} +| | ... | ${namespace1} | ${tap_int1} +| | And Create Namespace | ${dut_node} | ${namespace2} +| | And Attach Interface To Namespace | ${dut_node} +| | ... | ${namespace2} | ${tap_int2} +| | And Set Linux Interface IP | ${dut_node} | ${tap_int1} +| | ... | ${tap1_NM_ip} | ${prefix} | ${namespace1} +| | And Set Linux Interface IP | ${dut_node} | ${tap_int2} +| | ... | ${tap2_NM_SHG} | ${prefix} | ${namespace2} +| | And Set Linux Interface MAC | ${dut_node} +| | ... | ${tap_int1} | ${tap1_NM_mac} | ${namespace1} +| | And Set Linux Interface MAC | ${dut_node} +| | ... | ${tap_int2} | ${tap2_NM_mac} | ${namespace2} +| | And Set Linux Interface ARP | ${dut_node} | ${tap_int1} +| | ... | ${tg_ip_address_SHG} | ${tg_to_dut_if1_mac} | ${namespace1} +| | And Set Linux Interface ARP | ${dut_node} | ${tap_int2} +| | ... | ${tg_ip_address_SHG} | ${tg_to_dut_if1_mac} | ${namespace2} +| | And Create bridge domain | ${dut_node} +| | ... | ${bd_id1} | learn=${TRUE} +| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut_node} | ${int1} +| | ... | ${bd_id1} | ${shg1} +| | And Add interface to bridge domain | ${dut_node} | ${int2} +| | ... | ${bd_id1} | ${shg1} +| | Then Send ICMP echo request and verify answer | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${tap1_NM_mac} | ${tg_to_dut_if1_mac} +| | ... | ${tap1_NM_ip} | ${tg_ip_address_SHG} +| | And Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${tap2_NM_mac} | ${tg_to_dut_if1_mac} +| | ... | ${tap2_NM_SHG} | ${tg_ip_address_SHG} +| | And Run Keyword And Expect Error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${dut_node} | ${tap2_NM_SHG} +| | ... | namespace=${namespace1} +| | And Run Keyword And Expect Error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${dut_node} | ${tap1_NM_ip} +| | ... | namespace=${namespace2} diff --git a/tests/vpp/func/interfaces/eth2p-ethip4-ip4base-eth-1tap-func.robot b/tests/vpp/func/interfaces/eth2p-ethip4-ip4base-eth-1tap-func.robot new file mode 100644 index 0000000000..a870b89d1d --- /dev/null +++ b/tests/vpp/func/interfaces/eth2p-ethip4-ip4base-eth-1tap-func.robot @@ -0,0 +1,126 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.Tap +| Library | resources.libraries.python.Namespaces +| Library | resources.libraries.python.IPUtil +| ... +| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO +| ... +| Test Setup | Set up TAP functional test +| ... +| Test Teardown | Tear down TAP functional test +| ... +| Documentation | *Tap Interface Traffic Tests* +| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links +| ... | between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of +| ... | IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | bridge-domain (L2BD) MAC learning enabled; Split Horizon Groups (SHG) +| ... | are set depending on test case; Namespaces (NM) +| ... | are set on DUT1 with attached linux-TAP. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets +| ... | are sent by TG on link to DUT1; On receipt TG verifies packets +| ... | for correctness and their IPv4 src-addr, dst-addr, and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| ${tap1_VPP_ip}= | 16.0.10.1 +| ${tap1_NM_ip}= | 16.0.10.2 +| ${tap1_NM_mac}= | 02:00:00:00:00:02 +| ${tap_int1}= | tap_int1 + +| ${namespace1}= | nmspace1 + +| ${dut_ip_address}= | 192.168.0.1 +| ${tg_ip_address}= | 192.168.0.2 +| ${tg_ip_address_GW}= | 192.168.0.0 +| ${prefix}= | 24 + +*** Test Cases *** +| TC01: Tap Interface IP Ping Without Namespace +| | [Documentation] +| | ... | [Top] TG-DUT1-TG. +| | ... | [Enc] Eth-IPv4-ICMPv4. +| | ... | [Cfg] On DUT1 configure two interface addresses with IPv4 of which\ +| | ... | one is TAP interface (dut_to_tg_if and TAP) and one is linux-TAP. +| | ... | [Ver] Packet sent from TG gets to the destination and ICMP-reply is\ +| | ... | received on TG. +| | ... +| | Given Configure path in 2-node circular topology | ${nodes['TG']} +| | ... | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1} | +| | And Set Interface Address +| | ... | ${dut_node} | ${int1} | ${tap1_VPP_ip} | ${prefix} +| | And Set Interface Address +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip_address} | ${prefix} +| | And Set Interface State | ${dut_node} | ${int1} | up +| | And Set Linux Interface MAC | ${dut_node} | ${tap_int1} | ${tap1_NM_mac} +| | And Set Linux Interface IP | ${dut_node} +| | ... | ${tap_int1} | ${tap1_NM_ip} | ${prefix} +| | And Add Route | ${dut_node} +| | ... | ${tg_ip_address_GW} | ${prefix} | ${tap1_VPP_ip} +| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${tg_ip_address} | ${tg_to_dut_if1_mac} +| | And Add Arp On Dut | ${dut_node} | ${int1} +| | ... | ${tap1_NM_ip} | ${tap1_NM_mac} +| | Then Send ICMP echo request and verify answer | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} | ${tg_to_dut_if1_mac} +| | ... | ${tap1_NM_ip} | ${tg_ip_address} + +| TC02: Tap Interface IP Ping With Namespace +| | [Documentation] +| | ... | [Top] TG-DUT1-TG. +| | ... | [Enc] Eth-IPv4-ICMPv4. +| | ... | [Cfg] On DUT1 configure two interface addresses with IPv4 of which\ +| | ... | one is TAP interface (dut_to_tg_if and TAP) and one is linux-TAP in\ +| | ... | namespace. +| | ... | [Ver] Packet sent from TG gets to the destination and ICMP-reply is\ +| | ... | received on TG. +| | ... +| | Given Configure path in 2-node circular topology | ${nodes['TG']} +| | ... | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1} | +| | And Set Interface Address +| | ... | ${dut_node} | ${int1} | ${tap1_VPP_ip} | ${prefix} +| | And Set Interface Address +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip_address} | ${prefix} +| | And Set Interface State | ${dut_node} | ${int1} | up +| | When Create Namespace | ${dut_node} | ${namespace1} +| | And Attach Interface To Namespace | ${dut_node} +| | ... | ${namespace1} | ${tap_int1} +| | And Set Linux Interface MAC | ${dut_node} +| | ... | ${tap_int1} | ${tap1_NM_mac} | ${namespace1} +| | And Set Linux Interface IP | ${dut_node} +| | ... | ${tap_int1} | ${tap1_NM_ip} | ${prefix} | ${namespace1} +| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${tg_ip_address} | ${tg_to_dut_if1_mac} +| | And Add Arp On Dut | ${dut_node} | ${int1} +| | ... | ${tap1_NM_ip} | ${tap1_NM_mac} +| | And Add Route | ${dut_node} +| | ... | ${tg_ip_address_GW} | ${prefix} | ${tap1_VPP_ip} | ${namespace1} +| | Then Send ICMP echo request and verify answer | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} | ${tg_to_dut_if1_mac} +| | ... | ${tap1_NM_ip} | ${tg_ip_address} diff --git a/tests/vpp/func/ip4/eth2p-dot1q-ip4base-func.robot b/tests/vpp/func/ip4/eth2p-dot1q-ip4base-func.robot new file mode 100644 index 0000000000..f206fe3d64 --- /dev/null +++ b/tests/vpp/func/ip4/eth2p-dot1q-ip4base-func.robot @@ -0,0 +1,107 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPv6Util +| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | VM_ENV | HW_ENV | VPP_VM_ENV +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *IPv4 with VLAN subinterfaces* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology +| ... | with double links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-IPv4-ICMPv4 on TG-DUT1-IF1, +| ... | Eth-dot1q-IPv4-ICMPv4 on TG-DUT1-IF2. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with 2 Vlan subinterfaces +| ... | on DUT1-IF2. The subinterfaces and DUT1-IF1 have IP addresses set and +| ... | corresponding IP neighbor entries are configured. +| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q. + +*** Variables *** + +| ${ip4_net0_1}= | 192.168.0.1 +| ${ip4_net0_2}= | 192.168.0.2 +| ${ip4_net1_1}= | 192.168.100.1 +| ${ip4_net1_2}= | 192.168.100.2 +| ${ip4_net2_1}= | 192.168.200.1 +| ${ip4_net2_2}= | 192.168.200.2 +| ${ip4_prefix}= | 24 +| ${tag_1}= | ${10} +| ${tag_2}= | ${20} + +*** Test Cases *** +| TC01: Process untagged send tagged +| | Given Vlan Test Setup +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${ip4_net0_2} | ${ip4_net2_2} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} | ${tg_to_dut_if2} +| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} +| | ... | encaps_rx=Dot1q | vlan_rx=${tag_2} + +| TC02: Process tagged send untagged +# It doesn't work with virtio +| | [Tags] | EXPECTED_FAILING +| | Given Vlan Test Setup +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${ip4_net2_2} | ${ip4_net0_2} | ${tg_to_dut_if2} +| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} | ${tg_to_dut_if1} +| | ... | ${dut_to_tg_if1_mac} | ${tg_to_dut_if1_mac} +| | ... | encaps_tx=Dot1q | vlan_tx=${tag_2} + +| TC03: Process tagged send tagged +# It doesn't work with virtio +| | [Tags] | EXPECTED_FAILING +| | Given Vlan Test Setup +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${ip4_net1_2} | ${ip4_net2_2} | ${tg_to_dut_if2} +| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2} +| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} +| | ... | encaps_tx=Dot1q | vlan_tx=${tag_1} +| | ... | encaps_rx=Dot1q | vlan_rx=${tag_2} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${ip4_net2_2} | ${ip4_net1_2} | ${tg_to_dut_if2} +| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2} +| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} +| | ... | encaps_tx=Dot1q | vlan_tx=${tag_2} +| | ... | encaps_rx=Dot1q | vlan_rx=${tag_1} + +*** Keywords *** +| Vlan Test Setup +| | Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | Set interfaces in 2-node circular topology up +| | +| | ${vlan1_name} | ${vlan1_index}= | Create vlan sub-interface +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${tag_1} +| | ${vlan2_name} | ${vlan2_index}= | Create vlan sub-interface +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${tag_2} +| | +| | Set Interface Address | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${ip4_net0_1} | ${ip4_prefix} +| | Set Interface Address | ${dut_node} +| | ... | ${vlan1_index} | ${ip4_net1_1} | ${ip4_prefix} +| | Set Interface Address | ${dut_node} +| | ... | ${vlan2_index} | ${ip4_net2_1} | ${ip4_prefix} +| | +| | Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${ip4_net0_2} +| | ... | ${tg_to_dut_if1_mac} +| | Add IP Neighbor | ${dut_node} | ${vlan1_index} | ${ip4_net1_2} +| | ... | ${tg_to_dut_if2_mac} +| | Add IP Neighbor | ${dut_node} | ${vlan2_index} | ${ip4_net2_2} +| | ... | ${tg_to_dut_if2_mac} diff --git a/tests/vpp/func/ip4/eth2p-ethip4-ip4base-copblklistbase-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-copblklistbase-func.robot new file mode 100644 index 0000000000..9ff3d2df75 --- /dev/null +++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-copblklistbase-func.robot @@ -0,0 +1,92 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.Cop +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/l2/l2_xconnect.robot +| Variables | resources/libraries/python/IPv4NodeAddress.py | ${nodes} +| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *COP Security IPv4 Blacklist Tests* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 on all links. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and +| ... | static routes. COP security black-lists are applied on DUT1 ingress +| ... | interface from TG. DUT2 is configured with L2XC. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in +| ... | one direction by TG on link to DUT1; on receive TG verifies packets for +| ... | correctness and drops as applicable. +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| ${tg_node}= | ${nodes['TG']} +| ${dut1_node}= | ${nodes['DUT1']} +| ${dut2_node}= | ${nodes['DUT2']} + +| ${dut1_if1_ip}= | 192.168.1.1 +| ${dut1_if2_ip}= | 192.168.2.1 +| ${dut1_if1_ip_GW}= | 192.168.1.2 +| ${dut1_if2_ip_GW}= | 192.168.2.2 + +| ${test_dst_ip}= | 32.0.0.1 +| ${test_src_ip}= | 16.0.0.1 + +| ${cop_dut_ip}= | 16.0.0.0 + +| ${ip_prefix}= | 24 +| ${nodes_ipv4_addresses}= | ${nodes_ipv4_addr} + +| ${fib_table_number}= | 1 + +*** Test Cases *** +| TC01: DUT drops IPv4 pkts with COP blacklist set with IPv4 src-addr +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 \ +| | ... | configure interface IPv4 addresses and routes in the main +| | ... | routing domain, add COP blacklist on interface to TG with IPv4 +| | ... | src-addr matching packets generated by TG; on DUT2 configure L2 +| | ... | xconnect. [Ver] Make TG send ICMPv4 Echo Req on its interface to +| | ... | DUT1; verify no ICMPv4 Echo Req pkts are received. [Ref] +| | Given Configure path in 3-node circular topology +| | ... | ${tg_node} | ${dut1_node} | ${dut2_node} | ${tg_node} +| | And Set interfaces in 3-node circular topology up +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | And Set Interface Address +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_if1_ip} | ${ip_prefix} +| | And Set Interface Address +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if2_ip} | ${ip_prefix} +| | And Add Arp On Dut +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_if1_ip_GW} | ${tg_to_dut1_mac} +| | And Add Arp On Dut +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if2_ip_GW} | ${tg_to_dut2_mac} +| | And Vpp Route Add | ${dut1_node} +| | ... | ${test_dst_ip} | ${ip_prefix} | ${dut1_if2_ip_GW} | ${dut1_to_dut2} +| | And Add fib table | ${dut1_node} +| | ... | ${cop_dut_ip} | ${ip_prefix} | ${fib_table_number} | drop +| | When COP Add whitelist Entry +| | ... | ${dut1_node} | ${dut1_to_tg} | ip4 | ${fib_table_number} +| | And COP interface enable or disable | ${dut1_node} | ${dut1_to_tg} | enable +| | Then Packet transmission from port to port should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} | ${dut1_to_dut2_mac} +| | ... | ${tg_to_dut2_mac} diff --git a/tests/vpp/func/ip4/eth2p-ethip4-ip4base-copwhlistbase-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-copwhlistbase-func.robot new file mode 100644 index 0000000000..775cbae579 --- /dev/null +++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-copwhlistbase-func.robot @@ -0,0 +1,92 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.Cop +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/l2/l2_xconnect.robot +| Variables | resources/libraries/python/IPv4NodeAddress.py | ${nodes} +| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *COP Security IPv4 Whitelist Tests* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 on all links. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and +| ... | static routes. COP security white-lists are applied on DUT1 ingress +| ... | interface from TG. DUT2 is configured with L2XC. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in +| ... | one direction by TG on link to DUT1; on receive TG verifies packets for +| ... | correctness and drops as applicable. +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| ${tg_node}= | ${nodes['TG']} +| ${dut1_node}= | ${nodes['DUT1']} +| ${dut2_node}= | ${nodes['DUT2']} + +| ${dut1_if1_ip}= | 192.168.1.1 +| ${dut1_if2_ip}= | 192.168.2.1 +| ${dut1_if1_ip_GW}= | 192.168.1.2 +| ${dut1_if2_ip_GW}= | 192.168.2.2 + +| ${test_dst_ip}= | 32.0.0.1 +| ${test_src_ip}= | 16.0.0.1 + +| ${cop_dut_ip}= | 16.0.0.0 + +| ${ip_prefix}= | 24 +| ${nodes_ipv4_addresses}= | ${nodes_ipv4_addr} + +| ${fib_table_number}= | 1 + +*** Test Cases *** +| TC01: DUT permits IPv4 pkts with COP whitelist set with IPv4 src-addr +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 \ +| | ... | configure interface IPv4 addresses and routes in the main +| | ... | routing domain, add COP whitelist on interface to TG with IPv4 +| | ... | src-addr matching packets generated by TG; on DUT2 configure L2 +| | ... | xconnect. [Ver] Make TG send ICMPv4 Echo Req on its interface to +| | ... | DUT1; verify received ICMPv4 Echo Req pkts are correct. [Ref] +| | Given Configure path in 3-node circular topology +| | ... | ${tg_node} | ${dut1_node} | ${dut2_node} | ${tg_node} +| | And Set interfaces in 3-node circular topology up +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | And Set Interface Address +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_if1_ip} | ${ip_prefix} +| | And Set Interface Address +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if2_ip} | ${ip_prefix} +| | And Add Arp On Dut +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_if1_ip_GW} | ${tg_to_dut1_mac} +| | And Add Arp On Dut +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if2_ip_GW} | ${tg_to_dut2_mac} +| | And Vpp Route Add | ${dut1_node} +| | ... | ${test_dst_ip} | ${ip_prefix} | ${dut1_if2_ip_GW} | ${dut1_to_dut2} +| | And Add fib table | ${dut1_node} +| | ... | ${cop_dut_ip} | ${ip_prefix} | ${fib_table_number} | local +| | When COP Add whitelist Entry +| | ... | ${dut1_node} | ${dut1_to_tg} | ip4 | ${fib_table_number} +| | And COP interface enable or disable | ${dut1_node} | ${dut1_to_tg} | enable +| | Then Send packet and verify headers | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} | ${dut1_to_dut2_mac} +| | ... | ${tg_to_dut2_mac} diff --git a/tests/vpp/func/ip4/eth2p-ethip4-ip4base-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-func.robot new file mode 100644 index 0000000000..a8fb58d754 --- /dev/null +++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-func.robot @@ -0,0 +1,138 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | SKIP_VPP_PATCH +| Suite Setup | Run Keywords +| ... | Configure all DUTs before test | AND +| ... | Configure all TGs for traffic script | AND +| ... | Update All Interface Data On All Nodes | ${nodes} | AND +| ... | Configure DUT nodes for IPv4 testing +| Test Setup | Run Keywords | Save VPP PIDs | AND +| ... | Reset VAT History On All DUTs | ${nodes} | AND +| ... | Clear interface counters on all vpp nodes in topology | ${nodes} +| Test Teardown | Run Keywords +| ... | Show packet trace on all DUTs | ${nodes} | AND +| ... | Show VAT History On All DUTs | ${nodes} | AND +| ... | Verify VPP PID in Teardown +| Documentation | *IPv4 routing test cases* +| ... +| ... | RFC791 IPv4, RFC826 ARP, RFC792 ICMPv4. Encapsulations: Eth-IPv4-ICMPv4 +| ... | on links TG-DUT1, TG-DUT2, DUT1-DUT2. IPv4 routing tests use circular +| ... | 3-node topology TG - DUT1 - DUT2 - TG with one link between the nodes. +| ... | DUT1 and DUT2 are configured with IPv4 routing and static routes. Test +| ... | ICMPv4 Echo Request packets are sent in both directions by TG on links +| ... | to DUT1 and DUT2 and received on TG links on the other side of circular +| ... | topology. On receive TG verifies packets IPv4 src-addr, dst-addr and MAC +| ... | addresses. + +*** Test Cases *** + +| TC01: DUT replies to ICMPv4 Echo Req to its ingress interface +| | [Documentation] +| | ... | Make TG send ICMPv4 Echo Req to DUT ingress interface. Make TG\ +| | ... | verify ICMP Echo Reply is correct. +| | [Tags] | VM_ENV +| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} +| | Compute Path +| | ${src_port} | ${src_node}= | First Interface +| | ${dst_port} | ${dst_node}= | Last Interface +| | ${hops}= | Set Variable | ${0} +| | Route traffic from interface '${src_port}' on node '${src_node}' to interface '${dst_port}' on node '${dst_node}' '${hops}' hops away using IPv4 + +| TC02: DUT routes IPv4 to its egress interface +| | [Tags] | VM_ENV +| | [Documentation] +| | ... | Make TG send ICMPv4 Echo Req towards DUT1 egress interface\ +| | ... | connected to DUT2. Make TG verify ICMPv4 Echo Reply is correct. +| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} +| | Compute Path +| | ${src_port} | ${src_node}= | First Interface +| | ${dst_port} | ${dst_node}= | Last Egress Interface +| | ${hops}= | Set Variable | ${0} +| | Route traffic from interface '${src_port}' on node '${src_node}' to interface '${dst_port}' on node '${dst_node}' '${hops}' hops away using IPv4 + +| TC03: DUT1 routes IPv4 to DUT2 ingress interface +| | [Tags] | VM_ENV +| | [Documentation] +| | ... | Make TG send ICMPv4 Echo Req towards DUT2 ingress interface\ +| | ... | connected to DUT1. Make TG verify ICMPv4 Echo Reply is correct. +| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} +| | Compute Path +| | ${src_port} | ${src_node}= | First Interface +| | ${dst_port} | ${dst_node}= | Last Interface +| | ${hops}= | Set Variable | ${1} +| | Route traffic from interface '${src_port}' on node '${src_node}' to interface '${dst_port}' on node '${dst_node}' '${hops}' hops away using IPv4 + +| TC04: DUT1 routes IPv4 to DUT2 egress interface +| | [Tags] | VM_ENV +| | [Documentation] +| | ... | Make TG send ICMPv4 Echo Req towards DUT2 egress interface\ +| | ... | connected to TG. Make TG verify ICMPv4 Echo Reply is correct. +| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | Compute Path +| | ${src_port} | ${src_node}= | First Interface +| | ${dst_port} | ${dst_node}= | Last Egress Interface +| | ${hops}= | Set Variable | ${1} +| | Route traffic from interface '${src_port}' on node '${src_node}' to interface '${dst_port}' on node '${dst_node}' '${hops}' hops away using IPv4 + +| TC05: DUT1 and DUT2 route IPv4 between TG interfaces +| | [Tags] | VM_ENV +| | [Documentation] +| | ... | Make TG send ICMPv4 Echo Req between its interfaces across DUT1\ +| | ... | and DUT2. Make TG verify ICMPv4 Echo Replies are correct. +| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | Compute Path +| | ${src_port} | ${src_node}= | First Interface +| | ${dst_port} | ${dst_node}= | Last Interface +| | ${hops}= | Set Variable | ${2} +| | Route traffic from interface '${src_port}' on node '${src_node}' to interface '${dst_port}' on node '${dst_node}' '${hops}' hops away using IPv4 + +| TC06: DUT replies to ICMPv4 Echo Reqs with size 64B-to-1500B-incr-1B +| | [Tags] | VM_ENV +| | [Documentation] +| | ... | Make TG send ICMPv4 Echo Reqs to DUT ingress interface,\ +| | ... | incrementating frame size from 64B to 1500B with increment step +| | ... | of 1Byte. Make TG verify ICMP Echo Replies are correct. +| | Execute IPv4 ICMP echo sweep | ${nodes['TG']} | ${nodes['DUT1']} | 0 | 1452 | 1 + +| TC07: DUT replies to ICMPv4 Echo Reqs with size 1500B-to-9000B-incr-10B +| | [Documentation] +| | ... | Make TG send ICMPv4 Echo Reqs to DUT ingress interface,\ +| | ... | incrementating frame size from 1500B to 9000B with increment +| | ... | step of 10Bytes. Make TG verify ICMPv4 Echo Replies are correct. +| | [Setup] | Configure MTU on TG based on MTU on DUT | ${nodes['TG']} | ${nodes['DUT1']} +| | [Teardown] | Run keywords +| | ... | Set default Ethernet MTU on all interfaces on node | ${nodes['TG']} +| | ... | AND | Verify VPP PID in Teardown +| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} +| | Compute Path +| | ${dut_port} | ${dut_node}= | Last Interface +| | ${mtu}= | Get Interface MTU | ${dut_node} | ${dut_port} +| | # ICMP payload size is frame size minus size of Ehternet header, FCS, +| | # IPv4 header and ICMP header +| | ${end_size}= | Evaluate | ${mtu} - 14 - 4 - 20 - 8 +| | Run Keyword If | ${mtu} > 1518 +| | ... | Execute IPv4 ICMP echo sweep | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | 1452 | ${end_size} | 10 + +| TC08: DUT replies to ARP request +| | [Tags] | VM_ENV | SKIP_VPP_PATCH +| | [Documentation] +| | ... | Make TG send ARP Request to DUT and verify ARP Reply is correct.\ +| | Send ARP request and verify response | ${nodes['TG']} | ${nodes['DUT1']} diff --git a/tests/vpp/func/ip4/eth2p-ethip4-ip4base-iaclbase-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-iaclbase-func.robot new file mode 100644 index 0000000000..5afa75b55e --- /dev/null +++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-iaclbase-func.robot @@ -0,0 +1,524 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/counters.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/l2/l2_xconnect.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Library | resources.libraries.python.Classify.Classify +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *IPv4 routing with ingress ACL test cases* +| ... +| ... | Encapsulations: Eth-IPv4 on links TG-DUT1, TG-DUT2, DUT1-DUT2. IPv4 +| ... | ingress ACL (iACL) tests use 3-node topology TG - DUT1 - DUT2 - TG with +| ... | one link between the nodes. DUT1 and DUT2 are configured with IPv4 +| ... | routing and static routes. DUT1 is configured with iACL on link to TG, +| ... | iACL classification and permit/deny action are configured on a per test +| ... | case basis. Test ICMPv4 Echo Request packets are sent in one direction +| ... | by TG on link to DUT1 and received on TG link to DUT2. On receive TG +| ... | verifies if packets are dropped, or if received verifies packet IPv4 +| ... | src-addr, dst-addr and MAC addresses. + +*** Variables *** +| ${dut1_to_tg_ip}= | 192.168.1.1 +| ${dut1_to_dut2_ip}= | 192.168.2.1 +| ${dut1_to_dut2_ip_GW}= | 192.168.2.2 +| ${test_dst_ip}= | 32.0.0.1 +| ${test_src_ip}= | 16.0.0.1 +| ${non_drop_dst_ip}= | 33.0.0.1 +| ${non_drop_src_ip}= | 15.0.0.1 +| ${prefix_length}= | 24 +| ${ip_version}= | ip4 +| ${l2_table}= | l2 + +*** Test Cases *** +| TC01: DUT with iACL IPv4 src-addr drops matching pkts +| | [Documentation] +| | ... | On DUT1 add source IPv4 address to classify table with 'deny'.\ +| | ... | Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Arp On Dut +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | Then Send packet and verify headers | ${tg_node} +| | ... | ${non_drop_src_ip} | ${test_dst_ip} | ${tg_to_dut1} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table L3 | ${dut1_node} +| | ... | ${ip_version} | src +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | ${ip_version} | src | ${test_src_ip} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then Packet transmission from port to port should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers | ${tg_node} +| | ... | ${non_drop_src_ip} | ${test_dst_ip} | ${tg_to_dut1} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} + +| TC02: DUT with iACL IPv4 dst-addr drops matching pkts +| | [Documentation] +| | ... | On DUT1 add destination IPv4 address to classify table with 'deny'.\ +| | ... | Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Arp On Dut +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${non_drop_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | Then Send packet and verify headers | ${tg_node} +| | ... | ${test_src_ip} | ${non_drop_dst_ip} | ${tg_to_dut1} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table L3 | ${dut1_node} +| | ... | ${ip_version} | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | ${ip_version} | dst | ${test_dst_ip} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then Packet transmission from port to port should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers | ${tg_node} +| | ... | ${test_src_ip} | ${non_drop_dst_ip} | ${tg_to_dut1} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} + +| TC03: DUT with iACL IPv4 src-addr and dst-addr drops matching pkts +| | [Documentation] +| | ... | On DUT1 add source and destination IPv4 addresses to classify table\ +| | ... | with 'deny'. Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Arp On Dut +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${non_drop_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | Then Send packet and verify headers | ${tg_node} +| | ... | ${non_drop_src_ip} | ${non_drop_dst_ip} | ${tg_to_dut1} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | ${table_index_1} | ${skip_n_1} | ${match_n_1}= +| | ... | When Vpp Creates Classify Table L3 | ${dut1_node} +| | ... | ${ip_version} | src +| | ${table_index_2} | ${skip_n_2} | ${match_n_2}= +| | ... | And Vpp Creates Classify Table L3 | ${dut1_node} | ${ip_version} | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1_node} | deny | ${table_index_1} | ${skip_n_1} | ${match_n_2} +| | ... | ${ip_version} | src | ${test_src_ip} +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1_node} | deny | ${table_index_2} | ${skip_n_2} | ${match_n_2} +| | ... | ${ip_version} | dst | ${test_dst_ip} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index_1} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index_2} +| | Then Packet transmission from port to port should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers | ${tg_node} +| | ... | ${non_drop_src_ip} | ${non_drop_dst_ip} | ${tg_to_dut1} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} + +| TC04: DUT with iACL IPv4 protocol set to TCP drops matching pkts +| | [Documentation] +| | ... | On DUT1 add protocol mask and TCP protocol (0x06) to classify table\ +| | ... | with 'deny'. Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Arp On Dut +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table Hex +| | ... | ${dut1_node} | 0000000000000000000000000000000000000000000000FF +| | And Vpp Configures Classify Session Hex +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | 000000000000000000000000000000000000000000000006 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then TCP or UDP packet transmission should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 + +| TC05: DUT with iACL IPv4 protocol set to UDP drops matching pkts +| | [Documentation] +| | ... | On DUT1 add protocol mask and UDP protocol (0x11) to classify table\ +| | ... | with 'deny'. Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Arp On Dut +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table Hex +| | ... | ${dut1_node} | 0000000000000000000000000000000000000000000000FF +| | And Vpp Configures Classify Session Hex +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | 000000000000000000000000000000000000000000000011 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then TCP or UDP packet transmission should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 + +| TC06: DUT with iACL IPv4 TCP src-ports drops matching pkts +| | [Documentation] +| | ... | On DUT1 add TCP source ports to classify table with 'deny'.\ +| | ... | Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Arp On Dut +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 110 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 +| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | TCP | source +| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 80 | 0 +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} +| | And Vpp Configures Classify Session Hex +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | ${hex_value} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then TCP or UDP packet transmission should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 110 | 20 + +| TC07: DUT with iACL IPv4 TCP dst-ports drops matching pkts +| | [Documentation] +| | ... | On DUT1 add TCP destination ports to classify table with 'deny'.\ +| | ... | Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Arp On Dut +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 20 | 110 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 20 | 80 +| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | TCP | destination +| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 0 | 80 +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} +| | And Vpp Configures Classify Session Hex +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | ${hex_value} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then TCP or UDP packet transmission should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 20 | 80 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 20 | 110 + +| TC08: DUT with iACL IPv4 TCP src-ports and dst-ports drops matching pkts +| | [Documentation] +| | ... | On DUT1 add TCP source and destination ports to classify table\ +| | ... | with 'deny'. Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Arp On Dut +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 110 | 25 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 +| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | TCP +| | ... | source + destination +| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 80 | 20 +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} +| | And Vpp Configures Classify Session Hex +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | ${hex_value} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then TCP or UDP packet transmission should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 110 | 25 + +| TC09: DUT with iACL IPv4 UDP src-ports drops matching pkts +| | [Documentation] +| | ... | On DUT1 add UDP source ports to classify table with 'deny'.\ +| | ... | Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Arp On Dut +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 +| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | UDP | source +| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 80 | 0 +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} +| | And Vpp Configures Classify Session Hex +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | ${hex_value} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then TCP or UDP packet transmission should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 20 + +| TC10: DUT with iACL IPv4 UDP dst-ports drops matching pkts +| | [Documentation] +| | ... | On DUT1 add TCP destination ports to classify table with 'deny'.\ +| | ... | Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Arp On Dut +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 20 | 110 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 20 | 80 +| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | UDP | destination +| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 0 | 80 +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} +| | And Vpp Configures Classify Session Hex +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | ${hex_value} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then TCP or UDP packet transmission should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 20 | 80 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 20 | 110 + +| TC11: DUT with iACL IPv4 UDP src-ports and dst-ports drops matching pkts +| | [Documentation] +| | ... | On DUT1 add UDP source and destination ports to classify table\ +| | ... | with 'deny'. Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Arp On Dut +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 25 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 +| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | UDP +| | ... | source + destination +| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 80 | 20 +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} +| | And Vpp Configures Classify Session Hex +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | ${hex_value} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then TCP or UDP packet transmission should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 25 diff --git a/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4arp-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4arp-func.robot new file mode 100644 index 0000000000..8d93aec58a --- /dev/null +++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4arp-func.robot @@ -0,0 +1,82 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/counters.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/l2/l2_xconnect.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *IPv4 ARP test cases* +| ... +| ... | RFC826 ARP: Eth-IPv4 and Eth-ARP on links TG-DUT1, TG-DUT2, DUT1-DUT2: +| ... | IPv4 ARP tests use 3-node topology TG - DUT1 - DUT2 - TG with one link +| ... | between the nodes. DUT1 and DUT2 are configured with IPv4 routing and +| ... | static routes. DUT ARP functionality is tested by making TG send ICMPv4 +| ... | Echo Requests towards its other interface via DUT1 and DUT2. + +*** Variables *** +| ${dut1_to_tg_ip}= | 192.168.1.1 +| ${dut1_to_dut2_ip}= | 192.168.2.1 +| ${dut1_to_dut2_ip_GW}= | 192.168.2.2 +| ${test_dst_ip}= | 32.0.0.1 +| ${test_src_ip}= | 16.0.0.1 +| ${prefix_length}= | 24 + +*** Test Cases *** +| TC01: DUT sends ARP Request for unresolved locally connected IPv4 address +| | [Documentation] +| | ... | Make TG send test packet destined to IPv4 address of its other\ +| | ... | interface connected to DUT2. Make TG verify DUT2 sends ARP +| | ... | Request for locally connected TG IPv4 address. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | When Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | Then Send packet and verify ARP request | ${tg_node} +| | ... | ${test_src_ip} | ${dut1_to_dut2_ip_GW} | ${tg_to_dut1} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} | ${dut1_to_dut2_mac} +| | ... | ${dut1_to_dut2_ip} | ${dut1_to_dut2_ip_GW} + +| TC02: DUT sends ARP Request for route next hop IPv4 address +| | [Documentation] | +| | ... | Make TG send test packet destined to IPv4 address matching\ +| | ... | static route on DUT2. Make TG verify DUT2 sends ARP Request for +| | ... | next hop of the static route. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | When Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} | resolve_attempts=${NONE} +| | Then Send packet and verify ARP request | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} | ${dut1_to_dut2_mac} +| | ... | ${dut1_to_dut2_ip} | ${dut1_to_dut2_ip_GW} diff --git a/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4dhcpclient-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4dhcpclient-func.robot new file mode 100644 index 0000000000..5960e83797 --- /dev/null +++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4dhcpclient-func.robot @@ -0,0 +1,117 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/features/dhcp_client.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *DHCPv4 Client related test cases* + +*** Variables *** +| ${client_hostname}= | dhcp-client +| ${client_ip}= | 192.168.23.10 +| ${client_mask}= | 255.255.255.0 +| ${server_ip}= | 192.168.23.1 +| ${own_xid}= | 11112222 +| ${lease_time}= | ${15} + +*** Test Cases *** +| TC01: VPP sends a DHCP DISCOVER +| | [Documentation] | Configure DHCPv4 client on interface to TG without +| | ... | hostname and check if DHCPv4 DISCOVER message contains all +| | ... | required fields with expected values. +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | When Set DHCP client on Interface | ${dut_node} | ${dut_to_tg_if1} +| | Then Verify DHCP DISCOVER header | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} + +| TC02: VPP sends a DHCPv4 DISCOVER with hostname +| | [Documentation] | Configure DHCPv4 client on interface to TG with hostname +| | ... | and check if DHCPv4 DISCOVER message contains all required +| | ... | fields with expected values. +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | When Set DHCP client on Interface | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${client_hostname} +| | Then Verify DHCP DISCOVER header | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} | ${client_hostname} + +| TC03: VPP sends DHCPv4 REQUEST after OFFER +| | [Documentation] | Configure DHCPv4 client on interface to TG and check if +| | ... | DHCPv4 REQUEST message contains all required fields. +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And VPP Route Add | ${dut_node} | 255.255.255.255 | 32 | ${NONE} | local +| | ... | ${FALSE} | ${NONE} +| | When Set DHCP client on Interface | ${dut_node} | ${dut_to_tg_if1} +| | Then Verify DHCP REQUEST after OFFER | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if1_mac} | ${server_ip} +| | ... | ${dut_to_tg_if1_mac} | ${client_ip} | ${client_mask} + +| TC04: VPP doesn't send DHCPv4 REQUEST after OFFER with wrong XID +| | [ Tags ] | EXPECTED_FAILING +| | [Documentation] | Configure DHCPv4 client on interface to TG. If server +| | ... | sends DHCPv4 OFFER with different XID as in DHCPv4 +| | ... | DISCOVER, DHCPv4 REQUEST message shouldn't be sent. +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And VPP Route Add | ${dut_node} | 255.255.255.255 | 32 | ${NONE} | local +| | ... | ${FALSE} | ${NONE} +| | When Set DHCP client on Interface | ${dut_node} | ${dut_to_tg_if1} +| | Then Run Keyword And Expect Error | DHCP REQUEST Rx timeout +| | ... | Verify DHCP REQUEST after OFFER | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if1_mac} | ${server_ip} +| | ... | ${dut_to_tg_if1_mac} | ${client_ip} | ${client_mask} +| | ... | offer_xid=${own_xid} + +| TC05: VPP honors DHCPv4 lease time +| | [Documentation] | Send IP configuration to the VPP client via DHCPv4. +| | ... | Address is checked with ICMP echo request and there should +| | ... | be no reply for echo request when lease has expired. +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And VPP Route Add | ${dut_node} | 255.255.255.255 | 32 | ${NONE} | local +| | ... | ${FALSE} | ${NONE} +| | When Set DHCP client on Interface | ${dut_node} | ${dut_to_tg_if1} +| | And Configure IP on client via DHCP +| | ... | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if1_mac} | ${server_ip} +| | ... | ${client_ip} | ${client_mask} +| | ... | ${lease_time} +| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if1} | ${server_ip} +| | ... | ${tg_to_dut_if1_mac} +| | Then Send ICMP echo request and verify answer +| | ... | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${dut_to_tg_if1_mac} | ${tg_to_dut_if1_mac} | ${client_ip} +| | ... | ${server_ip} +| | And Sleep | ${lease_time} +| | And Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP echo request and verify answer | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} | ${tg_to_dut_if1_mac} +| | ... | ${client_ip} | ${server_ip} diff --git a/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot new file mode 100644 index 0000000000..9df4174ba9 --- /dev/null +++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot @@ -0,0 +1,93 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/features/dhcp_proxy.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *DHCPv4 proxy test cases* +| ... +| ... | *[Top] Network Topologies:* TG = DUT +| ... | with two links between the nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP-BOOTP-DHCP +| ... | *[Cfg] DUT configuration:* DUT is configured with DHCPv4 proxy. +| ... | *[Ver] TG verification:* Test DHCPv4 packets are sent +| ... | on TG on first link to DUT and received on TG on second link. +| ... | On receive TG verifies if DHCPv4 packets are valid. + +*** Variables *** +| ${dut_to_tg_if1_ip}= | 172.16.0.1 +| ${dut_to_tg_if2_ip}= | 192.168.0.1 +| ${dhcp_server_ip}= | 192.168.0.100 +| ${client_ip}= | 172.16.0.2 +| ${prefix_length}= | 24 + +| ${discover_src_ip}= | 0.0.0.0 +| ${valid_discover_dst_ip}= | 255.255.255.255 +| ${invalid_discover_dst_ip}= | 255.255.255.1 + +*** Test Cases *** +| TC01: VPP proxies valid DHCPv4 request to DHCPv4 server +| | [Documentation] | +| | ... | [Top] TG=DUT \ +| | ... | [Enc] Eth-IPv4-UDP-BOOTP-DHCP +| | ... | [Cfg] On DUT setup DHCPv4 proxy. +| | ... | [Ver] Make TG verify matching DHCPv4 packets between client and DHCPv4 +| | ... | server through DHCP proxy. +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And VPP Route Add | ${dut_node} | 255.255.255.255 | 32 | ${NONE} | local +| | ... | ${FALSE} | ${NONE} +| | And Set Interface Address | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} +| | And Set Interface Address | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} +| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if2} | ${dhcp_server_ip} +| | ... | ${tg_to_dut_if2_mac} +| | When DHCP Proxy Config | ${dut_node} | ${dhcp_server_ip} +| | ... | ${dut_to_tg_if1_ip} +| | Then Send DHCP messages and check answer | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if2} | ${dhcp_server_ip} | ${tg_to_dut_if2_mac} +| | ... | ${client_ip} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_ip} + +| TC02: VPP proxy ignores invalid DHCPv4 request +| | [Documentation] | +| | ... | [Top] TG=DUT \ +| | ... | [Enc] Eth-IPv4-UDP-BOOTP-DHCP +| | ... | [Cfg] On DUT setup DHCPv4 proxy. +| | ... | [Ver] Make TG verify matching invalid DHCPv4 packets are dropped. +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And VPP Route Add | ${dut_node} | 255.255.255.255 | 32 | ${NONE} | local +| | ... | ${FALSE} | ${NONE} +| | And Set Interface Address | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} +| | And Set Interface Address | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} +| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if2} | ${dhcp_server_ip} +| | ... | ${tg_to_dut_if2_mac} +| | When DHCP Proxy Config | ${dut_node} | ${dhcp_server_ip} +| | ... | ${dut_to_tg_if1_ip} +| | Then Send DHCP DISCOVER and check answer | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if2} | ${discover_src_ip} | ${valid_discover_dst_ip} +| | And DHCP DISCOVER should fail | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if2} | ${discover_src_ip} | ${invalid_discover_dst_ip} diff --git a/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4ecmp-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4ecmp-func.robot new file mode 100644 index 0000000000..67640443c7 --- /dev/null +++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4ecmp-func.robot @@ -0,0 +1,74 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/counters.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *Ipv4 Multipath routing test cases* +| ... +| ... | *[Top] Network topologies:* TG=DUT 2-node topology with two links\ +| ... | between nodes. +| ... | *[Cfg] DUT configuration:* On DUT configure interfaces IPv4 adresses,\ +| ... | and multipath routing. +| ... | *[Ver] TG verification:* Test packets are sent from TG on the first\ +| ... | link to DUT. Packet is received on TG on the second link from DUT1. + + +*** Variables *** +| ${ip_1}= | 192.168.1.1 +| ${ip_2}= | 192.168.2.1 +| ${test_dst_ip}= | 32.0.0.1 +| ${test_src_ip}= | 16.0.0.1 +| ${prefix_length}= | 24 +| ${neighbor_1_ip}= | 192.168.2.10 +| ${neighbor_1_mac}= | 02:00:00:00:00:02 +| ${neighbor_2_ip}= | 192.168.2.20 +| ${neighbor_2_mac}= | 02:00:00:00:00:03 + +*** Test Cases *** +| TC01: IPv4 Equal-cost multipath routing +| | [Documentation] +| | ... | [Top] TG=DUT +| | ... | [Cfg] On DUT configure multipath routing wiht two equal-cost paths. +| | ... | [Ver] TG sends 100 IPv4 ICMP packets traffic on the first link to\ +| | ... | DUT. On second link to TG verify if traffic is divided into two paths. +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And Set Interface Address | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${ip_1} | ${prefix_length} +| | And Set Interface Address | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${ip_2} | ${prefix_length} +| | And Add Arp On Dut +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${neighbor_1_ip} | ${neighbor_1_mac} +| | And Add Arp On Dut +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${neighbor_2_ip} | ${neighbor_2_mac} +| | When Vpp Route Add +| | ... | ${dut_node} | ${test_dst_ip} | ${prefix_length} | ${neighbor_1_ip} +| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | multipath=${TRUE} +| | And Vpp Route Add +| | ... | ${dut_node} | ${test_dst_ip} | ${prefix_length} | ${neighbor_2_ip} +| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | multipath=${TRUE} +| | Then Send packets and verify multipath routing | ${tg_node} +| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1} | ${test_src_ip} | ${test_dst_ip} +| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} | ${dut_to_tg_if1_mac} +| | ... | ${neighbor_1_mac} | ${neighbor_2_mac} diff --git a/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4proxyarp-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4proxyarp-func.robot new file mode 100644 index 0000000000..8097526ccf --- /dev/null +++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ip4proxyarp-func.robot @@ -0,0 +1,156 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.ProxyArp +| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *RFC1027 Proxy ARP test cases* +| ... +| ... | *[Top] Network topologies:* TG-DUT1 2-node topology with +| ... | single link between nodes. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with Proxy ARP +| ... | *[Ver] TG verification:* Test ARP Request packet is sent +| ... | from TG on link to DUT1; on receive TG verifies ARP reply packet +| ... | for correctness and their IPv4 src-addr, dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC1027. + +*** Variables *** +| ${tg_to_dut1_ip}= | 10.0.0.100 +| ${dut1_to_tg_ip}= | 10.0.0.1 +| ${prefix_length}= | 24 +| ${lo_ip4_addr}= | 192.168.1.2 +| ${hi_ip4_addr}= | 192.168.1.10 +| ${pass_test_ip}= | 192.168.1.5 +| ${pass_test_lo_ip}= | 192.168.1.2 +| ${pass_test_hi_ip}= | 192.168.1.10 +| ${fail_test_lo_ip}= | 192.168.1.1 +| ${fail_test_hi_ip}= | 192.168.1.11 + +*** Test Cases *** +| TC01: DUT sends ARP reply on behalf of another machine from the IP range +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC1027. +| | ... | [Cfg] On DUT1 configure interface IPv4 address and proxy ARP +| | ... | for IP range. +| | ... | [Ver] Make TG send ARP request to DUT1 interface, +| | ... | verify if DUT1 sends correct ARP reply on behalf of machine which +| | ... | IP is in range. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${dut1_to_tg_name}= | Get interface name | ${dut1_node} | ${dut1_to_tg} +| | ${tg_to_dut1_name}= | Get interface name | ${tg_node} | ${tg_to_dut1} +| | When Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Vpp Add Proxy ARP | ${dut1_node} | ${lo_ip4_addr} | ${hi_ip4_addr} +| | And Vpp Proxy ARP Interface Enable | ${dut1_node} | ${dut1_to_tg_name} +| | Then Send ARP Request | ${tg_node} | ${tg_to_dut1_name} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut1_ip} | ${pass_test_ip} + +| TC02: DUT sends ARP reply on behalf of another machine from beginning of the IP range +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC1027. +| | ... | [Cfg] On DUT1 configure interface IPv4 address and proxy ARP +| | ... | for IP range. +| | ... | [Ver] Make TG send ARP request to DUT1 interface, +| | ... | verify if DUT1 sends correct ARP reply on behalf of machine which +| | ... | IP is from beginning of the IP range. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${dut1_to_tg_name}= | Get interface name | ${dut1_node} | ${dut1_to_tg} +| | ${tg_to_dut1_name}= | Get interface name | ${tg_node} | ${tg_to_dut1} +| | When Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Vpp Add Proxy ARP | ${dut1_node} | ${lo_ip4_addr} | ${hi_ip4_addr} +| | And Vpp Proxy ARP Interface Enable | ${dut1_node} | ${dut1_to_tg_name} +| | Then Send ARP Request | ${tg_node} | ${tg_to_dut1_name} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut1_ip} | ${pass_test_lo_ip} + +| TC03: DUT sends ARP reply on behalf of another machine from end of the IP range +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC1027. +| | ... | [Cfg] On DUT1 configure interface IPv4 address and proxy ARP +| | ... | for IP range. +| | ... | [Ver] Make TG send ARP request to DUT1 interface, +| | ... | verify if DUT1 sends correct ARP reply on behalf of machine which +| | ... | IP is from end of the IP range. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${dut1_to_tg_name}= | Get interface name | ${dut1_node} | ${dut1_to_tg} +| | ${tg_to_dut1_name}= | Get interface name | ${tg_node} | ${tg_to_dut1} +| | When Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Vpp Add Proxy ARP | ${dut1_node} | ${lo_ip4_addr} | ${hi_ip4_addr} +| | And Vpp Proxy ARP Interface Enable | ${dut1_node} | ${dut1_to_tg_name} +| | Then Send ARP Request | ${tg_node} | ${tg_to_dut1_name} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut1_ip} | ${pass_test_hi_ip} + +| TC04: DUT does not send ARP reply on behalf of another machine from below of the IP range +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC1027. +| | ... | [Cfg] On DUT1 configure interface IPv4 address and proxy ARP +| | ... | for IP range. +| | ... | [Ver] Make TG send ARP request to DUT1 interface, +| | ... | verify if DUT1 does not send ARP reply on behalf of machine which +| | ... | IP is from below of the IP range. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${dut1_to_tg_name}= | Get interface name | ${dut1_node} | ${dut1_to_tg} +| | ${tg_to_dut1_name}= | Get interface name | ${tg_node} | ${tg_to_dut1} +| | When Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Vpp Add Proxy ARP | ${dut1_node} | ${lo_ip4_addr} | ${hi_ip4_addr} +| | And Vpp Proxy ARP Interface Enable | ${dut1_node} | ${dut1_to_tg_name} +| | Then ARP request should fail | ${tg_node} | ${tg_to_dut1_name} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut1_ip} | ${fail_test_lo_ip} + +| TC05: DUT does not send ARP reply on behalf of another machine from above of the IP range +| | [Documentation] +| | ... | [Top] TG-DUT1. +| | ... | [Ref] RFC1027. +| | ... | [Cfg] On DUT1 configure interface IPv4 address and proxy ARP +| | ... | for IP range. +| | ... | [Ver] Make TG send ARP request to DUT1 interface, +| | ... | verify if DUT1 does not send ARP reply on behalf of machine which +| | ... | IP is from above of the IP range. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${dut1_to_tg_name}= | Get interface name | ${dut1_node} | ${dut1_to_tg} +| | ${tg_to_dut1_name}= | Get interface name | ${tg_node} | ${tg_to_dut1} +| | When Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Vpp Add Proxy ARP | ${dut1_node} | ${lo_ip4_addr} | ${hi_ip4_addr} +| | And Vpp Proxy ARP Interface Enable | ${dut1_node} | ${dut1_to_tg_name} +| | Then ARP request should fail | ${tg_node} | ${tg_to_dut1_name} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut1_ip} | ${fail_test_hi_ip} diff --git a/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ipolicemarkbase-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ipolicemarkbase-func.robot new file mode 100644 index 0000000000..60e480c287 --- /dev/null +++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-ipolicemarkbase-func.robot @@ -0,0 +1,162 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | VM_ENV | HW_ENV +| Resource | resources/libraries/robot/features/policer.robot +| Library | resources.libraries.python.Trace +| Test Setup | Run Keywords | Set up functional test +| ... | AND | Configure topology for IPv4 policer test +| Test Teardown | Tear down functional test +| Documentation | *IPv4 policer test cases* +| ... +| ... | *[Top] Network topologies:* TG=DUT1 2-node topology with two links\ +| ... | between nodes. +| ... | *[Cfg] DUT configuration:* On DUT1 configure interfaces IPv4 adresses,\ +| ... | and static ARP record on the second interface. +| ... | *[Ver] TG verification:* Test packet is sent from TG on the first link\ +| ... | to DUT1. Packet is received on TG on the second link from DUT1. +| ... | *[Ref] Applicable standard specifications:* RFC2474, RFC2697, RFC2698. + +*** Variables *** +| ${tg_to_dut_if1_ip4}= | 192.168.122.2 +| ${tg_to_dut_if2_ip4}= | 192.168.123.2 +| ${dut_to_tg_if1_ip4}= | 192.168.122.1 +| ${dut_to_tg_if2_ip4}= | 192.168.123.1 +| ${ip4_plen}= | ${24} + +| ${cir}= | ${100} +| ${eir}= | ${150} +| ${cb}= | ${200} +| ${eb}= | ${300} + +*** Test Cases *** +| TC01: VPP policer 2R3C Color-aware marks packet +| | [Documentation] +| | ... | [Top] TG=DUT1. +| | ... | [Ref] RFC2474, RFC2698. +| | ... | [Cfg] On DUT1 configure 2R3C color-aware policer on the first\ +| | ... | interface. +| | ... | [Ver] TG sends IPv4 TCP packet on the first link to DUT1.\ +| | ... | On DUT1 packet is marked with DSCP tag. Verify if DUT1 sends\ +| | ... | correct IPv4 TCP packet with correct DSCP on the second link to TG. +| | ${dscp}= | DSCP AF22 +| | Given Policer Set Name | policer1 +| | And Policer Set Node | ${dut_node} +| | And Policer Set CIR | ${cir} +| | And Policer Set EIR | ${eir} +| | And Policer Set CB | ${cb} +| | And Policer Set EB | ${eb} +| | And Policer Set Rate Type pps +| | And Policer Set Round Type Closest +| | And Policer Set Type 2R3C 2698 +| | And Policer Set Conform Action Transmit +| | And Policer Set Exceed Action Mark and Transmit | ${dscp} +| | And Policer Set Violate Action Drop +| | And Policer Enable Color Aware +| | And Policer Classify Set Precolor Exceed +| | And Policer Classify Set Interface | ${dut_to_tg_if1} +| | And Policer Classify Set Match IP | ${tg_to_dut_if1_ip} +| | When Policer Set Configuration +| | Then Send packet and verify marking | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} +| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if2_ip} | ${dscp} + +| TC02: VPP policer 2R3C Color-blind marks packet +| | [Documentation] +| | ... | [Top] TG=DUT1. +| | ... | [Ref] RFC2474, RFC2698. +| | ... | [Cfg] On DUT1 configure 2R3C color-blind policer on the first\ +| | ... | interface. +| | ... | [Ver] TG sends IPv4 TCP packet on the first link to DUT1.\ +| | ... | On DUT1 packet is marked with DSCP tag. Verify if DUT1 sends\ +| | ... | correct IPv4 TCP packet with correct DSCP on the second link to TG. +| | ${dscp}= | DSCP AF22 +| | Given Policer Set Name | policer1 +| | And Policer Set Node | ${dut_node} +| | And Policer Set CIR | ${cir} +| | And Policer Set EIR | ${eir} +| | And Policer Set CB | ${cb} +| | And Policer Set EB | ${eb} +| | And Policer Set Rate Type pps +| | And Policer Set Round Type Closest +| | And Policer Set Type 2R3C 2698 +| | And Policer Set Conform Action Mark and Transmit | ${dscp} +| | And Policer Set Exceed Action Transmit +| | And Policer Set Violate Action Drop +| | And Policer Classify Set Precolor Conform +| | And Policer Classify Set Interface | ${dut_to_tg_if1} +| | And Policer Classify Set Match IP | ${tg_to_dut_if1_ip} +| | When Policer Set Configuration +| | Then Send packet and verify marking | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} +| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if2_ip} | ${dscp} + +| TC03: VPP policer 1R3C Color-aware marks packet +| | [Documentation] +| | ... | [Top] TG=DUT1. +| | ... | [Ref] RFC2474, RFC2697. +| | ... | [Cfg] On DUT1 configure 1R3C color-aware policer on the first\ +| | ... | interface. +| | ... | [Ver] TG sends IPv4 TCP packet on the first link to DUT1.\ +| | ... | On DUT1 packet is marked with DSCP tag. Verify if DUT1 sends\ +| | ... | correct IPv4 TCP packet with correct DSCP on the second link to TG. +| | ${dscp}= | DSCP AF22 +| | Given Policer Set Name | policer1 +| | And Policer Set Node | ${dut_node} +| | And Policer Set CIR | ${1} +| | And Policer Set CB | ${2} +| | And Policer Set EB | ${eb} +| | And Policer Set Rate Type pps +| | And Policer Set Round Type Closest +| | And Policer Set Type 1R3C +| | And Policer Set Conform Action Transmit +| | And Policer Set Exceed Action Mark and Transmit | ${dscp} +| | And Policer Set Violate Action Drop +| | And Policer Enable Color Aware +| | And Policer Classify Set Precolor Exceed +| | And Policer Classify Set Interface | ${dut_to_tg_if1} +| | And Policer Classify Set Match IP | ${tg_to_dut_if1_ip} +| | When Policer Set Configuration +| | Then Send packet and verify marking | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} +| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if2_ip} | ${dscp} + +| TC04: VPP policer 1R3C Color-blind marks packet +| | [Documentation] +| | ... | [Top] TG=DUT1. +| | ... | [Ref] RFC2474, RFC2697. +| | ... | [Cfg] On DUT1 configure 1R3C color-blind policer on the first\ +| | ... | interface. +| | ... | [Ver] TG sends IPv4 TCP packet on the first link to DUT1.\ +| | ... | On DUT1 packet is marked with DSCP tag. Verify if DUT1 sends\ +| | ... | correct IPv4 TCP packet with correct DSCP on the second link to TG. +| | ${dscp}= | DSCP AF22 +| | Given Policer Set Name | policer1 +| | And Policer Set Node | ${dut_node} +| | And Policer Set CIR | ${cir} +| | And Policer Set CB | ${cb} +| | And Policer Set EB | ${eb} +| | And Policer Set Rate Type pps +| | And Policer Set Round Type Closest +| | And Policer Set Type 1R3C +| | And Policer Set Conform Action Mark and Transmit | ${dscp} +| | And Policer Set Exceed Action Transmit +| | And Policer Set Violate Action Drop +| | And Policer Classify Set Precolor Conform +| | And Policer Classify Set Interface | ${dut_to_tg_if1} +| | And Policer Classify Set Match IP | ${tg_to_dut_if1_ip} +| | When Policer Set Configuration +| | Then Send packet and verify marking | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} +| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if2_ip} | ${dscp} \ No newline at end of file diff --git a/tests/vpp/func/ip4/eth2p-ethip4-ip4base-rpf-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-rpf-func.robot new file mode 100644 index 0000000000..71246c2c57 --- /dev/null +++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4base-rpf-func.robot @@ -0,0 +1,134 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/counters.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/l2/l2_xconnect.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *Source RPF check on IPv4 test cases* +| ... +| ... | *[Top] Network Topologies:* TG - DUT1 - DUT2 - TG +| ... | with one link between the nodes. +| ... | *[Cfg] DUT configuration:* DUT2 is configured with L2 Cross connect. +| ... | DUT1 is configured with IP source check on link to TG, +| ... | *[Ver] TG verification:* Test ICMP Echo Request packets are sent +| ... | in one direction by TG on link to DUT1 and received on TG link +| ... | to DUT2. On receive TG verifies if packets which source address +| ... | is not in routes are dropped. + +*** Variables *** +| ${dut1_to_tg_ip}= | 192.168.1.1 +| ${dut1_to_tg_ip_GW}= | 192.168.1.2 +| ${dut1_to_dut2_ip}= | 192.168.2.1 +| ${dut1_to_dut2_ip_GW}= | 192.168.2.2 +| ${test_dst_ip}= | 32.0.0.1 +| ${pass_test_src_ip}= | 16.0.0.1 +| ${drop_test_src_ip}= | 24.0.0.1 +| ${prefix_length}= | 24 + +*** Test Cases *** +| TC01: VPP source RPF check on IPv4 src-addr +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG +| | ... | [Cfg] On DUT1 setup IP source check. +| | ... | [Ver] Make TG verify matching packets which source address +| | ... | is not in routes are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Arp On Dut +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} | resolve_attempts=${NONE} +| | And Add Arp On Dut +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip_GW} +| | ... | ${tg_to_dut1_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${pass_test_src_ip} | ${prefix_length} +| | ... | ${dut1_to_tg_ip_GW} | ${dut1_to_tg} | resolve_attempts=${NONE} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | Then Send packet and verify headers | ${tg_node} +| | ... | ${pass_test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers | ${tg_node} +| | ... | ${drop_test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | ${dut1_to_tg_name}= | Get Interface Name | ${dut1_node} | ${dut1_to_tg} +| | When VPP IP Source Check Setup | ${dut1_node} | ${dut1_to_tg_name} +| | Then Send packet and verify headers | ${tg_node} +| | ... | ${pass_test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers | ${tg_node} +| | ... | ${dut1_to_tg_ip_GW} | ${test_dst_ip} | ${tg_to_dut1} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | And Packet transmission from port to port should fail | ${tg_node} +| | ... | ${drop_test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} + +| TC02: VPP pass traffic on non-enabled RPF interface +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG +| | ... | [Cfg] On DUT1 setup IP source check. +| | ... | [Ver] Make TG verify matching packets on non-enabled RPF interface +| | ... | are passed. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Arp On Dut +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} | resolve_attempts=${NONE} +| | And Add Arp On Dut +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip_GW} +| | ... | ${tg_to_dut1_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${pass_test_src_ip} | ${prefix_length} +| | ... | ${dut1_to_tg_ip_GW} | ${dut1_to_tg} | resolve_attempts=${NONE} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | ${dut1_to_tg_name}= | Get Interface Name | ${dut1_node} | ${dut1_to_tg} +| | When VPP IP Source Check Setup | ${dut1_node} | ${dut1_to_tg_name} +| | Then Send packet and verify headers | ${tg_node} +| | ... | ${test_dst_ip} | ${pass_test_src_ip} | ${tg_to_dut2} +| | ... | ${tg_to_dut2_mac} | ${dut1_to_dut2_mac} | ${tg_to_dut1} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} +| | And Send packet and verify headers | ${tg_node} +| | ... | ${test_dst_ip} | ${dut1_to_tg_ip_GW} | ${tg_to_dut2} +| | ... | ${tg_to_dut2_mac} | ${dut1_to_dut2_mac} | ${tg_to_dut1} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} diff --git a/tests/vpp/func/ip4/eth2p-ethip4-ip4basevrf-func.robot b/tests/vpp/func/ip4/eth2p-ethip4-ip4basevrf-func.robot new file mode 100644 index 0000000000..b520d4df6c --- /dev/null +++ b/tests/vpp/func/ip4/eth2p-ethip4-ip4basevrf-func.robot @@ -0,0 +1,391 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *Vpn routed forwarding - baseline IPv4* +| ... | *[Top] Network Topologies:* TG=DUT1=DUT2=TG 3-node topology with two +| ... | links in between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of +| ... | IPv4. +| ... | *[Cfg] DUT configuration:* Each DUT is configured with two VRF tables; +| ... | Separation of traffic is tested by IP packets; Basic ARP and ROUTES are +| ... | set on DUT nodes; IP addresses are set on DUT interfaces. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets +| ... | are sent by TG on link to DUT1, DUT2 or back to TG; On receipt TG +| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr, +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| ${fib_table_1}= | 9 +| ${fib_table_2}= | 99 + +| ${dut1_to_tg_ip1}= | 10.0.0.3 +| ${dut1_to_tg_ip2}= | 10.0.0.4 +| ${dut2_to_tg_ip1}= | 30.0.0.3 +| ${dut2_to_tg_ip2}= | 30.0.0.4 + +| ${dut1_to_dut2_ip1}= | 20.0.0.1 +| ${dut1_to_dut2_ip2}= | 20.0.0.2 +| ${dut2_to_dut1_ip1}= | 20.0.0.3 +| ${dut2_to_dut1_ip2}= | 20.0.0.4 + +| ${tg_dut1_ip1}= | 10.0.0.1 +| ${tg_dut1_ip2}= | 10.0.0.2 +| ${tg_dut2_ip1}= | 30.0.0.1 +| ${tg_dut2_ip2}= | 30.0.0.2 + +| ${ip_prefix}= | 24 + +*** Test Cases *** +| TC01: TG packets routed to DUT ingress interface, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG +| | ... | [Enc] Eth-IPv4-ICMPv4. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. On every ingress +| | ... | and egress port on DUT is configured ARP and each DUT is configured +| | ... | with one route. +| | ... | [Ver] Packet is send from TG->DUT1-if1 to DUT1->TG-if1 and from +| | ... | TG->DUT1-if2 to DUT1->TG-if2 and checked if arrived. +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Send ICMP echo request and verify answer | ${tg_node} +| | ... | ${tg_to_dut1_if1} | ${dut1_to_tg_if1_mac} +| | ... | ${tg_to_dut1_if1_mac} | ${dut1_to_tg_ip1} | ${tg_dut1_ip1} | 5 +| | And Send ICMP echo request and verify answer | ${tg_node} +| | ... | ${tg_to_dut1_if2} | ${dut1_to_tg_if2_mac} +| | ... | ${tg_to_dut1_if2_mac} | ${dut1_to_tg_ip2} | ${tg_dut1_ip2} | 5 + +| TC02: TG packets routed to DUT egress interface, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG +| | ... | [Enc] Eth-IPv4-ICMPv4. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. On every ingress +| | ... | and egress port on DUT is configured ARP and each DUT is configured +| | ... | with one route. +| | ... | [Ver] Packet is send from TG->DUT1-if1 to DUT1->DUT2-if1 and from +| | ... | TG->DUT1-if2 to DUT1->DUT2-if2 and checked if arrived. +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if1} +| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} +| | ... | ${dut1_to_dut2_ip1} | ${tg_dut1_ip1} | 5 +| | And Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if2} +| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} +| | ... | ${dut1_to_dut2_ip2} | ${tg_dut1_ip2} | 5 + +| TC03: TG packets routed to DUT2 ingress interface through DUT1, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG +| | ... | [Enc] Eth-IPv4-ICMPv4. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. On every ingress +| | ... | and egress port on DUT is configured ARP and each DUT is configured +| | ... | with one route. +| | ... | [Ver] Packet is send from TG->DUT1-if1 to DUT2->DUT1-if1 and from +| | ... | TG->DUT1-if2 to DUT2->DUT1-if2 and checked if arrived. +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if1} +| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} +| | ... | ${dut2_to_dut1_ip1} | ${tg_dut1_ip1} | 5 +| | And Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if2} +| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} +| | ... | ${dut2_to_dut1_ip2} | ${tg_dut1_ip2} | 5 + +| TC04: TG packets routed to DUT2 egress interface through DUT1, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG +| | ... | [Enc] Eth-IPv4-ICMPv4. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. On every ingress +| | ... | and egress port on DUT is configured ARP and each DUT is configured +| | ... | with one route. +| | ... | [Ver] Packet is send from TG->DUT1-if1 to DUT2->TG-if1 and from +| | ... | TG->DUT1-if2 to DUT2->TG-if2 and checked if arrived. +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if1} +| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} +| | ... | ${dut2_to_tg_ip1} | ${tg_dut1_ip1} | 5 +| | And Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if2} +| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} +| | ... | ${dut2_to_tg_ip2} | ${tg_dut1_ip2} | 5 + +| TC05: TG packets routed to TG through DUT1 and DUT2, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG +| | ... | [Enc] Eth-IPv4-ICMPv4. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. On every ingress +| | ... | and egress port on DUT is configured ARP and each DUT is configured +| | ... | with one route. +| | ... | [Ver] Packet is send from TG->DUT1-if1 to TG->DUT2-if1 and from +| | ... | TG->DUT1-if2 to TG->DUT2-if2 and checked if arrived. +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Send packet and verify headers | ${tg_node} | ${tg_dut1_ip1} +| | ... | ${tg_dut2_ip1} | ${tg_to_dut1_if1} | ${tg_to_dut1_if1_mac} +| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut2_if1} | ${dut2_to_tg_if1_mac} +| | ... | ${tg_to_dut2_if1_mac} +| | And Send packet and verify headers | ${tg_node} +| | ... | ${tg_dut1_ip2} | ${tg_dut2_ip2} | ${tg_to_dut1_if2} +| | ... | ${tg_to_dut1_if2_mac} | ${dut1_to_tg_if2_mac} | ${tg_to_dut2_if2} +| | ... | ${dut2_to_tg_if2_mac} | ${tg_to_dut2_if2_mac} + +| TC06: TG packets not routed to DUT ingress interface in different VRF, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG +| | ... | [Enc] Eth-IPv4-ICMPv4. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. On every ingress +| | ... | and egress port on DUT is configured ARP and each DUT is configured +| | ... | with one route. +| | ... | [Ver] Packet is send from TG->DUT1-if1 to DUT1->TG-if2 where it +| | ... | should not arrive. +| | [Tags] | SKIP_PATCH +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP echo request and verify answer +| | ... | ${tg_node} | ${tg_to_dut1_if1} +| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} +| | ... | ${dut1_to_tg_ip2} | ${tg_dut1_ip1} | 5 + +| TC07: TG packets not routed to DUT egress interface in different VRF, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG +| | ... | [Enc] Eth-IPv4-ICMPv4. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. On every ingress +| | ... | and egress port on DUT is configured ARP and each DUT is configured +| | ... | with one route. +| | ... | [Ver] Packet is send from TG->DUT1-if1 to DUT1->DUT2-if2 where it +| | ... | should not arrive. +| | [Tags] | SKIP_PATCH +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP echo request and verify answer +| | ... | ${tg_node} | ${tg_to_dut1_if1} +| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} +| | ... | ${dut1_to_dut2_ip2} | ${tg_dut1_ip1} | 5 + +| TC08: TG packets not routed to DUT2 ingress interface in different VRF through DUT1, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG +| | ... | [Enc] Eth-IPv4-ICMPv4. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. On every ingress +| | ... | and egress port on DUT is configured ARP and each DUT is configured +| | ... | with one route. +| | ... | [Ver] Packet is send from TG->DUT1-if1 to DUT2->DUT1-if2 where it +| | ... | should not arrive. +| | [Tags] | SKIP_PATCH +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP echo request and verify answer +| | ... | ${tg_node} | ${tg_to_dut1_if1} +| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} +| | ... | ${dut2_to_dut1_ip2} | ${tg_dut1_ip1} | 5 + +| TC09: TG packets not routed to DUT2 egress interface in different VRF through DUT1, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG +| | ... | [Enc] Eth-IPv4-ICMPv4. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. On every ingress +| | ... | and egress port on DUT is configured ARP and each DUT is configured +| | ... | with one route. +| | ... | [Ver] Packet is send from TG->DUT1-if1 to DUT2->TG-if2 where it +| | ... | should not arrive. +| | [Tags] | SKIP_PATCH +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP echo request and verify answer +| | ... | ${tg_node} | ${tg_to_dut1_if1} +| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} +| | ... | ${dut2_to_tg_ip2} | ${tg_dut1_ip1} | 5 + +| TC10: TG packets not routed to TG in different VRF through DUT1 and DUT2, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG. +| | ... | [Enc] Eth-IPv4-ICMPv4. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. On every ingress +| | ... | and egress port on DUT is configured ARP and each DUT is configured +| | ... | with one route. +| | ... | [Ver] Packet is send from TG->DUT1-if1 to TG->DUT2-if2 where it +| | ... | should not arrive. +| | [Tags] | SKIP_PATCH +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send packet and verify headers | ${tg_node} | ${tg_dut1_ip1} +| | ... | ${tg_dut2_ip2} | ${tg_to_dut1_if1} +| | ... | ${tg_to_dut1_if1_mac} | ${dut1_to_tg_if1_mac} | ${tg_to_dut2_if2} +| | ... | ${dut2_to_tg_if2_mac} | ${tg_to_dut2_if2_mac} + +*** Keywords *** +| Setup Env - 2xVRF Each Node +| | [Documentation] +| | ... | Environment is set up with 2 fib tables on each DUT. DUT1-TG-IF1 and \ +| | ... | DUT1-DUT2-IF1 are assigned to FIB1, and DUT1-TG-IF2 and DUT1-DUT2-IF2 +| | ... | are assigned to FIB2 (the some done on DUT2, just opposite). IP +| | ... | addresses are subsequently set on interfaces, and ARP is set for +| | ... | neighbors. The last setting is route for each fib table. +| | ... +| | ${dut1_if1_idx}= | Get Interface SW Index +| | ... | ${dut1_node} | ${dut1_to_dut2_if1} +| | ${dut1_if2_idx}= | Get Interface SW Index +| | ... | ${dut1_node} | ${dut1_to_dut2_if2} +| | ${dut2_if1_idx}= | Get Interface SW Index +| | ... | ${dut2_node} | ${dut2_to_dut1_if1} +| | ${dut2_if2_idx}= | Get Interface SW Index +| | ... | ${dut2_node} | ${dut2_to_dut1_if2} +| | And Add fib table | ${dut1_node} +| | ... | ${tg_dut2_ip1} | ${ip_prefix} | ${fib_table_1} +| | ... | via ${dut2_to_dut1_ip1} sw_if_index ${dut1_if1_idx} multipath +| | And Add fib table | ${dut1_node} +| | ... | ${tg_dut2_ip2} | ${ip_prefix} | ${fib_table_2} +| | ... | via ${dut1_to_dut2_ip2} sw_if_index ${dut1_if2_idx} multipath +| | And Add fib table | ${dut2_node} +| | ... | ${tg_dut1_ip1} | ${ip_prefix} | ${fib_table_1} +| | ... | via ${dut2_to_dut1_ip1} sw_if_index ${dut2_if1_idx} multipath +| | And Add fib table | ${dut2_node} +| | ... | ${tg_dut1_ip2} | ${ip_prefix} | ${fib_table_2} +| | ... | via ${dut2_to_dut1_ip2} sw_if_index ${dut2_if2_idx} multipath + +| | Assign Interface To Fib Table +| | ... | ${dut1_node} | ${dut1_to_dut2_if1} | ${fib_table_1} +| | Assign Interface To Fib Table +| | ... | ${dut1_node} | ${dut1_to_dut2_if2} | ${fib_table_2} +| | Assign Interface To Fib Table +| | ... | ${dut1_node} | ${dut1_to_tg_if1} | ${fib_table_1} +| | Assign Interface To Fib Table +| | ... | ${dut1_node} | ${dut1_to_tg_if2} | ${fib_table_2} + +| | Assign Interface To Fib Table +| | ... | ${dut2_node} | ${dut2_to_dut1_if1} | ${fib_table_1} +| | Assign Interface To Fib Table +| | ... | ${dut2_node} | ${dut2_to_dut1_if2} | ${fib_table_2} +| | Assign Interface To Fib Table +| | ... | ${dut2_node} | ${dut2_to_tg_if1} | ${fib_table_1} +| | Assign Interface To Fib Table +| | ... | ${dut2_node} | ${dut2_to_tg_if2} | ${fib_table_2} + +| | And Set Interface Address +| | ... | ${dut1_node} | ${dut1_to_tg_if1} | ${dut1_to_tg_ip1} | ${ip_prefix} +| | And Set Interface Address +| | ... | ${dut1_node} | ${dut1_to_tg_if2} | ${dut1_to_tg_ip2} | ${ip_prefix} +| | And Set Interface Address +| | ... | ${dut1_node} | ${dut1_to_dut2_if1} +| | ... | ${dut1_to_dut2_ip1} | ${ip_prefix} +| | And Set Interface Address +| | ... | ${dut1_node} | ${dut1_to_dut2_if2} +| | ... | ${dut1_to_dut2_ip2} | ${ip_prefix} + +| | And Set Interface Address +| | ... | ${dut2_node} | ${dut2_to_tg_if1} | ${dut2_to_tg_ip1} | ${ip_prefix} +| | And Set Interface Address +| | ... | ${dut2_node} | ${dut2_to_tg_if2} | ${dut2_to_tg_ip2} | ${ip_prefix} +| | And Set Interface Address +| | ... | ${dut2_node} | ${dut2_to_dut1_if1} +| | ... | ${dut2_to_dut1_ip1} | ${ip_prefix} +| | And Set Interface Address +| | ... | ${dut2_node} | ${dut2_to_dut1_if2} +| | ... | ${dut2_to_dut1_ip2} | ${ip_prefix} + +| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_tg_if1} +| | ... | ${tg_dut1_ip1} | ${tg_to_dut1_if1_mac} +| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_dut2_if1} +| | ... | ${dut2_to_dut1_ip1} | ${dut2_to_dut1_if1_mac} +| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg_if1} +| | ... | ${tg_dut2_ip1} | ${tg_to_dut2_if1_mac} +| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_dut1_if1} +| | ... | ${dut1_to_dut2_ip1} | ${dut1_to_dut2_if1_mac} + +| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_tg_if2} +| | ... | ${tg_dut1_ip2} | ${tg_to_dut1_if2_mac} +| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_dut2_if2} +| | ... | ${dut2_to_dut1_ip2} | ${dut2_to_dut1_if2_mac} +| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg_if2} +| | ... | ${tg_dut2_ip2} | ${tg_to_dut2_if2_mac} +| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_dut1_if2} +| | ... | ${dut1_to_dut2_ip2} | ${dut1_to_dut2_if2_mac} + +| | And Vpp Route Add | ${dut1_node} | ${tg_dut2_ip1} | ${ip_prefix} +| | ... | ${dut2_to_dut1_ip1} | ${dut1_to_dut2_if1} | vrf=${fib_table_1} +| | And Vpp Route Add | ${dut2_node} | ${tg_dut1_ip1} | ${ip_prefix} +| | ... | ${dut1_to_dut2_ip1} | ${dut2_to_dut1_if1} | vrf=${fib_table_1} + +| | And Vpp Route Add | ${dut1_node} | ${tg_dut2_ip2} | ${ip_prefix} +| | ... | ${dut2_to_dut1_ip2} | ${dut1_to_dut2_if2} | vrf=${fib_table_2} +| | And Vpp Route Add | ${dut2_node} | ${tg_dut1_ip2} | ${ip_prefix} +| | ... | ${dut1_to_dut2_ip2} | ${dut2_to_dut1_if2} | vrf=${fib_table_2} diff --git a/tests/vpp/func/ip4_tunnels/gre/eth2p-ethip4gre-ip4base-func.robot b/tests/vpp/func/ip4_tunnels/gre/eth2p-ethip4gre-ip4base-func.robot new file mode 100644 index 0000000000..a4e7dbbbb0 --- /dev/null +++ b/tests/vpp/func/ip4_tunnels/gre/eth2p-ethip4gre-ip4base-func.robot @@ -0,0 +1,306 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/overlay/gre.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.Trace +| Force Tags | VM_ENV | HW_ENV | 3_NODE_DOUBLE_LINK_TOPO | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *GREoIPv4 test cases* +| ... +| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links +| ... | between nodes; TG-DUT1-DUT2-TG 3-node circular topology with single +| ... | links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-GRE-IPv4-ICMPv4 on DUT1-DUT2, +| ... | Eth-IPv4-ICMPv4 on TG-DUTn for routing over GRE tunnel; Eth-IPv4-ICMPv4 +| ... | on TG_if1-DUT, Eth-IPv4-GRE-IPv4-ICMPv4 on TG_if2_DUT for GREoIPv4 +| ... | encapsulation and decapsulation verification. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 routing +| ... | and static routes. GREoIPv4 tunnel is configured between DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets are +| ... | sent in both directions by TG on links to DUT1 and DUT2; GREoIPv4 +| ... | encapsulation and decapsulation are verified separately by TG; on +| ... | receive TG verifies packets for correctness and their IPv4 (IPv6) +| ... | src-addr, dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC2784. + +*** Variables *** +| ${net1_address}= | 192.168.0.0 +| ${net1_host_address}= | 192.168.0.100 +| ${net1_gw_address}= | 192.168.0.1 +| ${net2_address}= | 192.168.2.0 +| ${net2_host_address}= | 192.168.2.100 +| ${net3_address}= | 192.168.3.0 +| ${net3_host_address}= | 192.168.3.100 +| ${net2_gw_address}= | 192.168.2.1 +| ${dut1_ip_address}= | 192.168.1.1 +| ${dut2_ip_address}= | 192.168.1.2 +| ${dut1_gre_ip}= | 172.16.0.1 +| ${dut2_gre_ip}= | 172.16.0.2 +| ${dut_tun0_ip1}= | 172.16.0.1 +| ${dut_tun0_ip2}= | 172.16.0.2 +| ${dut_tun1_ip1}= | 172.16.1.1 +| ${dut_tun1_ip2}= | 172.16.1.2 +| ${dut1_lo_address}= | 10.0.0.1 +| ${tun0_dst}= | 10.0.0.2 +| ${tun1_dst}= | 10.0.0.3 +| ${prefix}= | 24 + +*** Test Cases *** +| TC01: DUT1 and DUT2 route over GREoIPv4 tunnel between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-GRE-IPv4-ICMPv4 on \ +| | ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 and DUT2 +| | ... | configure GREoIPv4 tunnel with IPv4 routes towards each other. +| | ... | [Ver] Make TG send ICMPv4 Echo Req between its interfaces across +| | ... | both DUTs and GRE tunnel between them; verify IPv4 headers on +| | ... | received packets are correct. [Ref] RFC2784. +| | [Tags] | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO +| | Given Configure path in 3-node circular topology | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Configure IP addresses on interfaces +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_ip_address} | ${prefix} +| | ... | ${dut1_node} | ${dut1_to_tg} | ${net1_gw_address} | ${prefix} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_ip_address} | ${prefix} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${net2_gw_address} | ${prefix} +| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${dut2_ip_address} +| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${dut1_ip_address} +| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg} | ${net2_host_address} +| | ... | ${tg_to_dut2_mac} +| | ${dut1_gre_interface} | ${dut1_gre_index}= +| | ... | When Create GRE tunnel interface and set it up +| | ... | ${dut1_node} | ${dut1_ip_address} | ${dut2_ip_address} +| | ${dut2_gre_interface} | ${dut2_gre_index}= +| | ... | And Create GRE tunnel interface and set it up +| | ... | ${dut2_node} | ${dut2_ip_address} | ${dut1_ip_address} +| | And Configure IP addresses on interfaces +| | ... | ${dut1_node} | ${dut1_gre_index} | ${dut1_gre_ip} | ${prefix} +| | ... | ${dut2_node} | ${dut2_gre_index} | ${dut2_gre_ip} | ${prefix} +| | And Vpp Route Add | ${dut1_node} | ${net2_address} | ${prefix} +| | ... | ${dut2_gre_ip} | ${dut1_gre_index} +| | Then Send packet and verify headers | ${tg_node} +| | ... | ${net1_host_address} | ${net2_host_address} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} + +| TC02: DUT encapsulates IPv4 into GREoIPv4 tunnel - GRE header verification +| | [Documentation] +| | ... | [Top] TG=DUT1. [Enc] Eth-IPv4-ICMPv4 on TG_if1-DUT, \ +| | ... | Eth-IPv4-GRE-IPv4-ICMPv4 on TG_if2_DUT. [Cfg] On DUT1 configure +| | ... | GREoIPv4 tunnel with IPv4 route towards TG. [Ver] Make TG send +| | ... | non-encapsulated ICMPv4 Echo Req to DUT; verify TG received +| | ... | GREoIPv4 encapsulated packet is correct. [Ref] RFC2784. +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut1_ip_address} | ${prefix} +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${net1_gw_address} | ${prefix} +| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if2} | ${dut2_ip_address} +| | ... | ${tg_to_dut_if2_mac} +| | ${dut1_gre_interface} | ${dut1_gre_index}= +| | ... | When Create GRE tunnel interface and set it up +| | ... | ${dut_node} | ${dut1_ip_address} | ${dut2_ip_address} +| | And Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut1_gre_index} | ${dut1_gre_ip} | ${prefix} +| | And Vpp Route Add | ${dut_node} | ${net2_address} | ${prefix} +| | ... | ${dut2_gre_ip} | ${dut1_gre_index} +| | Then Send ICMPv4 and check received GRE header +| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} +| | ... | ${dut_to_tg_if1_mac} | ${tg_to_dut_if2_mac} +| | ... | ${net1_host_address} | ${net2_host_address} +| | ... | ${dut1_ip_address} | ${dut2_ip_address} + +| TC03: DUT decapsulates IPv4 from GREoIPv4 tunnel - IPv4 header verification +| | [Documentation] +| | ... | [Top] TG=DUT1. [Enc] Eth-IPv4-ICMPv4 on TG_if1-DUT, \ +| | ... | Eth-IPv4-GRE-IPv4-ICMPv4 on TG_if2_DUT. [Cfg] On DUT1 configure +| | ... | GREoIPv4 tunnel towards TG. [Ver] Make TG send ICMPv4 Echo Req +| | ... | encapsulated into GREoIPv4 towards VPP; verify TG received IPv4 +| | ... | de-encapsulated packet is correct. [Ref] RFC2784. +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut1_ip_address} | ${prefix} +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${net1_gw_address} | ${prefix} +| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if1} | ${net1_host_address} +| | ... | ${tg_to_dut_if1_mac} +| | ${dut1_gre_interface} | ${dut1_gre_index}= +| | ... | When Create GRE tunnel interface and set it up +| | ... | ${dut_node} | ${dut1_ip_address} | ${dut2_ip_address} +| | And Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut1_gre_index} | ${dut1_gre_ip} | ${prefix} +| | Then Send GRE and check received ICMPv4 header +| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if1} +| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if1_mac} +| | ... | ${net2_host_address} | ${net1_host_address} +| | ... | ${dut2_ip_address} | ${dut1_ip_address} + +| TC04: DUT encapsulates IPv4 into GREoIPv4 different tunnels - GRE header verification +| | [Documentation] +| | ... | [Top] TG=DUT1. [Enc] Eth-IPv4-ICMPv4 on TG_if1-DUT, \ +| | ... | Eth-IPv4-GRE-IPv4-ICMPv4 on TG_if2_DUT. [Cfg] On DUT1 configure two +| | ... | GRE tunnels with loopback's source address. Destination address of +| | ... | tunnels are routed via next hop address of DUT's to TG if2, where +| | ... | should be only GRE encapsulated packets. Each tunnel has IPv4 address +| | ... | and configured prefix routed through the tunnel. [Ver] Make TG send +| | ... | non-encapsulated ICMPv4 Echo Req to DUT; verify TG received GREoIPv4 +| | ... | encapsulated packet is correct for each tunnel. [Ref] RFC2784. +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | ${dut1_lo_index}= | And VPP Create loopback | ${dut_node} +| | And Set Interface State | ${dut_node} | ${dut1_lo_index} | up +| | And Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut1_ip_address} | ${prefix} +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${net1_gw_address} | ${prefix} +| | ... | ${dut_node} | ${dut1_lo_index} | ${dut1_lo_address} | ${32} +| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if2} | ${dut2_ip_address} +| | ... | ${tg_to_dut_if2_mac} +| | And Vpp Route Add | ${dut_node} | ${tun0_dst} | ${32} +| | ... | ${dut2_ip_address} | ${dut_to_tg_if2} +| | And Vpp Route Add | ${dut_node} | ${tun1_dst} | ${32} +| | ... | ${dut2_ip_address} | ${dut_to_tg_if2} +| | ${dut1_gre0_interface} | ${dut1_gre0_index}= +| | ... | When Create GRE tunnel interface and set it up +| | ... | ${dut_node} | ${dut1_lo_address} | ${tun0_dst} +| | ${dut1_gre1_interface} | ${dut1_gre1_index}= +| | ... | And Create GRE tunnel interface and set it up +| | ... | ${dut_node} | ${dut1_lo_address} | ${tun1_dst} +| | And Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut1_gre0_index} | ${dut_tun0_ip1} | ${prefix} +| | ... | ${dut_node} | ${dut1_gre1_index} | ${dut_tun1_ip1} | ${prefix} +| | And Vpp Route Add | ${dut_node} | ${net2_address} | ${prefix} +| | ... | ${dut_tun0_ip2} | ${dut1_gre0_index} +| | And Vpp Route Add | ${dut_node} | ${net3_address} | ${prefix} +| | ... | ${dut_tun1_ip2} | ${dut1_gre1_index} +| | Then Send ICMPv4 and check received GRE header +| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} +| | ... | ${dut_to_tg_if1_mac} | ${tg_to_dut_if2_mac} +| | ... | ${net1_host_address} | ${net2_host_address} +| | ... | ${dut1_lo_address} | ${tun0_dst} +| | And Send ICMPv4 and check received GRE header +| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} +| | ... | ${dut_to_tg_if1_mac} | ${tg_to_dut_if2_mac} +| | ... | ${net1_host_address} | ${net3_host_address} +| | ... | ${dut1_lo_address} | ${tun1_dst} + +| TC05: DUT re-encapsulates IPv4 GRE into other GRE tunnel - GRE header verification +| | [Documentation] +| | ... | [Top] TG=DUT1. [Enc] Eth-IPv4-ICMPv4 on TG_if1-DUT, \ +| | ... | Eth-IPv4-GRE-IPv4-ICMPv4 on TG_if2_DUT. [Cfg] On DUT1 configure two +| | ... | GRE tunnels with loopback's source address. Destination address of +| | ... | tunnels are routed via next hop address of DUT's to TG if2, where +| | ... | should be only GRE encapsulated packets. Each tunnel has IPv4 address +| | ... | and configured prefix routed through the tunnel. [Ver] Make TG send +| | ... | encapsulated IPv4 UDP to DUT; Encapsulated IP source is behind +| | ... | configured tunnel same as destination; verify TG received GREoIPv4 +| | ... | encapsulated packet is correct. [Ref] RFC2784. +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | ${dut1_lo_index}= | And VPP Create loopback | ${dut_node} +| | And Set Interface State | ${dut_node} | ${dut1_lo_index} | up +| | And Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut1_ip_address} | ${prefix} +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${net1_gw_address} | ${prefix} +| | ... | ${dut_node} | ${dut1_lo_index} | ${dut1_lo_address} | ${32} +| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if2} | ${dut2_ip_address} +| | ... | ${tg_to_dut_if2_mac} +| | And Vpp Route Add | ${dut_node} | ${tun0_dst} | ${32} +| | ... | ${dut2_ip_address} | ${dut_to_tg_if2} +| | And Vpp Route Add | ${dut_node} | ${tun1_dst} | ${32} +| | ... | ${dut2_ip_address} | ${dut_to_tg_if2} +| | ${dut1_gre0_interface} | ${dut1_gre0_index}= +| | ... | When Create GRE tunnel interface and set it up +| | ... | ${dut_node} | ${dut1_lo_address} | ${tun0_dst} +| | ${dut1_gre1_interface} | ${dut1_gre1_index}= +| | ... | And Create GRE tunnel interface and set it up +| | ... | ${dut_node} | ${dut1_lo_address} | ${tun1_dst} +| | And Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut1_gre0_index} | ${dut_tun0_ip1} | ${prefix} +| | ... | ${dut_node} | ${dut1_gre1_index} | ${dut_tun1_ip1} | ${prefix} +| | And Vpp Route Add | ${dut_node} | ${net2_address} | ${prefix} +| | ... | ${dut_tun0_ip2} | ${dut1_gre0_index} +| | And Vpp Route Add | ${dut_node} | ${net3_address} | ${prefix} +| | ... | ${dut_tun1_ip2} | ${dut1_gre1_index} +| | Then Send GRE and check received GRE header +| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if2} +| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} +| | ... | ${dut1_lo_address} | ${tun0_dst} +| | ... | ${net3_host_address} | ${net2_host_address} +| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} +| | ... | ${tun1_dst} | ${dut1_lo_address} + +| TC06: DUT do not process GRE with wrong tunnel destination IP +| | [Documentation] +| | ... | [Top] TG=DUT1. [Enc] Eth-IPv4-ICMPv4 on TG_if1-DUT, \ +| | ... | Eth-IPv4-GRE-IPv4-ICMPv4 on TG_if2_DUT. [Cfg] On DUT1 configure two +| | ... | GRE tunnels with loopback's source address. Destination address of +| | ... | tunnels are routed via next hop address of DUT's to TG if2, where +| | ... | should be only GRE encapsulated packets. On DUT's to TG if1 interface +| | ... | is configured test destination host MAC address. [Ver] Make TG send +| | ... | GRE encapsulated ICMPv4 Echo Req to DUT; verify TG received +| | ... | de-capsulated packet is correct, then send packet with wrong tunnel +| | ... | destination address. [Ref] RFC2784. +| | ... | +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | ${dut1_lo_index}= | And VPP Create loopback | ${dut_node} +| | And Set Interface State | ${dut_node} | ${dut1_lo_index} | up +| | And Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut1_ip_address} | ${prefix} +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${net1_gw_address} | ${prefix} +| | ... | ${dut_node} | ${dut1_lo_index} | ${dut1_lo_address} | ${32} +| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if1} | ${net1_host_address} +| | ... | ${tg_to_dut_if1_mac} +| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if2} | ${dut2_ip_address} +| | ... | ${tg_to_dut_if2_mac} +| | And Vpp Route Add | ${dut_node} | ${tun0_dst} | ${32} +| | ... | ${dut2_ip_address} | ${dut_to_tg_if2} +| | And Vpp Route Add | ${dut_node} | ${tun1_dst} | ${32} +| | ... | ${dut2_ip_address} | ${dut_to_tg_if2} +| | ${dut1_gre0_interface} | ${dut1_gre0_index}= +| | ... | When Create GRE tunnel interface and set it up +| | ... | ${dut_node} | ${dut1_lo_address} | ${tun0_dst} +| | ${dut1_gre1_interface} | ${dut1_gre1_index}= +| | ... | And Create GRE tunnel interface and set it up +| | ... | ${dut_node} | ${dut1_lo_address} | ${tun1_dst} +| | And Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut1_gre0_index} | ${dut_tun0_ip1} | ${prefix} +| | ... | ${dut_node} | ${dut1_gre1_index} | ${dut_tun1_ip1} | ${prefix} +| | Then Send GRE and check received ICMPv4 header +| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if1} +| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if1_mac} +| | ... | ${net2_host_address} | ${net1_host_address} +| | ... | ${tun0_dst} | ${dut1_lo_address} +| | And Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send GRE and check received ICMPv4 header | +| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if1} +| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if1_mac} +| | ... | ${net2_host_address} | ${net1_host_address} +| | ... | ${tun0_dst} | ${dut1_ip_address} diff --git a/tests/vpp/func/ip4_tunnels/lisp/api-crud-lisp-func.robot b/tests/vpp/func/ip4_tunnels/lisp/api-crud-lisp-func.robot new file mode 100644 index 0000000000..118d657515 --- /dev/null +++ b/tests/vpp/func/ip4_tunnels/lisp/api-crud-lisp-func.robot @@ -0,0 +1,116 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.LispUtil +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/overlay/lisp_api.robot +# import additional Lisp settings from resource file +| Variables | resources/test_data/lisp/api/lisp_api_resources.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO +| ... | VM_ENV | HW_ENV +| ... +| Test Setup | Set up functional test +| ... +| Test Teardown | Tear down functional test +| ... +| Documentation | *API test cases* +| ... +| ... | *[Top] Network Topologies:* DUT1 1-node topology. +| ... | *[Enc] Packet Encapsulations:* None. +| ... | *[Cfg] DUT configuration:* DUT1 gets configured with all LISP +| ... | parameters. +| ... | *[Ver] Verification:* DUT1 operational data gets verified following +| ... | configuration. +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Variables *** +| ${locator_set_num}= | 3 + +*** Test Cases *** + +| TC01: DUT can enable and disable LISP +| | [Documentation] +| | ... | [Top] DUT1. [Enc] None. [Cfg1] Test LISP enable/disable API; On \ +| | ... | DUT1 enable LISP. [Ver1] Check DUT1 if LISP is enabled. [Cfg2] +| | ... | Then disable LISP. [Ver2] Check DUT1 if LISP is disabled. [Ref] +| | ... | RFC6830. +| | When Enable LISP | ${nodes['DUT1']} +| | Then LISP should be enabled | ${nodes['DUT1']} | ${lisp_status} +| | When Disable LISP | ${nodes['DUT1']} +| | Then LISP Should be disabled | ${nodes['DUT1']} | ${lisp_status} + +| TC02: DUT can add and delete locator_set +| | [Documentation] +| | ... | [Top] DUT1. [Enc] None. [Cfg1] Test LISP locator_set API; on \ +| | ... | DUT1 configure locator_set and locator. [Ver1] Check DUT1 +| | ... | configured locator_set and locator are correct. [Cfg2] Then +| | ... | remove locator_set and locator. [Ver2] check DUT1 locator_set +| | ... | and locator are removed. [Ref] RFC6830. +| | Given Generate LISP locator_set data +| | ... | ${nodes['DUT1']} | ${locator_set_num} +| | And Enable LISP | ${nodes['DUT1']} +| | When Configure LISP locator_set data | ${nodes['DUT1']} +| | Then LISP locator_set shpuld be configured correctly | ${nodes['DUT1']} +| | When Delete all LISP locator_set from VPP | ${nodes['DUT1']} +| | Then LISP locator_set should be unset | ${nodes['DUT1']} + +| TC03: DUT can add, reset and delete locator_set +| | [Documentation] +| | ... | [Top] DUT1. [Enc] None. [Cfg1] Test LISP locator_set API; on \ +| | ... | DUT1 configure locator_set and locator. [Ver1] Check DUT1 +| | ... | locator_set and locator are correct. [Cfg2] Then reset +| | ... | locator_set and set it again. [Ver2] Check DUT1 locator_set and +| | ... | locator are correct. [Cfg3] Then remove locator_set and locator. +| | ... | [Ver3] Check DUT1 all locator_set and locators are removed. +| | ... | [Ref] RFC6830. +| | Given Lisp locator_set data use for test reset locator_set are prepared +| | ... | ${nodes['DUT1']} | ${locator_set_num} +| | And Enable LISP | ${nodes['DUT1']} +| | When Configure LISP locator_set data | ${nodes['DUT1']} +| | Then LISP locator_set shpuld be configured correctly | ${nodes['DUT1']} +| | When Delete all LISP locator_set from VPP | ${nodes['DUT1']} +| | Then LISP locator_set should be unset | ${nodes['DUT1']} + +| TC04: DUT can add and delete eid address +| | [Documentation] +| | ... | [Top] DUT1. [Enc] None. [Cfg1] Test LISP eid API; on DUT1 \ +| | ... | configure LISP eid IP address. [Ver1] Check DUT1 configured data +| | ... | is correct. [Cfg2] Remove configured data. [Ver2] Check DUT1 all +| | ... | eid IP addresses are removed. [Ref] RFC6830. +| | Given Enable LISP | ${nodes['DUT1']} +| | When Configure LISP eid address | ${nodes['DUT1']} | ${eid_table} +| | Then LISP eid address should be set correctly to eid table +| | ... | ${nodes['DUT1']} | ${eid_table_vat} +| | When Delete all LISP eid address from VPP | ${nodes['DUT1']} | ${eid_table} +| | Then LISP eid table should be empty | ${nodes['DUT1']} + +| TC05: DUT can add and delete LISP map resolver address +| | [Documentation] +| | ... | [Top] DUT1. [Enc] None. [Cfg1] Test LISP map resolver address \ +| | ... | API; on DUT1 configure LISP map resolver address. [Ver1] Check +| | ... | DUT1 configured data is correct. [Cfg2] Remove configured data. +| | ... | [Ver2] Check DUT1 all map resolver addresses are removed. [Ref] +| | ... | RFC6830. +| | Given Enable LISP | ${nodes['DUT1']} +| | When Configure LISP map resolver address | ${nodes['DUT1']} | ${map_resolver} +| | Then LISP map resolver address should be configured correctly +| | ... | ${nodes['DUT1']} | ${map_resolver} +| | When Delete all LISP map resolver address from VPP +| | ... | ${nodes['DUT1']} | ${map_resolver} +| | Then LISP map resolver address should be empty | ${nodes['DUT1']} diff --git a/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lisp-ip4base-func.robot b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lisp-ip4base-func.robot new file mode 100644 index 0000000000..ae9485c3b8 --- /dev/null +++ b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lisp-ip4base-func.robot @@ -0,0 +1,124 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.Trace +# import additional Lisp settings from resource file +| Variables | resources/test_data/lisp/static_adjacency/lisp_static_adjacency.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO +| ... | VM_ENV | HW_ENV +| ... +| Test Setup | Set up functional test +| ... +| Test Teardown | Tear down functional test +| ... +| Documentation | *IP AFI independent functional tests.* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv4-ICMPv4 on DUT1-DUT2,\ +| ... | Eth-IPv4-ICMPv4 on TG-DUTn for IPv4 routing over LISPoIPv4 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ +| ... | routing and static routes. LISPoIPv4 tunnel is\ +| ... | configured between DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets\ +| ... | are sent in both directions by TG on links to DUT1 and DUT2; on receive\ +| ... | TG verifies packets for correctness and their IPv4 src-addr,\ +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv4 over LISPoIPv4 tunnel after disable-enable +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-LISP-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on\ +| | ... | TG-DUTn. +| | ... | [Cfg1] On DUT1 and DUT2 configure IPv4 LISP static adjacencies. +| | ... | [Ver1] Make TG send ICMPv4 Echo Req between its interfaces across\ +| | ... | both DUTs and LISP tunnel between them; verify IPv4 headers on\ +| | ... | received packets are correct. +| | ... | [Cfg2] Disable LISP. +| | ... | [Ver2] Verify packets are not received via LISP tunnel. +| | ... | [Cfg3] Re-enable LISP. +| | ... | [Ver3] Verify packets are received again via LISP tunnel. +| | ... | [Ref] RFC6830. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Configure IP addresses on interfaces +| | ... | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${dut1_to_dut2_ip4} | ${prefix4} +| | ... | ${dut1_node} | ${dut1_to_tg} +| | ... | ${dut1_to_tg_ip4} | ${prefix4} +| | ... | ${dut2_node} | ${dut2_to_dut1} +| | ... | ${dut2_to_dut1_ip4} | ${prefix4} +| | ... | ${dut2_node} | ${dut2_to_tg} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} +| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} +| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} +| | ... | ${tg_to_dut2_mac} +| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} +| | ... | ${tg_to_dut1_mac} +| | When Configure LISP topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_to_dut2_ip4_static_adjacency} +| | ... | ${dut2_to_dut1_ip4_static_adjacency} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} +| | When Disable Lisp | ${dut1_node} +| | Then Packet transmission from port to port should fail +| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Packet transmission from port to port should fail +| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} +| | When Enable Lisp | ${dut1_node} +| | And Vpp Add Lisp Adjacency | ${dut1_node} +| | ... | ${dut1_to_dut2_ip4_static_adjacency['vni']} +| | ... | ${dut1_to_dut2_ip4_static_adjacency['deid']} +| | ... | ${dut1_to_dut2_ip4_static_adjacency['prefix']} +| | ... | ${dut1_to_dut2_ip4_static_adjacency['seid']} +| | ... | ${dut1_to_dut2_ip4_static_adjacency['prefix']} +| | And Vpp Add Lisp Adjacency | ${dut2_node} +| | ... | ${dut2_to_dut1_ip4_static_adjacency['vni']} +| | ... | ${dut2_to_dut1_ip4_static_adjacency['deid']} +| | ... | ${dut2_to_dut1_ip4_static_adjacency['prefix']} +| | ... | ${dut2_to_dut1_ip4_static_adjacency['seid']} +| | ... | ${dut2_to_dut1_ip4_static_adjacency['prefix']} +| | Then Wait Until Keyword Succeeds | 2x | 5s | Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Wait Until Keyword Succeeds | 2x | 5s | Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} diff --git a/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lisp-l2bdbasemaclrn-func.robot b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lisp-l2bdbasemaclrn-func.robot new file mode 100644 index 0000000000..98602fc45f --- /dev/null +++ b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lisp-l2bdbasemaclrn-func.robot @@ -0,0 +1,95 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.LispUtil +| Library | resources.libraries.python.L2Util +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/overlay/l2lisp.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/l2/l2_ipv4.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP +| ... +| Test Setup | Set up functional test +| ... +| Test Teardown | Tear down functional test +| ... +| Documentation | *ip4-lispgpe-ip4 encapsulation test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4-LISPGpe-IP4 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ +| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ +| ... | DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in\ +| ... | both directions by TG on links to DUT1 and DUT2; on receive\ +| ... | TG verifies packets for correctness and their IPv4 src-addr, dst-addr\ +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Test Cases *** +| TC01: Route IPv4 packet through LISP with Bridge Domain setup. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-ICMPv4-LISPGpe-IP4 +| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. Also\ +| | ... | configure BD and assign it to LISP VNI. +| | ... | [Ver] Make TG send ICMPv4 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP tunnel between them; verify IPv4, Ether headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830. +| | ... +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Configure IP addresses on interfaces +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} | ${prefix4} +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${prefix4} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} | ${prefix4} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} | ${prefix4} +| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} +| | ... | ${tg_to_dut2_mac} +| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} +| | ... | ${tg_to_dut1_mac} +| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_dut1_mac} +| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} +| | ... | ${dut1_to_dut2_mac} +| | When Create L2 BD | ${dut1_node} | ${vpp_bd_id} +| | And Add Interface To L2 BD | ${dut1_node} | ${dut1_to_tg} | ${vpp_bd_id} +| | And Create L2 BD | ${dut2_node} | ${vpp_bd_id} +| | And Add Interface To L2 BD | ${dut2_node} | ${dut2_to_tg} | ${vpp_bd_id} +| | And Configure L2 LISP on DUT | ${dut1_node} +| | ... | ${dut1_to_dut2_ip4_static_adjacency} +| | ... | ${lisp_dut_settings} +| | And Configure L2 LISP on DUT | ${dut2_node} +| | ... | ${dut2_to_dut1_ip4_static_adjacency} +| | ... | ${lisp_dut_settings} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} +| | ... | ${tg_to_dut1} | ${tg_if1_mac} | ${tg_if2_mac} +| | ... | ${tg_to_dut2} | ${tg_if1_mac} | ${tg_if2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} +| | ... | ${tg_to_dut2} | ${tg_if2_mac} | ${tg_if1_mac} +| | ... | ${tg_to_dut1} | ${tg_if2_mac} | ${tg_if1_mac} diff --git a/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip4base-func.robot b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip4base-func.robot new file mode 100644 index 0000000000..90a0ae1599 --- /dev/null +++ b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip4base-func.robot @@ -0,0 +1,104 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.VPPUtil +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.VhostUser +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/vrf.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/ipv4_lispgpe_ipv4/ipv4_lispgpe_ipv4.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP +| ... +| Test Setup | Set up functional test +| ... +| Test Teardown | Tear down LISP functional test +| ... +| Documentation | *ip4-lispgpe-ip4 encapsulation test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv4-ICMPv4 on DUT1-DUT2,\ +| ... | Eth-IPv4-ICMPv4 on TG-DUTn for IPv4 routing over LISPoIPv4 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ +| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ +| ... | DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in\ +| ... | both directions by TG on links to DUT1 and DUT2; on receive\ +| ... | TG verifies packets for correctness and their IPv4 src-addr, dst-addr\ +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using physical interfaces +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on\ +| | ... | TG-DUTn. +| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. +| | ... | [Ver] Case: ip4-lispgpe-ip4 - phy2lisp +| | ... | Make TG send ICMPv4 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830. +| | ... +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Configure IP addresses on interfaces +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} | ${prefix4} +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${prefix4} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} | ${prefix4} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} | ${prefix4} +| | And Add IP Neighbors +| | When Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_to_dut2_ip4_static_adjacency} +| | ... | ${dut2_to_dut1_ip4_static_adjacency} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Add IP Neighbors +| | [Documentation] +| | ... | Add IP neighbors to physical interfaces on DUTs. +| | ... +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} +| | ... | ${tg_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} +| | ... | ${tg_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} +| | ... | ${dut1_to_dut2_mac} diff --git a/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip4basevrf-func.robot b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip4basevrf-func.robot new file mode 100644 index 0000000000..f41be5fecc --- /dev/null +++ b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip4basevrf-func.robot @@ -0,0 +1,109 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.VPPUtil +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.VhostUser +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/vrf.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/ipv4_lispgpe_ipv4/ipv4_lispgpe_ipv4.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP +| ... +| Test Setup | Set up functional test +| ... +| Test Teardown | Tear down LISP functional test +| ... +| Documentation | *ip4-lispgpe-ip4 encapsulation test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv4-ICMPv4 on DUT1-DUT2,\ +| ... | Eth-IPv4-ICMPv4 on TG-DUTn for IPv4 routing over LISPoIPv4 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ +| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ +| ... | DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in\ +| ... | both directions by TG on links to DUT1 and DUT2; on receive\ +| ... | TG verifies packets for correctness and their IPv4 src-addr, dst-addr\ +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using physical interfaces and VRF is enabled +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on\ +| | ... | TG-DUTn. +| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. +| | ... | [Ver] Case: ip4-lispgpe-ip4 - vrf, phy2lisp +| | ... | Make TG send ICMPv4 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830. +| | ... +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Assign Interface To Fib Table | ${dut1_node} +| | ... | ${dut1_to_tg} | ${fib_table_1} +| | And Assign Interface To Fib Table | ${dut2_node} +| | ... | ${dut2_to_tg} | ${fib_table_1} +| | And Add IP Neighbors +| | And Configure IP addresses on interfaces +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} | ${prefix4} +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${prefix4} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} | ${prefix4} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} | ${prefix4} +| | When Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_to_dut2_ip4_static_adjacency} +| | ... | ${dut2_to_dut1_ip4_static_adjacency} +| | ... | ${dut1_dut2_vni} | ${fib_table_1} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Add IP Neighbors +| | [Documentation] +| | ... | Add IP neighbors to physical interfaces on DUTs. +| | ... +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} +| | ... | ${tg_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} +| | ... | ${tg_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} +| | ... | ${dut1_to_dut2_mac} diff --git a/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip6base-func.robot b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip6base-func.robot new file mode 100644 index 0000000000..7e97aca29e --- /dev/null +++ b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip6base-func.robot @@ -0,0 +1,120 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.VhostUser +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.VPPUtil +# import additional Lisp settings from resource file +| Variables | resources/test_data/lisp/static_adjacency/lisp_static_adjacency.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO +| ... | VM_ENV | HW_ENV +| ... +| Test Setup | Set up functional test +| ... +| Test Teardown | Tear down functional test +| ... +| Documentation | *LISP static adjacency test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv6-ICMPv6 on DUT1-DUT2,\ +| ... | Eth-IPv6-ICMPv6 on TG-DUTn for IPv6 routing over LISPoIPv4 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ +| ... | routing and static routes. LISPoIPv4 tunnel is configured\ +| ... | between DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets\ +| ... | are sent in both directions by TG on links to DUT1 and DUT2; on receive\ +| ... | TG verifies packets for correctness and their IPv6 src-addr,\ +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISPoIPv4 tunnel +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-LISP-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on\ +| | ... | TG-DUTn. +| | ... | [Cfg] On DUT1 and DUT2 configure IPv4 LISP static adjacencies. +| | ... | [Ver] Make TG send ICMPv6 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP tunnel between them; verify IPv6 headers on received\ +| | ... | packets are correct. +| | ... | [Cfg2] Reconf LISP. +| | ... | [Ver2] Verify packets are received again via LISP tunnel. +| | ... | [Ref] RFC6830. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Configure IP addresses on interfaces +| | ... | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${dut1_to_dut2_ip6o4} | ${dut_prefix6o4} +| | ... | ${dut1_node} | ${dut1_to_tg} +| | ... | ${dut1_to_tg_ip6o4} | ${tg_prefix6o4} +| | ... | ${dut2_node} | ${dut2_to_dut1} +| | ... | ${dut2_to_dut1_ip6o4} | ${dut_prefix6o4} +| | ... | ${dut2_node} | ${dut2_to_tg} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} +| | And Add IP Neighbors +| | And Vpp All RA Suppress Link Layer | ${nodes} +| | When Configure LISP topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip6o4} | ${tg2_ip6o4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip6o4} | ${tg1_ip6o4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} +| | When Change LISP Configuration | ${dut1_node} | ${dut2_node} +| | ... | ${dut1_to_dut2} | ${dut2_to_dut1} | ${dut1_to_dut2_mac} +| | ... | ${dut2_to_dut1_mac} | ${dut1_to_dut2_ip6o4} +| | ... | ${dut2_to_dut1_ip6o4_reconf} | ${dut_prefix6o4} +| | ... | ${dut1_ip6o4_static_adjacency} +| | ... | ${dut1_ip6o4_static_adjacency_reconf} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip6o4} | ${tg2_ip6o4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip6o4} | ${tg1_ip6o4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Add IP Neighbors +| | [Documentation] +| | ... | Add IP neighbors to physical interfaces on DUTs. +| | ... +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6o4} +| | ... | ${tg_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6o4} +| | ... | ${tg_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6o4} +| | ... | ${dut1_to_dut2_mac} diff --git a/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip6basevrf-func.robot b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip6basevrf-func.robot new file mode 100644 index 0000000000..668e870ff0 --- /dev/null +++ b/tests/vpp/func/ip4_tunnels/lisp/eth2p-ethip4lispgpe-ip6basevrf-func.robot @@ -0,0 +1,110 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.VhostUser +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.VPPUtil +# import additional Lisp settings from resource file +| Variables | resources/test_data/lisp/static_adjacency/lisp_static_adjacency.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO +| ... | VM_ENV | HW_ENV +| ... +| Test Setup | Set up functional test +| ... +| Test Teardown | Tear down LISP functional test +| ... +| Documentation | *LISP static adjacency test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv6-ICMPv6 on DUT1-DUT2,\ +| ... | Eth-IPv6-ICMPv6 on TG-DUTn for IPv6 routing over LISPoIPv4 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ +| ... | routing and static routes. LISPoIPv4 tunnel is configured\ +| ... | between DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets\ +| ... | are sent in both directions by TG on links to DUT1 and DUT2; on receive\ +| ... | TG verifies packets for correctness and their IPv6 src-addr,\ +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using physical interfaces and VRF is enabled +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on\ +| | ... | TG-DUTn. +| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. +| | ... | [Ver] Case: ip6-lispgpe-ip4 - vrf, phy2lisp +| | ... | Make TG send ICMPv4 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830. +| | ... +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Assign Interface To Fib Table | ${dut1_node} +| | ... | ${dut1_to_tg} | ${fib_table_1} | ip6=${TRUE} +| | And Assign Interface To Fib Table | ${dut2_node} +| | ... | ${dut2_to_tg} | ${fib_table_1} | ip6=${TRUE} +| | And Add IP Neighbors +| | And Configure IP addresses on interfaces +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6o4} +| | ... | ${dut_prefix6o4} +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6o4} | ${tg_prefix6o4} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut_prefix6o4} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} +| | And Vpp All RA Suppress Link Layer | ${nodes} +| | When Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} +| | ... | ${dut2_ip6o4_static_adjacency} +| | ... | ${dut1_dut2_vni} | ${fib_table_1} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip6o4} | ${tg2_ip6o4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip6o4} | ${tg1_ip6o4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Add IP Neighbors +| | [Documentation] +| | ... | Add IP neighbors to physical interfaces on DUTs. +| | ... +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6o4} +| | ... | ${tg_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6o4} +| | ... | ${tg_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6o4} +| | ... | ${dut1_to_dut2_mac} diff --git a/tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swirelw46-func.robot b/tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swirelw46-func.robot new file mode 100644 index 0000000000..378accb922 --- /dev/null +++ b/tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swirelw46-func.robot @@ -0,0 +1,209 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/ip/map.robot +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *Lightweight 4 over 6 test cases* +| ... +| ... | LW4o6 is a subset of MAP-E, with per-subscriber rules. It uses the +| ... | same tunneling mechanism and configuration as MAP-E. It does not use +| ... | embedded address bits. +| ... +| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links +| ... | between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP on TG_if1-DUT, +| ... | Eth-IPv6-IPv4-UDP on TG_if2_DUT. +| ... | *[Cfg] DUT configuration:* DUT1 is configured as lwAFTR. +| ... | *[Ver] TG verification:* Test UDP ICMP Echo Request in IPv4 are +| ... | sent to lwAFTR and are verified by TG for correctness their +| ... | encapsulation in IPv6 src-addr, dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC7596 RFC7597. + +*** Variables *** +| ${dut_ip4}= | 10.0.0.1 +| ${dut_ip6}= | 2001:0::1 +| ${tg_ip6}= | 2001:0::2 +| ${ipv4_prefix_len}= | 24 +| ${ipv6_prefix_len}= | 64 + +| ${lw_ipv4_pfx}= | 20.0.0.1/32 +| ${lw_ipv6_pfx}= | 2001:1::/64 +| ${lw_ipv6_src}= | 2001:1::1 +| ${lw_psid_length}= | ${8} +| ${lw_psid_offset}= | ${6} +| ${lw_rule_psid}= | ${52} +| ${lw_rule_ipv6_dst}= | 2001:1::2 +| ${lw_rule_2_psid}= | ${22} +| ${lw_rule_2_ipv6_dst}= | 2001:1::3 +| ${test_ipv4_inside}= | 20.0.0.1 +| ${test_ipv4_outside}= | 10.0.0.100 +# test_port depends on psid, length, offset +| ${test_port}= | ${1232} +| ${test_icmp_id}= | ${1232} +| ${test_2_port}= | ${6232} + +*** Test Cases *** +| TC01: Encapsulate IPv4 into IPv6. IPv6 dst depends on IPv4 and UDP destination +| | [Documentation] +| | ... | [Top] TG=DUT1. +| | ... | [Enc] Eth-IPv4-UDP on TG_if1-DUT, Eth-IPv6-IPv4-UDP on TG_if2_DUT. +| | ... | [Cfg] On DUT1 configure Map domain and Map rule. +| | ... | [Ver] Make TG send non-encapsulated UDP to DUT; verify TG received +| | ... | IPv4oIPv6 encapsulated packet is correct. +| | ... | [Ref] RFC7596 RFC7597 +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} +| | And Add IP Neighbor +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${tg_ip6} +| | ... | ${tg_to_dut_if2_mac} +| | And Vpp Route Add +| | ... | ${dut_node} | ${lw_rule_ipv6_dst} | 128 +| | ... | ${tg_ip6} | ${dut_to_tg_if2} | resolve_attempts=${NONE} +| | ${domain_index}= +| | ... | When Map Add Domain +| | ... | ${dut_node} | ${lw_ipv4_pfx} | ${lw_ipv6_pfx} +| | ... | ${lw_ipv6_src} | 0 | ${lw_psid_offset} +| | ... | ${lw_psid_length} +| | And Map Add Rule +| | ... | ${dut_node} | ${domain_index} | ${lw_rule_psid} +| | ... | ${lw_rule_ipv6_dst} +| | Then Send IPv4 UDP and check headers for lightweight 4over6 +| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} +| | ... | ${dut_to_tg_if1_mac} | ${test_ipv4_inside} | ${test_ipv4_outside} +| | ... | ${test_port} | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} +| | ... | ${lw_rule_ipv6_dst} | ${lw_ipv6_src} + +TC02: Encapsulate IPv4 ICMP into IPv6. IPv6 dst depends on IPv4 addr and ICMP ID +| | [Documentation] +| | ... | [Top] TG=DUT1. +| | ... | [Enc] Eth-IPv4-ICMP(type 0 and 8) on TG_if1-DUT, Eth-IPv6-IPv4-ICMP +| | ... | on TG_if2_DUT. +| | ... | [Cfg] On DUT1 configure Map domain and Map rule. +| | ... | [Ver] Make TG send non-encapsulated ICMP to DUT; verify TG received +| | ... | IPv4oIPv6 encapsulated packet is correct. Checks IPv6 +| | ... | destination based on ICMP Identifier field. +| | ... | [Ref] RFC7596 section 8.1 +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} +| | And Add IP Neighbor +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${tg_ip6} +| | ... | ${tg_to_dut_if2_mac} +| | And Vpp Route Add +| | ... | ${dut_node} | ${lw_rule_ipv6_dst} | 128 +| | ... | ${tg_ip6} | ${dut_to_tg_if2} | resolve_attempts=${NONE} +| | ${domain_index}= +| | ... | When Map Add Domain +| | ... | ${dut_node} | ${lw_ipv4_pfx} | ${lw_ipv6_pfx} +| | ... | ${lw_ipv6_src} | 0 | ${lw_psid_offset} +| | ... | ${lw_psid_length} +| | And Map Add Rule +| | ... | ${dut_node} | ${domain_index} | ${lw_rule_psid} +| | ... | ${lw_rule_ipv6_dst} +| | Then Send IPv4 ICMP and check headers for lightweight 4over6 +| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} +| | ... | ${dut_to_tg_if1_mac} | ${test_ipv4_inside} | ${test_ipv4_outside} +| | ... | ${test_icmp_id} | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} +| | ... | ${lw_rule_ipv6_dst} | ${lw_ipv6_src} + +TC03: Decapsulate IPv4 UDP from IPv6. +| | [Documentation] +| | ... | [Top] TG=DUT1. +| | ... | [Enc] Eth-IPv6-IPv4-UDP on TG_if2_DUT, Eth-IPv4-UDP on TG_if1-DUT. +| | ... | [Cfg] On DUT1 configure Map domain and Map rule. +| | ... | [Ver] Make TG send encapsulated UDP to DUT; verify TG received +| | ... | IPv4 non-encapsulated packet is correct. +| | ... | [Ref] RFC7596 RFC7597 +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} +| | And Add Arp on DUT +| | ... | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${test_ipv4_outside} +| | ... | ${tg_to_dut_if1_mac} +| | ${domain_index}= +| | ... | When Map Add Domain +| | ... | ${dut_node} | ${lw_ipv4_pfx} | ${lw_ipv6_pfx} +| | ... | ${lw_ipv6_src} | 0 | ${lw_psid_offset} +| | ... | ${lw_psid_length} +| | And Map Add Rule +| | ... | ${dut_node} | ${domain_index} | ${lw_rule_psid} +| | ... | ${lw_rule_ipv6_dst} +| | Then Send IPv4 UDP in IPv6 and check headers for lightweight 4over6 +| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if1} +| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} +| | ... | ${lw_ipv6_src} | ${lw_rule_ipv6_dst} +| | ... | ${test_ipv4_outside} | ${test_ipv4_inside} | ${test_port} +| | ... | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} + +TC04: Hairpinning of traffic between two lwB4 +| | [Documentation] +| | ... | [Top] DUT1-TG. +| | ... | [Enc] Eth-IPv6-IPv4-UDP on TG_if2_DUT, Eth-IPv6-IPv4-UDP on TG_if2_DUT. +| | ... | [Cfg] On DUT1 configure Map domain and two Map rules. +| | ... | [Ver] Make TG send encapsulated UDP to DUT; verify TG received +| | ... | encapsulated packet is correct. +| | ... | [Ref] RFC7596 RFC7597 +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} +| | And Add IP Neighbor +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${tg_ip6} +| | ... | ${tg_to_dut_if2_mac} +| | And Vpp Route Add +| | ... | ${dut_node} | ${lw_rule_2_ipv6_dst} | 128 +| | ... | ${tg_ip6} | ${dut_to_tg_if2} | resolve_attempts=${NONE} +| | ${domain_index}= +| | ... | When Map Add Domain +| | ... | ${dut_node} | ${lw_ipv4_pfx} | ${lw_ipv6_pfx} +| | ... | ${lw_ipv6_src} | 0 | ${lw_psid_offset} +| | ... | ${lw_psid_length} +| | And Map Add Rule +| | ... | ${dut_node} | ${domain_index} | ${lw_rule_psid} +| | ... | ${lw_rule_ipv6_dst} +| | And Map Add Rule +| | ... | ${dut_node} | ${domain_index} | ${lw_rule_2_psid} +| | ... | ${lw_rule_2_ipv6_dst} +| | Then Send IPv4 UDP in IPv6 and check headers for lightweight hairpinning +| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if2} +| | ... | ${dut_to_tg_if2_mac} +| | ... | ${lw_ipv6_src} | ${lw_rule_ipv6_dst} +| | ... | ${test_ipv4_inside} | ${test_ipv4_inside} +| | ... | ${test_2_port} | ${test_port} +| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} +| | ... | ${lw_rule_2_ipv6_dst} | ${lw_ipv6_src} diff --git a/tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremape-func.robot b/tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremape-func.robot new file mode 100644 index 0000000000..95e61db654 --- /dev/null +++ b/tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremape-func.robot @@ -0,0 +1,483 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/ip/map.robot +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.Trace +| Variables | resources/test_data/softwire/map_e_domains.py | ${5} +| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *Test for Basic mapping rule for MAP-E*\ +| ... | *[Top] Network Topologies:* TG - DUT1 - TG with two links between the +| ... | nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP on TG-to-DUT-if1. +| ... | Eth-IPv6-IPv4-UDP on TG-to-DUT-if2. +| ... | *[Cfg] DUT configuration:* DUT is configured with IPv4 on one DUT-to-TG +| ... | interface and IPv6 address on second DUT-to-TG interface. MAP-E domain +| ... | is configured in test template based on test parameters. +| ... | *[Ver] TG verification:* UDP packets in IPv4 are sent by TG to +| ... | destination in MAP domain. IPv6 packets with encapsulated IPv4 are +| ... | received on TG interface. +| ... | *[Ref] Applicable standard specifications:* RFC7597. + + +*** Variables *** +| ${dut_ip4}= | 10.0.0.1 +| ${dut_ip6}= | 2001:0::1 +| ${dut_ip4_gw}= | 10.0.0.2 +| ${dut_ip6_gw}= | 2001:0::2 +| ${ipv4_prefix_len}= | 24 +| ${ipv6_prefix_len}= | 64 +| ${ipv6_br_src}= | 2001:db8:ffff::1 +| ${ipv4_outside}= | 1.0.0.1 + + +*** Test Cases *** +| TC01: BMR, then an IPv4 prefix is assigned +| | [Documentation] +| | ... | Basic Mapping Rule https://tools.ietf.org/html/rfc7597#section-5.2\ +| | ... | IPv4 prefix length + ea bits length < 32 (o + r < 32) +| | ... | psid_length = 0, ip6_prefix < 64, ip4_prefix <= 32 +| | ... +| | ... | Arguments: +| | ... +| | ... | - ipv4_pfx +| | ... | - ipv6_pfx +| | ... | - ipv6_src +| | ... | - ea_bit_len +| | ... | - psid_offset +| | ... | - psid_len +| | ... | - ipv4_dst +| | ... | - dst_port +| | ... | - expected_ipv6_dst +| | ... +# TODO: replace setup when VPP-312 fixed +#| | [Setup] | Set Interfaces IP Addresses And Routes +| | [Setup] | Run Keywords +| | ... | Set up functional test | AND +| | ... | Set Interfaces IP Addresses And Routes +| | [Template] | Check MAP Configuration With Traffic Script +# |=================|===============|================|============|=============|==========|================|==========|==================================| +# | ipv4_pfx | ipv6_pfx | ipv6_src | ea_bit_len | psid_offset | psid_len | ipv4_dst | dst_port | expected_ipv6_dst | +# |=================|===============|================|============|=============|==========|================|==========|==================================| +| | 20.0.0.0/8 | 2001:db8::/32 | ${ipv6_br_src} | ${4} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:a000::14a0:0:0 | +| | 20.0.0.0/8 | 2001:db8::/32 | ${ipv6_br_src} | ${8} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:a900::14a9:0:0 | +| | 20.0.0.0/8 | 2001:db8::/32 | ${ipv6_br_src} | ${10} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:a9c0::14a9:c000:0 | +| | 20.0.0.0/8 | 2001:db8::/32 | ${ipv6_br_src} | ${16} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:a9c9::14a9:c900:0 | +| | 20.0.0.0/8 | 2001:db8::/32 | ${ipv6_br_src} | ${20} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:a9c9:d000:0:14a9:c9d0:0 | +| | 20.0.0.0/8 | 2001:db8::/32 | ${ipv6_br_src} | ${23} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:a9c9:da00:0:14a9:c9da:0 | +| | 20.169.201.0/24 | 2001:db8::/32 | ${ipv6_br_src} | ${4} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:d000::14a9:c9d0:0 | +| | 20.169.201.0/24 | 2001:db8::/32 | ${ipv6_br_src} | ${7} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:da00::14a9:c9da:0 | + + +| TC02: BMR, full IPv4 address is to be assigned +| | [Documentation] +| | ... | Basic Mapping Rule https://tools.ietf.org/html/rfc7597#section-5.2\ +| | ... | IPv4 prefix length + ea bits length == 32 (o + r == 32) +| | ... | psid_length = 0, ip6_prefix < 64, ip4_prefix <= 32 +| | ... +| | ... | Arguments: +| | ... +| | ... | - ipv4_pfx +| | ... | - ipv6_pfx +| | ... | - ipv6_src +| | ... | - ea_bit_len +| | ... | - psid_offset +| | ... | - psid_len +| | ... | - ipv4_dst +| | ... | - dst_port +| | ... | - expected_ipv6_dst +| | ... +# TODO: replace setup when VPP-312 fixed +#| | [Setup] | Set Interfaces IP Addresses And Routes +| | [Setup] | Run Keywords +| | ... | Set up functional test | AND +| | ... | Set Interfaces IP Addresses And Routes +| | [Template] | Check MAP Configuration With Traffic Script +# |===================|===============|================|============|=============|==========|================|==========|==================================| +# | ipv4_pfx | ipv6_pfx | ipv6_src | ea_bit_len | psid_offset | psid_len | ipv4_dst | dst_port | expected_ipv6_dst | +# |===================|===============|================|============|=============|==========|================|==========|==================================| +| | 20.0.0.0/8 | 2001:db8::/32 | ${ipv6_br_src} | ${24} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:a9c9:db00:0:14a9:c9db:0 | +| | 20.160.0.0/12 | 2001:db8::/32 | ${ipv6_br_src} | ${20} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:9c9d:b000:0:14a9:c9db:0 | +| | 20.169.0.0/16 | 2001:db8::/32 | ${ipv6_br_src} | ${16} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:c9db::14a9:c9db:0 | +| | 20.169.200.0/22 | 2001:db8::/32 | ${ipv6_br_src} | ${10} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:76c0::14a9:c9db:0 | +| | 20.169.201.0/24 | 2001:db8::/32 | ${ipv6_br_src} | ${8} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:db00::14a9:c9db:0 | +| | 20.169.201.208/28 | 2001:db8::/32 | ${ipv6_br_src} | ${4} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:b000::14a9:c9db:0 | +| | 20.169.201.219/32 | 2001:db8::/32 | ${ipv6_br_src} | ${0} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8::14a9:c9db:0 | +| | 20.0.0.0/8 | 2001:db8::/40 | ${ipv6_br_src} | ${24} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:a9:c9db:0:14a9:c9db:0 | +| | 20.160.0.0/12 | 2001:db8::/44 | ${ipv6_br_src} | ${20} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:9:c9db:0:14a9:c9db:0 | +| | 20.169.0.0/16 | 2001:db8::/48 | ${ipv6_br_src} | ${16} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:0:c9db:0:14a9:c9db:0 | +| | 20.169.200.0/22 | 2001:db8::/54 | ${ipv6_br_src} | ${10} | ${0} | ${0} | 20.169.201.219 | ${1232} | 2001:db8:0:1db:0:14a9:c9db:0 | + + +| TC03: BMR, shared IPv4 address is to be assigned +| | [Documentation] +| | ... | Basic Mapping Rule https://tools.ietf.org/html/rfc7597#section-5.2\ +| | ... | IPv4 prefix length + ea bits length > 32 (o + r > 32) +| | ... | ip6_prefix < 64, ip4_prefix <= 32 +| | ... +| | ... | Arguments: +| | ... +| | ... | - ipv4_pfx +| | ... | - ipv6_pfx +| | ... | - ipv6_src +| | ... | - ea_bit_len +| | ... | - psid_offset +| | ... | - psid_len +| | ... | - ipv4_dst +| | ... | - dst_port +| | ... | - expected_ipv6_dst +| | ... +# TODO: replace setup when VPP-312 fixed +#| | [Setup] | Set Interfaces IP Addresses And Routes +| | [Setup] | Run Keywords +| | ... | Set up functional test | AND +| | ... | Set Interfaces IP Addresses And Routes +| | [Template] | Check MAP Configuration With Traffic Script +# |===================|===============|================|============|=============|==========|================|==========|===================================| +# | ipv4_pfx | ipv6_pfx | ipv6_src | ea_bit_len | psid_offset | psid_len | ipv4_dst | dst_port | expected_ipv6_dst | +# |===================|===============|================|============|=============|==========|================|==========|===================================| +| | 20.0.0.0/8 | 2001::/16 | ${ipv6_br_src} | ${48} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:a9c9:db34::14a9:c9db:34 | +| | 20.169.0.0/16 | 2001::/16 | ${ipv6_br_src} | ${48} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:c9db:3400::14a9:c9db:34 | +| | 20.169.201.0/24 | 2001::/16 | ${ipv6_br_src} | ${48} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db34::14a9:c9db:34 | +| | 20.169.201.219/32 | 2001::/16 | ${ipv6_br_src} | ${48} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:3400::14a9:c9db:34 | + +| | 20.0.0.0/8 | 2001::/24 | ${ipv6_br_src} | ${40} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:a9:c9db:3400:0:14a9:c9db:34 | +| | 20.169.0.0/16 | 2001::/24 | ${ipv6_br_src} | ${40} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:c9:db34::14a9:c9db:34 | +| | 20.169.201.0/24 | 2001::/24 | ${ipv6_br_src} | ${40} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db:3400::14a9:c9db:34 | +| | 20.169.201.219/32 | 2001::/24 | ${ipv6_br_src} | ${40} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:34::14a9:c9db:34 | +| | 20.169.0.0/16 | 2001::/16 | ${ipv6_br_src} | ${40} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:c9db:3400::14a9:c9db:34 | +| | 20.169.201.219/32 | 2001::/16 | ${ipv6_br_src} | ${40} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:3400::14a9:c9db:34 | + +| | 20.0.0.0/8 | 2001:db8::/32 | ${ipv6_br_src} | ${32} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:a9c9:db34:0:14a9:c9db:34 | +| | 20.169.0.0/16 | 2001:db8::/32 | ${ipv6_br_src} | ${32} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:c9db:3400:0:14a9:c9db:34 | +| | 20.169.201.0/24 | 2001:db8::/32 | ${ipv6_br_src} | ${32} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:db34::14a9:c9db:34 | +| | 20.169.201.219/32 | 2001:db8::/32 | ${ipv6_br_src} | ${32} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:3400::14a9:c9db:34 | +| | 20.169.0.0/16 | 2001::/24 | ${ipv6_br_src} | ${32} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:c9:db34::14a9:c9db:34 | +| | 20.169.201.0/24 | 2001::/24 | ${ipv6_br_src} | ${32} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db:3400::14a9:c9db:34 | +| | 20.169.0.0/16 | 2001::/16 | ${ipv6_br_src} | ${32} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:c9db:3400::14a9:c9db:34 | +| | 20.169.201.0/24 | 2001::/16 | ${ipv6_br_src} | ${32} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db34::14a9:c9db:34 | + +| | 20.160.0.0/12 | 2001:db8::/32 | ${ipv6_br_src} | ${25} | ${6} | ${5} | 20.169.201.219 | ${1232} | 2001:db8:9c9d:b300:0:14a9:c9db:6 | +| | 20.169.0.0/16 | 2001:db8::/32 | ${ipv6_br_src} | ${25} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:c9db:3400:0:14a9:c9db:34 | +| | 20.169.201.0/24 | 2001:db8::/32 | ${ipv6_br_src} | ${25} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:db34::14a9:c9db:34 | +| | 20.169.201.219/32 | 2001:db8::/32 | ${ipv6_br_src} | ${25} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:3400::14a9:c9db:34 | + +| | 20.169.192.0/20 | 2001:db8::/32 | ${ipv6_br_src} | ${17} | ${6} | ${5} | 20.169.201.219 | ${1232} | 2001:db8:9db3::14a9:c9db:6 | +| | 20.169.201.0/24 | 2001:db8::/32 | ${ipv6_br_src} | ${17} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:db34::14a9:c9db:34 | +| | 20.169.201.219/32 | 2001:db8::/32 | ${ipv6_br_src} | ${17} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:3400::14a9:c9db:34 | + +| | 20.169.201.0/24 | 2001:db8::/32 | ${ipv6_br_src} | ${12} | ${6} | ${4} | 20.169.201.219 | ${1232} | 2001:db8:db30::14a9:c9db:3 | +| | 20.169.201.219/32 | 2001:db8::/32 | ${ipv6_br_src} | ${12} | ${6} | ${8} | 20.169.201.219 | ${1232} | 2001:db8:3400::14a9:c9db:34 | + + +| TC04: End user IPv6 prefix is 64 +| | [Documentation] +| | ... | Supported End-User IPv6 prefix length is 64 bit. +| | ... +| | ... | Arguments: +| | ... +| | ... | - ipv4_pfx +| | ... | - ipv6_pfx +| | ... | - ipv6_src +| | ... | - ea_bit_len +| | ... | - psid_offset +| | ... | - psid_len +| | ... | - ipv4_dst +| | ... | - dst_port +| | ... +# TODO: replace setup when VPP-312 fixed +#| | [Setup] | Set Interfaces IP Addresses And Routes +| | [Setup] | Run Keywords +| | ... | Set up functional test | AND +| | ... | Set Interfaces IP Addresses And Routes +| | [Template] | Check MAP Configuration With Traffic Script +# |===================|=========================|================|============|=============|==========|================|==========| +# | ipv4_pfx | ipv6_pfx | ipv6_src | ea_bit_len | psid_offset | psid_len | ipv4_dst | dst_port | +# |===================|=========================|================|============|=============|==========|================|==========| +| | 20.0.0.0/8 | 2001:db8:0012:3400::/56 | ${ipv6_br_src} | ${8} | ${0} | ${0} | 20.169.201.219 | ${1232} | +| | 20.169.201.208/28 | 2001:db8:0012:3400::/56 | ${ipv6_br_src} | ${8} | ${5} | ${4} | 20.169.201.219 | ${3280} | +| | 20.0.0.0/8 | 2001:db8:0012:3400::/64 | ${ipv6_br_src} | ${0} | ${0} | ${0} | 20.169.201.219 | ${1232} | +| | 20.169.201.219/32 | 2001:db8:0012:3400::/64 | ${ipv6_br_src} | ${0} | ${0} | ${0} | 20.169.201.219 | ${1232} | + + +| TC05: IPv4 prefix is 0 +| | [Tags] | EXPECTED_FAILING +# TODO: replace setup when VPP-312 fixed +#| | [Setup] | Set Interfaces IP Addresses And Routes +| | [Setup] | Run Keywords +| | ... | Set up functional test | AND +| | ... | Set Interfaces IP Addresses And Routes +| | [Template] | Check MAP Configuration With Traffic Script +# |===================|=========================|================|============|=============|==========|================|==========| +# | ipv4_pfx | ipv6_pfx | ipv6_src | ea_bit_len | psid_offset | psid_len | ipv4_dst | dst_port | +# |===================|=========================|================|============|=============|==========|================|==========| +| | 0.0.0.0/0 | 2001:db8:0000::/40 | ${ipv6_br_src} | ${8} | ${0} | ${0} | 20.169.201.219 | ${1232} | +| | 0.0.0.0/0 | 2001:db8:0000::/40 | ${ipv6_br_src} | ${16} | ${0} | ${0} | 20.169.201.219 | ${1232} | +| | 0.0.0.0/0 | 2001:db8::/32 | ${ipv6_br_src} | ${32} | ${0} | ${0} | 20.169.201.219 | ${1232} | +| | 0.0.0.0/0 | 2001:d00::/24 | ${ipv6_br_src} | ${40} | ${6} | ${8} | 20.169.201.219 | ${1232} | +| | 0.0.0.0/0 | 2001::/16 | ${ipv6_br_src} | ${40} | ${6} | ${8} | 20.169.201.219 | ${1232} | + + +| TC06: Multiple domain and check with traffic script IPv4 source IPv6 destination +| | [Documentation] +| | ... | [Top] TG=DUT1. +| | ... | [Cfg] Multiple MAP-E domains are configured, values from variable\ +| | ... | file. +| | ... | [Ver] Send IPv4 to destination in configured domain and receive IPv6\ +| | ... | packet. +| | ... | [Ref] RFC7597. +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} +| | And Vpp Route Add | ${dut_node} | :: | 0 | ${dut_ip6_gw} +| | ... | ${dut_to_tg_if2} | resolve_attempts=${NONE} | count=${NONE} +| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6_gw} +| | ... | ${tg_to_dut_if2_mac} +| | And Vpp Route Add | ${dut_node} | 0.0.0.0 | 0 | ${dut_ip4_gw} +| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | count=${NONE} +| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4_gw} +| | ... | ${tg_to_dut_if1_mac} +| | :FOR | ${domain_set} | IN | @{domain_sets} +| | | When Map Add Domain | ${dut_node} | @{domain_set} +| | :FOR | ${ip_set} | IN | @{ip_sets} +| | | ${ipv4}= | Get From List | ${ip_set} | 0 +| | | ${ipv6}= | Get From List | ${ip_set} | 1 +| | | ${port}= | Get From List | ${ip_set} | 2 +| | | ${ipv6_br}= | Get From List | ${ip_set} | 3 +| | | Then Send IPv4 UDP And Check Headers For Lightweight 4over6 +| | | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} +| | | ... | ${dut_to_tg_if1_mac} | ${ipv4} | ${ipv4_outside} | ${port} +| | | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} | ${ipv6} | ${ipv6_br} +| | | And Send IPv4 UDP In IPv6 And Check Headers For Lightweight 4over6 +| | | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if1} +| | | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} | ${ipv6_br} | ${ipv6} +| | | ... | ${ipv4_outside} | ${ipv4} | ${port} | ${tg_to_dut_if1_mac} +| | | ... | ${dut_to_tg_if1_mac} + + +| TC07: Multiple domain and check with traffic script IPv6 source IPv6 destination +| | [Documentation] +| | ... | [Top] TG=DUT1. +| | ... | [Cfg] Multiple MAP-E domains are configured, values from variable\ +| | ... | file. +| | ... | [Ver] Send IPv4 encapsulated in IPv6. Source and destination are from\ +| | ... | configured domains. Check if VPP translate IPv6 addresses. +| | ... | [Ref] RFC7597. +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} +| | And Vpp Route Add | ${dut_node} | :: | 0 | ${dut_ip6_gw} +| | ... | ${dut_to_tg_if2} | resolve_attempts=${NONE} | count=${NONE} +| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6_gw} +| | ... | ${tg_to_dut_if2_mac} +| | And Vpp Route Add | ${dut_node} | 0.0.0.0 | 0 | ${dut_ip4_gw} +| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | count=${NONE} +| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4_gw} +| | ... | ${tg_to_dut_if1_mac} +| | :FOR | ${domain_set} | IN | @{domain_sets} +| | | When Map Add Domain | ${dut_node} | @{domain_set} +| | ${ip_set_A}= | Get From List | ${ip_sets} | 0 +| | ${ip_set_B}= | Get From List | ${ip_sets} | 1 +| | ${ipv6_br}= | Get From List | ${ip_set_A} | 3 +| | ${port_A}= | Get From List | ${ip_set_A} | 2 +| | ${port_B}= | Get From List | ${ip_set_B} | 2 +| | ${ipv6_A}= | Get From List | ${ip_set_A} | 1 +| | ${ipv6_B}= | Get From List | ${ip_set_B} | 1 +| | ${ipv4_A}= | Get From List | ${ip_set_A} | 0 +| | ${ipv4_B}= | Get From List | ${ip_set_B} | 0 +| | Then Send IPv4 UDP In IPv6 And Check Headers For Lightweight Hairpinning +| | ... | ${tg_node} | ${tg_to_dut_if2} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if2_mac} +| | ... | ${ipv6_br} | ${ipv6_A} +| | ... | ${ipv4_B} | ${ipv4_A} +| | ... | ${port_B} | ${port_A} +| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} +| | ... | ${ipv6_B} | ${ipv6_br} + + +| TC08: Encapsulate IPv4 ICMP into IPv6 +| | [Documentation] +| | ... | [Top] TG=DUT1. +| | ... | [Enc] Eth-IPv4-ICMP(type 0 and 8) on TG_if1-DUT, Eth-IPv6-IPv4-ICMP\ +| | ... | on TG_if2_DUT. +| | ... | [Cfg] Multiple MAP-E domains are configured, values from variable\ +| | ... | file. +| | ... | [Ver] Make TG send non-encapsulated ICMP to DUT; verify TG received\ +| | ... | IPv4oIPv6 encapsulated packet is correct. Checks IPv6 destination\ +| | ... | based on ICMP Identifier field. +| | ... | [Ref] RFC7597 section 8.2. +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} +| | And Vpp Route Add | ${dut_node} | :: | 0 | ${dut_ip6_gw} +| | ... | ${dut_to_tg_if2} | resolve_attempts=${NONE} | count=${NONE} +| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6_gw} +| | ... | ${tg_to_dut_if2_mac} +| | And Vpp Route Add | ${dut_node} | 0.0.0.0 | 0 | ${dut_ip4_gw} +| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | count=${NONE} +| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4_gw} +| | ... | ${tg_to_dut_if1_mac} +| | :FOR | ${domain_set} | IN | @{domain_sets} +| | | When Map Add Domain | ${dut_node} | @{domain_set} +| | ${ip_set_A}= | Get From List | ${ip_sets} | 0 +| | ${ipv4_A}= | Get From List | ${ip_set_A} | 0 +| | ${ipv6_A}= | Get From List | ${ip_set_A} | 1 +| | ${icmp_id_A}= | Get From List | ${ip_set_A} | 2 +| | ${ipv6_br}= | Get From List | ${ip_set_A} | 3 +| | Then Send IPv4 ICMP And Check Headers For Lightweight 4over6 +| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} +| | ... | ${dut_to_tg_if1_mac} | ${ipv4_A} | ${ipv4_outside} +| | ... | ${icmp_id_A} | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} +| | ... | ${ipv6_A} | ${ipv6_br} + + +| TC09: Repeated ip neighbor command doesnt put FIB to broken state +| | [Documentation] | +| | ... | Original issue described in https://jira.fd.io/browse/VPP-312. +| | ... | [Top] TG=DUT1. +| | ... | [Cfg] IP address are set on interfaces, ip neighbor multiple times +| | ... | [Ver] FIB is not in broken state. The steps are add route, \ +| | ... | check with traffic then add same route +| | ... | again and check with traffic script. +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | When Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} +| | And Vpp Route Add | ${dut_node} | 2001:: | 16 | ${dut_ip6_gw} +| | ... | ${dut_to_tg_if2} | resolve_attempts=${NONE} | count=${NONE} +| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6_gw} +| | ... | ${tg_to_dut_if2_mac} +| | And Vpp Route Add | ${dut_node} | 0.0.0.0 | 0 | ${dut_ip4_gw} +| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | count=${NONE} +| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4_gw} +| | ... | ${tg_to_dut_if1_mac} +| | Then Check MAP Configuration With Traffic Script +| | ... | 20.0.0.0/8 | 2001::/16 | ${ipv6_br_src} | ${48} | ${6} | ${8} +| | ... | 20.169.201.219 | ${1232} | 2001:a9c9:db34::14a9:c9db:34 +| | When Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} +| | And Vpp Route Add | ${dut_node} | 2001:: | 16 | ${dut_ip6_gw} +| | ... | ${dut_to_tg_if2} | resolve_attempts=${NONE} | count=${NONE} +| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6_gw} +| | ... | ${tg_to_dut_if2_mac} +| | And Vpp Route Add | ${dut_node} | 0.0.0.0 | 0 | ${dut_ip4_gw} +| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | count=${NONE} +| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4_gw} +| | ... | ${tg_to_dut_if1_mac} +| | Then Check MAP Configuration With Traffic Script +| | ... | 20.0.0.0/8 | 2001::/16 | ${ipv6_br_src} | ${48} | ${6} | ${8} +| | ... | 20.169.201.219 | ${1232} | 2001:a9c9:db34::14a9:c9db:34 + + +| Bug: VPP-318 +| | [Tags] | EXPECTED_FAILING +| | [Documentation] | qlen < psid length +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} +| | Then Run Keyword And Expect Error | Unable to add map domain * +| | ... | Map Add Domain | ${dut_node} | 20.169.0.0/16 | 2001:db8::/32 +| | ... | ${ipv6_br_src} | ${20} | ${6} | ${8} + + +*** Keywords *** +| Set Interfaces IP Addresses And Routes +| | Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | Set interfaces in 2-node circular topology up +| | Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} +| | Vpp Route Add | ${dut_node} | :: | 0 | ${dut_ip6_gw} | ${dut_to_tg_if2} +| | ... | resolve_attempts=${NONE} | count=${NONE} +| | Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6_gw} +| | ... | ${tg_to_dut_if2_mac} +| | Vpp Route Add | ${dut_node} | ${ipv4_outside} | 32 | ${dut_ip4_gw} +| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | count=${NONE} +| | Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4_gw} +| | ... | ${tg_to_dut_if1_mac} + +| Check MAP Configuration With Traffic Script +| | [Documentation] +| | ... | Used as a test case template.\ +| | ... | Configure MAP-E domain with given parameters, with traffic script send +| | ... | UDP in IPv4 packet to given UDP destination port and IP destination +| | ... | address and check if correctly received IPv6 packet. Vice versa send +| | ... | IPv6 packet and check if received IPv4 packet with correct source +| | ... | address. +| | ... | The MAP domain is deleted in teardown. +| | ... | The expected IPv6 address is compared with computed IPv6 address. +| | [Arguments] | ${ipv4_pfx} | ${ipv6_pfx} | ${ipv6_br_src} | ${ea_bit_len} +| | ... | ${psid_offset} | ${psid_len} | ${ipv4_dst} | ${dst_port} +| | ... | ${expected_ipv6_dst}=${EMPTY} +| | ${domain_index}= | Map Add Domain | ${dut_node} | ${ipv4_pfx} | ${ipv6_pfx} +| | ... | ${ipv6_br_src} | ${ea_bit_len} | ${psid_offset} | ${psid_len} +| | ${computed_ipv6_dst}= | Compute IPv6 Map Destination Address +| | ... | ${ipv4_pfx} | ${ipv6_pfx} | ${ea_bit_len} | ${psid_offset} +| | ... | ${psid_len} | ${ipv4_dst} | ${dst_port} +| | ${ipv6_dst}= | Run Keyword If | "${expected_ipv6_dst}" == "${EMPTY}" +| | ... | Set Variable | ${computed_ipv6_dst} +| | ... | ELSE | Set Variable | ${expected_ipv6_dst} +| | Run Keyword If | "${expected_ipv6_dst}" != "${EMPTY}" +| | ... | IP Addresses Should Be Equal +| | ... | ${computed_ipv6_dst} | ${expected_ipv6_dst} +| | ${ipv6_dst}= | Set Variable | ${computed_ipv6_dst} +| | Check Encapsulation With Traffic Script +| | ... | ${ipv4_dst} | ${dst_port} | ${ipv6_dst} +| | Check Decapsulation With Traffic Script +| | ... | ${ipv6_dst} | ${ipv4_dst} | ${dst_port} +| | [Teardown] | Run Keywords +| | ... | Map Del Domain | ${dut_node} | ${domain_index} | AND +| | ... | Show Packet Trace On All DUTs | ${nodes} | AND +| | ... | Clear Packet Trace On All DUTs | ${nodes} | AND +| | ... | Verify VPP PID in Teardown + +| Check Encapsulation With Traffic Script +| | [Arguments] | ${ipv4_dst} | ${dst_port} | ${ipv6_dst} +| | Send IPv4 UDP And Check Headers For Lightweight 4over6 +| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} +| | ... | ${dut_to_tg_if1_mac} | ${ipv4_dst} | ${ipv4_outside} +| | ... | ${dst_port} | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} +| | ... | ${ipv6_dst} | ${ipv6_br_src} + +| Check Decapsulation With Traffic Script +| | [Arguments] | ${ipv6_ce_addr} | ${ipv4_inside} | ${port} +| | Send IPv4 UDP In IPv6 And Check Headers For Lightweight 4over6 +| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if1} +| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} +| | ... | ${ipv6_br_src} | ${ipv6_ce_addr} +| | ... | ${ipv4_outside} | ${ipv4_inside} | ${port} +| | ... | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} diff --git a/tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremapt-func.robot b/tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremapt-func.robot new file mode 100644 index 0000000000..89ff28af38 --- /dev/null +++ b/tests/vpp/func/ip4_tunnels/softwire/eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremapt-func.robot @@ -0,0 +1,135 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/ip/map.robot +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO +| Test Setup | Run Keywords | Set up functional test +| ... | AND | Set interfaces IP addresses and routes +| Test Teardown | Tear down functional test +| Documentation | *Test for Basic mapping rule for MAP-T*\ +| ... | *[Top] Network Topologies:* TG - DUT1 - TG with two links between the +| ... | nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP on TG-to-DUT-if1. +| ... | Eth-IPv6-UDP on TG-to-DUT-if2. +| ... | *[Cfg] DUT configuration:* DUT is configured with IPv4 on one DUT-to-TG +| ... | interface and IPv6 address on second DUT-to-TG interface. MAP-T domain +| ... | is configured in test template based on test parameters. +| ... | *[Ver] TG verification:* UDP packets in IPv4 are sent by TG to +| ... | destination in MAP domain. IPv6 packets with translated IPv4 addresses +| ... | are received on TG interface. +| ... | *[Ref] Applicable standard specifications:* RFC7599 + + +*** Variables *** +| ${dut_ip4}= | 10.0.0.1 +| ${dut_ip6}= | 2001:0::1 +| ${dut_ip4_gw}= | 10.0.0.2 +| ${dut_ip6_gw}= | 2001:0::2 +| ${ipv4_prefix_len}= | 24 +| ${ipv6_prefix_len}= | 64 +| ${ipv6_br_src}= | 2001:db8:ffff::/96 + + +*** Test Cases *** +| TC01: MAP-T test +| | [Documentation] | +| | ... | Test to check map-t address translation. +| | ... +| | ... | Arguments: +| | ... +| | ... | - ipv4_pfx +| | ... | - ipv6_dst_pfx +| | ... | - ipv6_src_pfx +| | ... | - ea_bit_len +| | ... | - psid_offset +| | ... | - psid_len +| | ... | - ipv4_src +| | ... | - ipv4_dst +| | ... | - dst_port +| | ... +| | [Template] | Check MAP-T configuration with traffic script +# |===================|===============|================|============|=============|==========|===========|================|==========| +# | ipv4_pfx | ipv6_dst_pfx | ipv6_src_pfx | ea_bit_len | psid_offset | psid_len | ipv4_src | ipv4_dst | dst_port | +# |===================|===============|================|============|=============|==========|===========|================|==========| +| | 20.169.0.0/16 | 2001::/16 | ${ipv6_br_src} | ${40} | ${0} | ${0} | 100.0.0.1 | 20.169.201.219 | ${1232} | +| | 20.169.201.219/32 | 2001:db8::/32 | ${ipv6_br_src} | ${0} | ${0} | ${0} | 100.0.0.1 | 20.169.201.219 | ${1232} | +| | 20.0.0.0/8 | 2001:db8::/40 | ${ipv6_br_src} | ${24} | ${0} | ${0} | 100.0.0.1 | 20.169.201.219 | ${1232} | +#| | 20.169.201.0/32 | 2001:db8::/32 | ${ipv6_br_src} | ${0} | ${6} | ${8} | 100.0.0.1 | 20.169.201.219 | ${1232} | +#| | 20.169.201.0/24 | 2001:db8::/32 | ${ipv6_br_src} | ${0} | ${6} | ${8} | 100.0.0.1 | 20.169.201.219 | ${1232} | + + +*** Keywords *** +| Set interfaces IP addresses and routes +| | Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | Set interfaces in 2-node circular topology up +| | Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4} | ${ipv4_prefix_len} +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6} | ${ipv6_prefix_len} +| | Vpp Route Add | ${dut_node} | :: | 0 | ${dut_ip6_gw} | ${dut_to_tg_if2} +| | ... | resolve_attempts=${NONE} | count=${NONE} +| | Add IP neighbor | ${dut_node} | ${dut_to_tg_if2} | ${dut_ip6_gw} +| | ... | ${tg_to_dut_if2_mac} +| | Vpp Route Add | ${dut_node} | 0.0.0.0 | 0 | ${dut_ip4_gw} | ${dut_to_tg_if1} +| | ... | resolve_attempts=${NONE} | count=${NONE} +| | Add IP neighbor | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip4_gw} +| | ... | ${tg_to_dut_if1_mac} + +| Check MAP-T configuration with traffic script +| | [Documentation] | +| | ... | Used as a test case template.\ +| | ... | Configure MAP-T domain with given parameters, with traffic script send +| | ... | UDP in IPv4 packet to given UDP destination port and IP destination +| | ... | address and check if correctly received IPv6 packet with translated +| | ... | source and destination addresses. Vice versa send IPv6 packet and +| | ... | check if received IPv4 packet with correct source and destination +| | ... | addresses. +| | ... | The MAP domain is deleted in teardown. +| | [Arguments] | ${ipv4_pfx} | ${ipv6_dst_pfx} | ${ipv6_src_pfx} +| | ... | ${ea_bit_len} | ${psid_offset} | ${psid_len} +| | ... | ${ipv4_outside} | ${ipv4_inside} | ${dst_port} +| | ${domain_index}= | Map Add Domain | ${dut_node} | ${ipv4_pfx} +| | ... | ${ipv6_dst_pfx} | ${ipv6_src_pfx} | ${ea_bit_len} | ${psid_offset} +| | ... | ${psid_len} | ${TRUE} +| | ${ipv6_ce_addr}= | Compute IPv6 map destination address +| | ... | ${ipv4_pfx} | ${ipv6_dst_pfx} | ${ea_bit_len} | ${psid_offset} +| | ... | ${psid_len} | ${ipv4_inside} | ${dst_port} +| | ${ipv6_br_addr}= | Compute IPv6 map source address +| | ... | ${ipv6_src_pfx} | ${ipv4_outside} +# Check translation from v4 to v6 with traffic script +| | Send IPv4 UDP and check IPv6 headers for MAP-T +| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} +| | ... | ${dut_to_tg_if1_mac} | ${ipv4_inside} | ${ipv4_outside} | ${dst_port} +| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} +| | ... | ${ipv6_ce_addr} | ${ipv6_br_addr} +# Check translation from v6 to v4 with traffic script +| | Send IPv6 UDP and check IPv4 headers for MAP-T +| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if1} +| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} +| | ... | ${ipv6_br_addr} | ${ipv6_ce_addr} +| | ... | ${dst_port} +| | ... | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} +| | ... | ${ipv4_outside} | ${ipv4_inside} +| | [Teardown] | Run Keywords +| | ... | Map Del Domain | ${dut_node} | ${domain_index} | AND +| | ... | Show packet trace on all DUTs | ${nodes} | AND +| | ... | Clear packet trace on all DUTs | ${nodes} | AND +| | ... | Verify VPP PID in Teardown diff --git a/tests/vpp/func/ip4_tunnels/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot b/tests/vpp/func/ip4_tunnels/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot new file mode 100644 index 0000000000..e4c8c25f0a --- /dev/null +++ b/tests/vpp/func/ip4_tunnels/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot @@ -0,0 +1,74 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/overlay/vxlan.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *RFC7348 VXLAN: Bridge-domain with VXLAN over VLAN test cases* +| ... +| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology with +| ... | single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-dot1q-IPv4-VXLAN-Eth-IPv4-ICMPv4 on +| ... | DUT1-DUT2, Eth-dot1q-IPv4-ICMPv4 on TG-DUTn for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | bridge-domain (L2BD) switching combined with static MACs, MAC learning +| ... | enabled and Split Horizon Groups (SHG) depending on test case; VXLAN +| ... | tunnels are configured between L2BDs on DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are +| ... | sent in both directions by TG on links to DUT1 and DUT2; on receive TG +| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr and +| ... | MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC7348. + +*** Variables *** +| ${VNI}= | 23 +| ${BID}= | 23 +| ${VLAN}= | 10 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv4oVLAN tunnels switch ICMPv4 between TG links +| | [Tags] | EXPECTED_FAILING +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-VXLAN-Eth-IPv4-ICMPv4 on\ +| | ... | DUT1-DUT2; Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 and DUT2 +| | ... | configure L2 bridge-domain (MAC learning enabled), each with one +| | ... | interface to TG and one VXLAN tunnel interface towards the other DUT +| | ... | over VLAN sub-interface. [Ver] Make TG send ICMPv4 Echo Req between +| | ... | two of its interfaces, verify all packets are received. [Ref] RFC7348. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Create vlan interfaces for VXLAN | ${VLAN} +| | ... | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${dut2_node} | ${dut2_to_dut1} +| | And Configure IP addresses and neighbors on interfaces +| | ... | ${dut1_node} | ${dut1s_vlan_name} | ${dut1s_vlan_index} +| | ... | ${dut2_node} | ${dut2s_vlan_name} | ${dut2s_vlan_index} +| | ${dut1s_vxlan}= | When Create VXLAN interface | ${dut1_node} | ${VNI} +| | | ... | ${dut1s_ip_address} | ${dut2s_ip_address} +| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan} | up +| | And Add interfaces to L2BD | ${dut1_node} | ${BID} +| | ... | ${dut1_to_tg} | ${dut1s_vxlan} +| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${VNI} +| | | ... | ${dut2s_ip_address} | ${dut1s_ip_address} +| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan} | up +| | And Add interfaces to L2BD | ${dut2_node} | ${BID} +| | ... | ${dut2_to_tg} | ${dut2s_vxlan} +| | Then Send ICMPv4 bidirectionally and verify received packets +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot b/tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot new file mode 100644 index 0000000000..32014e5985 --- /dev/null +++ b/tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot @@ -0,0 +1,78 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/overlay/vxlan.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/vm/double_qemu_setup.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *Bridge-domain with VXLAN test cases - IPv4* +| ... +| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on +| ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | bridge-domain (L2BD) switching combined with MAC learning enabled; +| ... | VXLAN tunnels are configured between L2BDs on DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent +| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG +| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC7348. + +*** Variables *** +| ${vni_1}= | 23 +| ${vni_2}= | 35 + +| ${bd_id1}= | 10 +| ${bd_id2}= | 20 +| ${bd_id3}= | 30 +| ${shg1}= | 1 +| ${shg2}= | 2 + +| ${ip4_addr1}= | 172.16.0.1 +| ${ip4_addr2}= | 172.16.0.2 +| ${ip4_prefix}= | 24 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv4 tunnels switch ICMPv4 between TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on \ +| | ... | DUT1-DUT2; Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 and DUT2 +| | ... | configure two i/fs into L2BD with MAC learning. [Ver] Make TG +| | ... | verify ICMPv4 Echo Req pkts are switched thru DUT1 and DUT2 in +| | ... | both directions and are correct on receive. [Ref] RFC7348. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${dut1_to_dut2_name}= | Get interface name | ${dut1_node} | ${dut1_to_dut2} +| | ${dut2_to_dut1_name}= | Get interface name | ${dut2_node} | ${dut2_to_dut1} +| | And Configure IP addresses and neighbors on interfaces | ${dut1_node} | ${dut1_to_dut2_name} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1_name} | ${NONE} +| | ${dut1s_vxlan}= | When Create VXLAN interface | ${dut1_node} | ${vni_1} +| | | ... | ${dut1s_ip_address} | ${dut2s_ip_address} +| | And Add interfaces to L2BD | ${dut1_node} | ${bd_id1} +| | ... | ${dut1_to_tg} | ${dut1s_vxlan} +| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${vni_1} +| | | ... | ${dut2s_ip_address} | ${dut1s_ip_address} +| | And Add interfaces to L2BD | ${dut2_node} | ${bd_id1} +| | ... | ${dut2_to_tg} | ${dut2s_vxlan} +| | Then Send ICMPv4 bidirectionally and verify received packets +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot b/tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot new file mode 100644 index 0000000000..aa88be5731 --- /dev/null +++ b/tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot @@ -0,0 +1,66 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/overlay/vxlan.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Resource | resources/libraries/robot/l2/l2_xconnect.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *RFC7348 VXLAN: L2 cross-connect with VXLAN test cases* +| ... +| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on +| ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | cross-connect (L2XC) switching; VXLAN tunnels are configured between +| ... | L2XCs on DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets +| ... | are sent in both directions by TG on links to DUT1 and DUT2; on receive +| ... | TG verifies packets for correctness and their IPv4 src-addr, dst-addr +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC7348. + +*** Variables *** +| ${VNI}= | 24 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2XC and VXLANoIPv4 tunnels switch ICMPv4 between TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on \ +| | ... | [Ref] RFC7348.DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On +| | ... | DUT1 and DUT2 configure L2 cross-connect (L2XC), each with one +| | ... | interface to TG and one VXLAN tunnel interface towards the other +| | ... | DUT. [Ver] Make TG send ICMPv4 Echo Req between two of its +| | ... | interfaces; verify all packets are received. [Ref] RFC7348. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${dut1_to_dut2_name}= | Get interface name | ${dut1_node} | ${dut1_to_dut2} +| | ${dut2_to_dut1_name}= | Get interface name | ${dut2_node} | ${dut2_to_dut1} +| | And Configure IP addresses and neighbors on interfaces +| | ... | ${dut1_node} | ${dut1_to_dut2_name} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1_name} | ${NONE} +| | ${dut1s_vxlan}= | When Create VXLAN interface | ${dut1_node} | ${VNI} +| | | ... | ${dut1s_ip_address} | ${dut2s_ip_address} +| | And Configure L2XC | ${dut1_node} | ${dut1_to_tg} | ${dut1s_vxlan} +| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${VNI} +| | | ... | ${dut2s_ip_address} | ${dut1s_ip_address} +| | And Configure L2XC | ${dut2_node} | ${dut2_to_tg} | ${dut2s_vxlan} +| | Then Send ICMPv4 bidirectionally and verify received packets +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/vpp/func/ip4_tunnels/vxlan/eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot b/tests/vpp/func/ip4_tunnels/vxlan/eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot new file mode 100644 index 0000000000..8fd608eada --- /dev/null +++ b/tests/vpp/func/ip4_tunnels/vxlan/eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot @@ -0,0 +1,200 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/overlay/vxlan.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/vm/double_qemu_setup.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2BD with SHG combined with VXLAN test cases - IPv4* +| ... +| ... | *[Top] Network topologies:* TG=DUT1=DUT2=TG 3-node circular topology +| ... | with double parallel links. +| ... | *[Enc] Packet encapsulations:* Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on +| ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | bridge-domain (L2BD) switching combined with MAC learning enabled +| ... | and Split Horizon Groups (SHG); VXLAN tunnels are configured +| ... | between L2BDs on DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent +| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG +| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC7348. + +*** Variables *** +| ${vni_1}= | 23 +| ${vni_2}= | 35 + +| ${bd_id1}= | 10 +| ${bd_id2}= | 20 +| ${bd_id3}= | 30 +| ${shg1}= | 1 +| ${shg2}= | 2 + +| ${ip4_addr1}= | 172.16.0.1 +| ${ip4_addr2}= | 172.16.0.2 +| ${ip4_prefix}= | 24 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv4 tunnels in SHG switch ICMPv4 between TG links +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG. [Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on \ +| | ... | DUT1-DUT2; Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 configure L2 +| | ... | bridge-domain (MAC learning enabled) with two untagged interfaces +| | ... | to TG and two VXLAN interfaces towards the DUT2 and put both VXLAN +| | ... | interfaces into the same Split-Horizon-Group (SHG). On DUT2 configure +| | ... | two L2 bridge-domain (MAC learning enabled), each with one untagged +| | ... | interface to TG and one VXLAN interface towards the DUT1. [Ver] Make +| | ... | TG send ICMPv4 Echo Reqs between all four of its interfaces to be +| | ... | switched by DUT1 and DUT2; verify packets are not switched between +| | ... | TG interfaces connected to DUT2 that are isolated by SHG on DUT1. +| | ... | [Ref] RFC7348. +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO +| | Given Configure path for 3-node BD-SHG test | ${nodes['TG']} +| | ... | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} +| | And Set interfaces in 3-node BD-SHG test up +| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr1} +| | ... | ${ip4_prefix} +| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr2} +| | ... | ${ip4_prefix} +| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr2} +| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr1} +| | ${dut1s_vxlan1}= | When Create VXLAN interface | ${dut1_node} | ${vni_1} +| | | ... | ${ip4_addr1} | ${ip4_addr2} +| | ${dut1s_vxlan2}= | And Create VXLAN interface | ${dut1_node} | ${vni_2} +| | | ... | ${ip4_addr1} | ${ip4_addr2} +| | ${dut2s_vxlan1}= | And Create VXLAN interface | ${dut2_node} | ${vni_1} +| | | ... | ${ip4_addr2} | ${ip4_addr1} +| | ${dut2s_vxlan2}= | And Create VXLAN interface | ${dut2_node} | ${vni_2} +| | | ... | ${ip4_addr2} | ${ip4_addr1} +| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan1} | up +| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan2} | up +| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan1} | up +| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan2} | up +| | And Vpp Node Interfaces Ready Wait | ${dut1_node} +| | And Vpp Node Interfaces Ready Wait | ${dut2_node} +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if1} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1s_vxlan1} +| | ... | ${bd_id1} | ${shg1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1s_vxlan2} +| | ... | ${bd_id1} | ${shg1} +| | And Create bridge domain | ${dut2_node} | ${bd_id2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if1} +| | ... | ${bd_id2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2s_vxlan1} +| | ... | ${bd_id2} +| | And Create bridge domain | ${dut2_node} | ${bd_id3} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if2} +| | ... | ${bd_id3} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2s_vxlan2} +| | ... | ${bd_id3} +| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if1} +| | ... | ${tg_to_dut2_if1} +| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if1} +| | ... | ${tg_to_dut2_if2} +| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if2} +| | ... | ${tg_to_dut2_if1} +| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if2} +| | ... | ${tg_to_dut2_if2} +| | And Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMPv4 bidirectionally and verify received packets +| | | ... | ${tg_node} | ${tg_to_dut2_if1} +| | | ... | ${tg_to_dut2_if2} + +| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv4 tunnels in different SHGs switch ICMPv4 between TG links +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG.[Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on \ +| | ... | DUT1-DUT2; Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 configure L2 +| | ... | bridge-domain (MAC learning enabled) with two untagged interfaces +| | ... | to TG and two VXLAN interfaces towards the DUT2 and put both VXLAN +| | ... | interfaces into the different Split-Horizon-Group (SHGs). On DUT2 +| | ... | configure two L2 bridge-domain (MAC learning enabled), each with one +| | ... | untagged interface to TG and one VXLAN interface towards the DUT1. +| | ... | [Ver] Make TG send ICMPv4 Echo Req between all four of its interfaces +| | ... | to be switched by DUT1 and DUT2; verify packets are switched between +| | ... | all TG interfaces. [Ref] RFC7348. +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO +| | Given Configure path for 3-node BD-SHG test | ${nodes['TG']} +| | ... | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} +| | And Set interfaces in 3-node BD-SHG test up +| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr1} +| | ... | ${ip4_prefix} +| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr2} +| | ... | ${ip4_prefix} +| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr2} +| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr1} +| | ${dut1s_vxlan1}= | When Create VXLAN interface | ${dut1_node} | ${vni_1} +| | | ... | ${ip4_addr1} | ${ip4_addr2} +| | ${dut1s_vxlan2}= | And Create VXLAN interface | ${dut1_node} | ${vni_2} +| | | ... | ${ip4_addr1} | ${ip4_addr2} +| | ${dut2s_vxlan1}= | And Create VXLAN interface | ${dut2_node} | ${vni_1} +| | | ... | ${ip4_addr2} | ${ip4_addr1} +| | ${dut2s_vxlan2}= | And Create VXLAN interface | ${dut2_node} | ${vni_2} +| | | ... | ${ip4_addr2} | ${ip4_addr1} +| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan1} | up +| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan2} | up +| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan1} | up +| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan2} | up +| | And Vpp Node Interfaces Ready Wait | ${dut1_node} +| | And Vpp Node Interfaces Ready Wait | ${dut2_node} +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if1} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1s_vxlan1} +| | ... | ${bd_id1} | ${shg1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1s_vxlan2} +| | ... | ${bd_id1} | ${shg2} +| | And Create bridge domain | ${dut2_node} | ${bd_id2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if1} +| | ... | ${bd_id2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2s_vxlan1} +| | ... | ${bd_id2} +| | And Create bridge domain | ${dut2_node} | ${bd_id3} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if2} +| | ... | ${bd_id3} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2s_vxlan2} +| | ... | ${bd_id3} +| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if1} +| | ... | ${tg_to_dut2_if1} +| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if1} +| | ... | ${tg_to_dut2_if2} +| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if2} +| | ... | ${tg_to_dut2_if1} +| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if2} +| | ... | ${tg_to_dut2_if2} +| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut2_if1} +| | ... | ${tg_to_dut2_if2} diff --git a/tests/vpp/func/ip6/eth2p-ethip6-ip6base-copblklistbase-func.robot b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-copblklistbase-func.robot new file mode 100644 index 0000000000..f4314500e5 --- /dev/null +++ b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-copblklistbase-func.robot @@ -0,0 +1,101 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.Cop +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/l2/l2_xconnect.robot +| Variables | resources/libraries/python/IPv6NodesAddr.py | ${nodes} +| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *COP Security IPv6 Blacklist Tests* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-ICMPv6 on all links. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv6 routing and +| ... | static routes. COP security black-lists are applied on DUT1 ingress +| ... | interface from TG. DUT2 is configured with L2XC. +| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in +| ... | one direction by TG on link to DUT1; on receive TG verifies packets for +| ... | correctness and drops as applicable. +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| ${tg_node}= | ${nodes['TG']} +| ${dut1_node}= | ${nodes['DUT1']} +| ${dut2_node}= | ${nodes['DUT2']} + +| ${dut1_if1_ip}= | 3ffe:62::1 +| ${dut1_if2_ip}= | 3ffe:63::1 +| ${dut1_if1_ip_GW}= | 3ffe:62::2 +| ${dut1_if2_ip_GW}= | 3ffe:63::2 + +| ${dut2_if1_ip}= | 3ffe:72::1 +| ${dut2_if2_ip}= | 3ffe:73::1 + +| ${test_dst_ip}= | 3ffe:64::1 +| ${test_src_ip}= | 3ffe:61::1 + +| ${cop_dut_ip}= | 3ffe:61:: + +| ${ip_prefix}= | 64 + +| ${nodes_ipv6_addresses}= | ${nodes_ipv6_addr} + +| ${fib_table_number}= | 1 + +*** Test Cases *** +| TC01: DUT drops IPv6 pkts with COP blacklist set with IPv6 src-addr +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-ICMPv6. [Cfg] On DUT1 \ +| | ... | configure interface IPv6 addresses and routes in the main +| | ... | routing domain, add COP blacklist on interface to TG with IPv6 +| | ... | src-addr matching packets generated by TG; on DUT2 configure L2 +| | ... | xconnect. [Ver] Make TG send ICMPv6 Echo Req on its interface to +| | ... | DUT1; verify no ICMPv6 Echo Req pkts are received. [Ref] +| | Given Configure path in 3-node circular topology +| | ... | ${tg_node} | ${dut1_node} | ${dut2_node} | ${tg_node} +| | And Set interfaces in 3-node circular topology up +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | And VPP Set IF IPv6 Addr +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_if1_ip} | ${ip_prefix} +| | And VPP Set IF IPv6 Addr +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if2_ip} | ${ip_prefix} +| | And VPP Set IF IPv6 Addr +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_if1_ip} | ${ip_prefix} +| | And VPP Set IF IPv6 Addr +| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_if2_ip} | ${ip_prefix} +| | And Add IP Neighbor +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_if1_ip_GW} | ${tg_to_dut1_mac} +| | And Add IP Neighbor +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if2_ip_GW} | ${tg_to_dut2_mac} +| | And Vpp Route Add | ${dut1_node} +| | ... | ${test_dst_ip} | ${ip_prefix} | ${dut1_if2_ip_GW} | ${dut1_to_dut2} +| | And Vpp All Ra Suppress Link Layer | ${nodes} +| | And Add fib table | ${dut1_node} +| | ... | ${cop_dut_ip} | ${ip_prefix} | ${fib_table_number} | drop +| | When COP Add whitelist Entry +| | ... | ${dut1_node} | ${dut1_to_tg} | ip6 | ${fib_table_number} +| | And COP interface enable or disable | ${dut1_node} | ${dut1_to_tg} | enable +| | Then Packet transmission from port to port should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} | ${dut1_to_dut2_mac} +| | ... | ${tg_to_dut2_mac} diff --git a/tests/vpp/func/ip6/eth2p-ethip6-ip6base-copwhlistbase-func.robot b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-copwhlistbase-func.robot new file mode 100644 index 0000000000..a60aa7760c --- /dev/null +++ b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-copwhlistbase-func.robot @@ -0,0 +1,101 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.Cop +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/l2/l2_xconnect.robot +| Variables | resources/libraries/python/IPv6NodesAddr.py | ${nodes} +| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *COP Security IPv6 Whitelist Tests* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-ICMPv6 on all links. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv6 routing and +| ... | static routes. COP security white-lists are applied on DUT1 ingress +| ... | interface from TG. DUT2 is configured with L2XC. +| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in +| ... | one direction by TG on link to DUT1; on receive TG verifies packets for +| ... | correctness and drops as applicable. +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| ${tg_node}= | ${nodes['TG']} +| ${dut1_node}= | ${nodes['DUT1']} +| ${dut2_node}= | ${nodes['DUT2']} + +| ${dut1_if1_ip}= | 3ffe:62::1 +| ${dut1_if2_ip}= | 3ffe:63::1 +| ${dut1_if1_ip_GW}= | 3ffe:62::2 +| ${dut1_if2_ip_GW}= | 3ffe:63::2 + +| ${dut2_if1_ip}= | 3ffe:72::1 +| ${dut2_if2_ip}= | 3ffe:73::1 + +| ${test_dst_ip}= | 3ffe:64::1 +| ${test_src_ip}= | 3ffe:61::1 + +| ${cop_dut_ip}= | 3ffe:61:: + +| ${ip_prefix}= | 64 + +| ${nodes_ipv6_addresses}= | ${nodes_ipv6_addr} + +| ${fib_table_number}= | 1 + +*** Test Cases *** +| TC01: DUT permits IPv6 pkts with COP whitelist set with IPv6 src-addr +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-ICMPv6. [Cfg] On DUT1 \ +| | ... | configure interface IPv6 addresses and routes in the main +| | ... | routing domain, add COP whitelist on interface to TG with IPv6 +| | ... | src-addr matching packets generated by TG; on DUT2 configure L2 +| | ... | xconnect. [Ver] Make TG send ICMPv6 Echo Req on its interface to +| | ... | DUT1; verify received ICMPv6 Echo Req pkts are correct. [Ref] +| | Given Configure path in 3-node circular topology +| | ... | ${tg_node} | ${dut1_node} | ${dut2_node} | ${tg_node} +| | And Set interfaces in 3-node circular topology up +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | And VPP Set IF IPv6 Addr +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_if1_ip} | ${ip_prefix} +| | And VPP Set IF IPv6 Addr +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if2_ip} | ${ip_prefix} +| | And VPP Set IF IPv6 Addr +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_if1_ip} | ${ip_prefix} +| | And VPP Set IF IPv6 Addr +| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_if2_ip} | ${ip_prefix} +| | And Add IP Neighbor +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_if1_ip_GW} | ${tg_to_dut1_mac} +| | And Add IP Neighbor +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if2_ip_GW} | ${tg_to_dut2_mac} +| | And Vpp Route Add | ${dut1_node} +| | ... | ${test_dst_ip} | ${ip_prefix} | ${dut1_if2_ip_GW} | ${dut1_to_dut2} +| | And Vpp All Ra Suppress Link Layer | ${nodes} +| | And Add fib table | ${dut1_node} | ${cop_dut_ip} | ${ip_prefix} | +| | ... | ${fib_table_number} | local +| | When COP Add whitelist Entry | ${dut1_node} | ${dut1_to_tg} | ip6 | +| | ... | ${fib_table_number} +| | And COP interface enable or disable | ${dut1_node} | ${dut1_to_tg} | enable +| | Then Send packet and verify headers | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} | ${dut1_to_dut2_mac} +| | ... | ${tg_to_dut2_mac} diff --git a/tests/vpp/func/ip6/eth2p-ethip6-ip6base-func.robot b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-func.robot new file mode 100644 index 0000000000..bd0b2a6b64 --- /dev/null +++ b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-func.robot @@ -0,0 +1,120 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.Trace +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/shared/counters.robot +| Resource | resources/libraries/robot/shared/default.robot +| Variables | resources/libraries/python/IPv6NodesAddr.py | ${nodes} +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | SKIP_VPP_PATCH +| Suite Setup | Run Keywords +| ... | Configure IPv6 on all DUTs in topology | ${nodes} | ${nodes_ipv6_addr} | AND +| ... | Suppress ICMPv6 router advertisement message | ${nodes} | AND +| ... | Configure IPv6 routing on all DUTs | ${nodes} | ${nodes_ipv6_addr} | AND +| ... | Configure all TGs for traffic script +| Test Setup | Run Keywords | Save VPP PIDs | AND +| ... | Reset VAT History On All DUTs | ${nodes} | AND +| ... | Clear interface counters on all vpp nodes in topology | ${nodes} +| Test Teardown | Run Keywords +| ... | Show packet trace on all DUTs | ${nodes} | AND +| ... | Show VAT History On All DUTs | ${nodes} | AND +| ... | Verify VPP PID in Teardown +| Documentation | *IPv6 routing test cases* +| ... +| ... | RFC2460 IPv6, RFC4443 ICMPv6, RFC4861 Neighbor Discovery. +| ... | Encapsulations: Eth-IPv6-ICMPv6 on links TG-DUT1, TG-DUT2, DUT1-DUT2; +| ... | Eth-IPv6-NS/NA on links TG-DUT. IPv6 routing tests use circular 3-node +| ... | topology TG - DUT1 - DUT2 - TG with one link between the nodes. DUT1 and +| ... | DUT2 are configured with IPv6 routing and static routes. Test ICMPv6 +| ... | Echo Request packets are sent in both directions by TG on links to DUT1 +| ... | and DUT2 and received on TG links on the other side of circular +| ... | topology. On receive TG verifies packets IPv6 src-addr, dst-addr and MAC +| ... | addresses. + +*** Test Cases *** +| TC01: DUT replies to ICMPv6 Echo Req to its ingress interface +| | [Tags] | VM_ENV +| | [Documentation] +| | ... | Make TG send ICMPv6 Echo Req to DUT ingress interface. Make TG\ +| | ... | verify ICMPv6 Echo Reply is correct. +| | Send IPv6 icmp echo request to DUT1 ingress inteface and verify answer | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes_ipv6_addr} + +| TC02: DUT replies to ICMPv6 Echo Req pkt with size 64B-to-1500B-incr-1B +| | [Tags] | VM_ENV +| | [Documentation] +| | ... | Make TG send ICMPv6 Echo Reqs to DUT ingress interface,\ +| | ... | incrementating frame size from 64B to 1500B with increment step +| | ... | of 1Byte. Make TG verify ICMP Echo Replies are correct. +| | Execute IPv6 ICMP echo sweep | ${nodes['TG']} | ${nodes['DUT1']} | 0 | 1452 | 1 | ${nodes_ipv6_addr} + +| TC03: DUT replies to ICMPv6 Echo Req pkt with size 1500B-to-9000B-incr-10B +| | [Documentation] +| | ... | Make TG send ICMPv6 Echo Reqs to DUT ingress interface,\ +| | ... | incrementating frame size from 1500B to 9000B with increment +| | ... | step of 10Bytes. Make TG verify ICMPv6 Echo Replies are correct. +| | [Setup] | Configure MTU on TG based on MTU on DUT | ${nodes['TG']} | ${nodes['DUT1']} +| | [Teardown] | Run keywords +| | ... | Set default Ethernet MTU on all interfaces on node | ${nodes['TG']} +| | ... | AND | Verify VPP PID in Teardown +| | Append Nodes | ${nodes['TG']} | ${nodes['DUT1']} +| | Compute Path +| | ${dut_port} | ${dut_node}= | Last Interface +| | ${mtu}= | Get Interface MTU | ${dut_node} | ${dut_port} +| | # ICMPv6 payload size is frame size minus size of Ehternet header, FCS, +| | # IPv6 header and ICMPv6 header +| | ${end_size}= | Evaluate | ${mtu} - 14 - 4 - 40 - 8 +| | Run Keyword If | ${mtu} > 1518 +| | ... | Execute IPv6 ICMP echo sweep | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | 1452 | ${end_size} | 10 | ${nodes_ipv6_addr} + +| TC04: DUT routes to its egress interface +| | [Tags] | VM_ENV +| | [Documentation] +| | ... | Make TG send ICMPv6 Echo Req towards DUT1 egress interface\ +| | ... | connected to DUT2. Make TG verify ICMPv6 Echo Reply is correct. +| | Send IPv6 ICMP echo request to DUT1 egress interface and verify answer | ${nodes['TG']} | ${nodes['DUT1']} | +| | ... | ${nodes['DUT2']} | ${nodes_ipv6_addr} + +| TC05: DUT1 routes to DUT2 ingress interface +| | [Tags] | VM_ENV +| | [Documentation] +| | ... | Make TG send ICMPv6 Echo Req towards DUT2 ingress interface\ +| | ... | connected to DUT1. Make TG verify ICMPv6 Echo Reply is correct. +| | Send IPv6 ICMP echo request to DUT2 via DUT1 and verify answer | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes_ipv6_addr} + +| TC06: DUT1 routes to DUT2 egress interface +| | [Tags] | VM_ENV +| | [Documentation] +| | ... | Make TG send ICMPv6 Echo Req towards DUT2 egress interface\ +| | ... | connected to TG. Make TG verify ICMPv6 Echo Reply is correct. +| | Send IPv6 ICMP echo request to DUT2 egress interface via DUT1 and verify answer | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes_ipv6_addr} + +| TC07: DUT1 and DUT2 route between TG interfaces +| | [Tags] | VM_ENV +| | [Documentation] +| | ... | Make TG send ICMPv6 Echo Req between its interfaces across DUT1\ +| | ... | and DUT2. Make TG verify ICMPv6 Echo Replies are correct. +| | Ipv6 tg to tg routed | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} +| | ... | ${nodes_ipv6_addr} + +| TC08: DUT replies to IPv6 Neighbor Solicitation +| | [Tags] | VM_ENV +| | [Documentation] +| | ... | On DUT configure interface IPv6 address in the main routing\ +| | ... | domain. Make TG send Neighbor Solicitation message on the link +| | ... | to DUT and verify DUT Neighbor Advertisement reply is correct. +| | Send IPv6 neighbor solicitation and verify answer | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes_ipv6_addr} diff --git a/tests/vpp/func/ip6/eth2p-ethip6-ip6base-iaclbase-func.robot b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-iaclbase-func.robot new file mode 100644 index 0000000000..e0862ab9ef --- /dev/null +++ b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-iaclbase-func.robot @@ -0,0 +1,577 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/counters.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/l2/l2_xconnect.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Library | resources.libraries.python.Classify.Classify +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *IPv6 routing with ingress ACL test cases* +| ... +| ... | Encapsulations: Eth-IPv6 on links TG-DUT1, TG-DUT2, DUT1-DUT2. IPv6 +| ... | ingress ACL (iACL) tests use 3-node topology TG - DUT1 - DUT2 - TG with +| ... | one link between the nodes. DUT1 and DUT2 are configured with IPv6 +| ... | routing and static routes. DUT1 is configured with iACL on link to TG, +| ... | iACL classification and permit/deny action are configured on a per test +| ... | case basis. Test ICMPv6 Echo Request packets are sent in one direction +| ... | by TG on link to DUT1 and received on TG link to DUT2. On receive TG +| ... | verifies if packets are dropped, or if received verifies packet IPv6 +| ... | src-addr, dst-addr and MAC addresses. + +*** Variables *** +| ${dut1_to_tg_ip}= | 3ffe:62::1 +| ${dut1_to_dut2_ip}= | 3ffe:63::1 +| ${dut1_to_dut2_ip_GW}= | 3ffe:63::2 +| ${dut2_to_dut1_ip}= | 3ffe:72::1 +| ${dut2_to_tg_ip}= | 3ffe:73::1 +| ${test_dst_ip}= | 3ffe:64::1 +| ${test_src_ip}= | 3ffe:61::1 +| ${non_drop_dst_ip}= | 3ffe:54::1 +| ${non_drop_src_ip}= | 3ffe:51::1 +| ${prefix_length}= | 64 +| ${ip_version}= | ip6 +| ${l2_table}= | l2 + +*** Test Cases *** +| TC01: DUT with iACL IPv6 src-addr drops matching pkts +| | [Documentation] +| | ... | On DUT1 add source IPv6 address to classify table with 'deny'.\ +| | ... | Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Ip Neighbor +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | And Vpp All Ra Suppress Link Layer | ${nodes} +| | Then Send packet and verify headers | ${tg_node} +| | ... | ${non_drop_src_ip} | ${test_dst_ip} | ${tg_to_dut1} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table L3 | ${dut1_node} +| | ... | ${ip_version} | src +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | ${ip_version} | src | ${test_src_ip} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then Packet transmission from port to port should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers | ${tg_node} +| | ... | ${non_drop_src_ip} | ${test_dst_ip} | ${tg_to_dut1} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} + +| TC02: DUT with iACL IPv6 dst-addr drops matching pkts +| | [Documentation] +| | ... | On DUT1 add destination IPv6 address to classify table with 'deny'.\ +| | ... | Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Ip Neighbor +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${non_drop_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | And Vpp All Ra Suppress Link Layer | ${nodes} +| | Then Send packet and verify headers | ${tg_node} +| | ... | ${test_src_ip} | ${non_drop_dst_ip} | ${tg_to_dut1} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table L3 | ${dut1_node} +| | ... | ${ip_version} | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | ${ip_version} | dst | ${test_dst_ip} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then Packet transmission from port to port should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers | ${tg_node} +| | ... | ${test_src_ip} | ${non_drop_dst_ip} | ${tg_to_dut1} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} + +| TC03: DUT with iACL IPv6 src-addr and dst-addr drops matching pkts +| | [Documentation] +| | ... | On DUT1 add source and destination IPv6 addresses to classify table\ +| | ... | with 'deny'. Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Ip Neighbor +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${non_drop_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | And Vpp All Ra Suppress Link Layer | ${nodes} +| | Then Send packet and verify headers | ${tg_node} +| | ... | ${non_drop_src_ip} | ${non_drop_dst_ip} | ${tg_to_dut1} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | ${table_index_1} | ${skip_n_1} | ${match_n_1}= +| | ... | When Vpp Creates Classify Table L3 | ${dut1_node} +| | ... | ${ip_version} | src +| | ${table_index_2} | ${skip_n_2} | ${match_n_2}= +| | ... | And Vpp Creates Classify Table L3 | ${dut1_node} | ${ip_version} | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1_node} | deny | ${table_index_1} | ${skip_n_1} | ${match_n_2} +| | ... | ${ip_version} | src | ${test_src_ip} +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1_node} | deny | ${table_index_2} | ${skip_n_2} | ${match_n_2} +| | ... | ${ip_version} | dst | ${test_dst_ip} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index_1} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index_2} +| | Then Packet transmission from port to port should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers | ${tg_node} +| | ... | ${non_drop_src_ip} | ${non_drop_dst_ip} | ${tg_to_dut1} +| | ... | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} | ${tg_to_dut2} +| | ... | ${dut1_to_dut2_mac} | ${tg_to_dut2_mac} + +| TC04: DUT with iACL IPv6 protocol set to TCP drops matching pkts +| | [Documentation] +| | ... | On DUT1 add protocol mask and TCP protocol (0x06) to classify table\ +| | ... | with 'deny'. Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Ip Neighbor +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | And Vpp All Ra Suppress Link Layer | ${nodes} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table Hex +| | ... | ${dut1_node} | 0000000000000000000000000000000000000000FF +| | And Vpp Configures Classify Session Hex +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | 000000000000000000000000000000000000000006 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then TCP or UDP packet transmission should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 + +| TC05: DUT with iACL IPv6 protocol set to UDP drops matching pkts +| | [Documentation] +| | ... | On DUT1 add protocol mask and UDP protocol (0x11) to classify table\ +| | ... | with 'deny'. Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Ip Neighbor +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | And Vpp All Ra Suppress Link Layer | ${nodes} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table Hex +| | ... | ${dut1_node} | 0000000000000000000000000000000000000000FF +| | And Vpp Configures Classify Session Hex +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | 000000000000000000000000000000000000000011 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then TCP or UDP packet transmission should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 + +| TC06: DUT with iACL IPv6 TCP src-ports drops matching pkts +| | [Documentation] +| | ... | On DUT1 add TCP source ports to classify table with 'deny'.\ +| | ... | Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Ip Neighbor +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | And Vpp All Ra Suppress Link Layer | ${nodes} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 110 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 +| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | TCP | source +| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 80 | 0 +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} +| | And Vpp Configures Classify Session Hex +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | ${hex_value} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then TCP or UDP packet transmission should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 110 | 20 + +| TC07: DUT with iACL IPv6 TCP dst-ports drops matching pkts +| | [Documentation] +| | ... | On DUT1 add TCP destination ports to classify table with 'deny'.\ +| | ... | Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Ip Neighbor +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | And Vpp All Ra Suppress Link Layer | ${nodes} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 20 | 110 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 20 | 80 +| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | TCP | destination +| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 0 | 80 +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} +| | And Vpp Configures Classify Session Hex +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | ${hex_value} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then TCP or UDP packet transmission should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 20 | 80 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 20 | 110 + +| TC08: DUT with iACL IPv6 TCP src-ports and dst-ports drops matching pkts +| | [Documentation] +| | ... | On DUT1 add TCP source and destination ports to classify table\ +| | ... | with 'deny'. Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Ip Neighbor +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | And Vpp All Ra Suppress Link Layer | ${nodes} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 110 | 25 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 +| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | TCP +| | ... | source + destination +| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 80 | 20 +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} +| | And Vpp Configures Classify Session Hex +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | ${hex_value} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then TCP or UDP packet transmission should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 80 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | TCP | 110 | 25 + +| TC09: DUT with iACL IPv6 UDP src-ports drops matching pkts +| | [Documentation] +| | ... | On DUT1 add UDP source ports to classify table with 'deny'.\ +| | ... | Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Ip Neighbor +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | And Vpp All Ra Suppress Link Layer | ${nodes} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 +| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | UDP | source +| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 80 | 0 +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} +| | And Vpp Configures Classify Session Hex +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | ${hex_value} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then TCP or UDP packet transmission should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 20 + +| TC10: DUT with iACL IPv6 UDP dst-ports drops matching pkts +| | [Documentation] +| | ... | On DUT1 add TCP destination ports to classify table with 'deny'.\ +| | ... | Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Ip Neighbor +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | And Vpp All Ra Suppress Link Layer | ${nodes} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 20 | 110 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 20 | 80 +| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | UDP | destination +| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 0 | 80 +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} +| | And Vpp Configures Classify Session Hex +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | ${hex_value} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then TCP or UDP packet transmission should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 20 | 80 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 20 | 110 + +| TC11: DUT with iACL IPv6 UDP src-ports and dst-ports drops matching pkts +| | [Documentation] +| | ... | On DUT1 add UDP source and destination ports to classify table\ +| | ... | with 'deny'. Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_dut2} | ${dut1_to_dut2_ip} | ${prefix_length} +| | And Add Ip Neighbor +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip_GW} +| | ... | ${tg_to_dut2_mac} +| | And Vpp Route Add +| | ... | ${dut1_node} | ${test_dst_ip} | ${prefix_length} +| | ... | ${dut1_to_dut2_ip_GW} | ${dut1_to_dut2} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | And Vpp All Ra Suppress Link Layer | ${nodes} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 25 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 +| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | UDP +| | ... | source + destination +| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 80 | 20 +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} +| | And Vpp Configures Classify Session Hex +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | ${hex_value} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${ip_version} | ${table_index} +| | Then TCP or UDP packet transmission should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 25 + +| TC12: DUT with iACL MAC src-addr and iACL IPv6 UDP src-ports and dst-ports drops matching pkts +| | [Documentation] +| | ... | On DUT1 add source MAC address to classify (L2) table and add UDP\ +| | ... | source and destination ports to classify (hex) table with 'deny'. +| | ... | Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Configure L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_tg} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | And Vpp All Ra Suppress Link Layer | ${nodes} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 25 +| | And Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table L2 | ${dut1_node} | src +| | And Vpp Configures Classify Session L2 +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | src | ${tg_to_dut1_mac} +| | ${hex_mask}= | Compute Classify Hex Mask | ${ip_version} | UDP +| | ... | source + destination +| | ${hex_value}= | Compute Classify Hex Value | ${hex_mask} | 80 | 20 +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table Hex | ${dut1_node} | ${hex_mask} +| | And Vpp Configures Classify Session Hex +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | ${hex_value} +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${l2_table} | ${table_index} +| | Then Send TCP or UDP packet and verify received packet | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 110 | 25 +| | And TCP or UDP packet transmission should fail | ${tg_node} +| | ... | ${test_src_ip} | ${test_dst_ip} | ${tg_to_dut1} | ${tg_to_dut1_mac} +| | ... | ${tg_to_dut2} | ${dut1_to_tg_mac} | UDP | 80 | 20 diff --git a/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6dhcpproxy-func.robot b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6dhcpproxy-func.robot new file mode 100644 index 0000000000..2858f3743e --- /dev/null +++ b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6dhcpproxy-func.robot @@ -0,0 +1,66 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/features/dhcp_proxy.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *DHCPv6 proxy test cases* +| ... +| ... | *[Top] Network Topologies:* TG = DUT +| ... | with two links between the nodes. +| ... | *[Cfg] DUT configuration:* DUT is configured with DHCPv6 proxy. +| ... | *[Ver] TG verification:* Test DHCPv6 packets are sent +| ... | on TG on first link to DUT and received on TG on second link. +| ... | On receive TG verifies if DHCPv6 packets are valid +| ... | *[Ref] Applicable standard specifications:* RFC 3315 + + +*** Variables *** +| ${dut_to_tg_if1_ip}= | 3ffe:62::1 +| ${dut_to_tg_if2_ip}= | 3ffe:63::1 +| ${dhcp_server_ip}= | 3ffe:63::2 +| ${prefix_length}= | 64 + + +*** Test Cases *** +| TC01: VPP proxies valid DHCPv6 request to DHCPv6 server +| | [Documentation] | +| | ... | [Top] TG=DUT +| | ... | [Cfg] On DUT setup DHCP proxy. +| | ... | [Ver] Make TG verify matching DHCPv6 packets between client and \ +| | ... | DHCPv6 server through DHCPv6 proxy. +| | ... | [Ref] RFC 3315 +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And Vpp Set If Ipv6 Addr | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${dut_to_tg_if1_ip} | ${prefix_length} +| | And Vpp Set If Ipv6 Addr | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${dut_to_tg_if2_ip} | ${prefix_length} +| | And VPP Route Add | ${dut_node} | ff02::1:2 | 128 | ${NONE} | local +| | ... | ${FALSE} | ${NONE} +| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${dhcp_server_ip} +| | ... | ${tg_to_dut_if2_mac} +| | And Vpp All Ra Suppress Link Layer | ${nodes} +| | When DHCP Proxy Config | ${dut_node} | ${dhcp_server_ip} +| | ... | ${dut_to_tg_if1_ip} +| | Then Send DHCPv6 Messages | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} +| | ... | ${dut_to_tg_if1_ip} | ${dut_to_tg_if1_mac} | ${dhcp_server_ip} +| | ... | ${tg_to_dut_if2_mac} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if2_mac} diff --git a/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6ecmp-func.robot b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6ecmp-func.robot new file mode 100644 index 0000000000..1f4b6c7270 --- /dev/null +++ b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6ecmp-func.robot @@ -0,0 +1,74 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/counters.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *Ipv6 Multipath routing test cases* +| ... +| ... | *[Top] Network topologies:* TG=DUT 2-node topology with two links\ +| ... | between nodes. +| ... | *[Cfg] DUT configuration:* On DUT configure interfaces IPv4 adresses,\ +| ... | and multipath routing. +| ... | *[Ver] TG verification:* Test packets are sent from TG on the first\ +| ... | link to DUT. Packet is received on TG on the second link from DUT1. + +*** Variables *** +| ${ip_1}= | 3ffe:61::1 +| ${ip_2}= | 3ffe:62::1 +| ${test_dst_ip}= | 3ffe:71::1 +| ${test_src_ip}= | 3ffe:51::1 +| ${prefix_length}= | 64 +| ${neighbor_1_ip}= | 3ffe:62::2 +| ${neighbor_1_mac}= | 02:00:00:00:00:02 +| ${neighbor_2_ip}= | 3ffe:62::3 +| ${neighbor_2_mac}= | 02:00:00:00:00:03 + +*** Test Cases *** +| TC01: IPv6 Equal-cost multipath routing +| | [Documentation] +| | ... | [Top] TG=DUT +| | ... | [Cfg] On DUT configure multipath routing wiht two equal-cost paths. +| | ... | [Ver] TG sends 100 IPv6 ICMP packets traffic on the first link to\ +| | ... | DUT. On second link to TG verify if traffic is divided into two paths. +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And Vpp Set If Ipv6 Addr | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${ip_1} | ${prefix_length} +| | And Vpp Set If Ipv6 Addr | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${ip_2} | ${prefix_length} +| | And Add Ip Neighbor +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${neighbor_1_ip} | ${neighbor_1_mac} +| | And Add Ip Neighbor +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${neighbor_2_ip} | ${neighbor_2_mac} +| | And Suppress ICMPv6 router advertisement message | ${nodes} +| | When Vpp Route Add +| | ... | ${dut_node} | ${test_dst_ip} | ${prefix_length} | ${neighbor_1_ip} +| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | multipath=${TRUE} +| | And Vpp Route Add +| | ... | ${dut_node} | ${test_dst_ip} | ${prefix_length} | ${neighbor_2_ip} +| | ... | ${dut_to_tg_if1} | resolve_attempts=${NONE} | multipath=${TRUE} +| | Then Send packets and verify multipath routing | ${tg_node} +| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1} | ${test_src_ip} | ${test_dst_ip} +| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} | ${dut_to_tg_if1_mac} +| | ... | ${neighbor_1_mac} | ${neighbor_2_mac} diff --git a/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6ra-func.robot b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6ra-func.robot new file mode 100644 index 0000000000..20fa1bd876 --- /dev/null +++ b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ip6ra-func.robot @@ -0,0 +1,107 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/counters.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *IPv6 Router Advertisement test cases* +| ... +| ... | RFC4861 Neighbor Discovery. Encapsulations: Eth-IPv6-RA on links +| ... | TG-DUT1. IPv6 Router Advertisement tests use 3-node topology TG - DUT1 - +| ... | DUT2 - TG with one link between the nodes. DUT1 and DUT2 are configured +| ... | with IPv6 routing and static routes. TG verifies received RA packets. + + +*** Variables *** +| ${dut1_to_tg_ip}= | 3ffe:62::1 +| ${tg_to_dut1_ip}= | 3ffe:62::2 +| ${prefix_length}= | 64 +| ${interval}= | 2 + +*** Test Cases *** +| TC01: DUT transmits RA on IPv6 enabled interface +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Cfg] On DUT1 configure IPv6 interface on the link to TG. +| | ... | [Ver] Make TG wait for IPv6 Router Advertisement packet to be sent\ +| | ... | by DUT1 and verify the received RA packet is correct. +| | [Tags] | EXPECTED_FAILING +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | When Vpp RA Send After Interval | ${dut1_node} | ${dut1_to_tg} +| | Then Receive and verify router advertisement packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${dut1_to_tg_mac} + +| TC02: DUT retransmits RA on IPv6 enabled interface after a set interval +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Cfg] On DUT1 configure IPv6 interface on the link to TG. +| | ... | [Ver] Make TG wait for two IPv6 Router Advertisement packets\ +| | ... | to be sent by DUT1 and verify the received RA packets are correct. +| | [Tags] | EXPECTED_FAILING +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | When Vpp RA Send After Interval | ${dut1_node} | ${dut1_to_tg} +| | ... | interval=${interval} +| | :FOR | ${n} | IN RANGE | ${2} +| | | Then Receive and verify router advertisement packet +| | | ... | ${tg_node} | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${interval} + +| TC03: DUT responds to Router Solicitation request +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Cfg] On DUT1 configure IPv6 interface on the link to TG and suppress\ +| | ... | sending of Router Advertisement packets periodically. +| | ... | [Ver] Make TG send IPv6 Router Solicitation request to DUT1, listen\ +| | ... | for response from DUT1 and verify the received RA packet is correct. +| | [Tags] | EXPECTED_FAILING +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | When VPP RA Suppress Link Layer | ${dut1_node} | ${dut1_to_tg} +| | Then Send router solicitation and verify response +| | ... | ${tg_node} | ${dut1_node} | ${tg_to_dut1} | ${dut1_to_tg} +| | ... | ${tg_to_dut1_ip} + +| TC04: DUT responds to Router Solicitation request sent from link local address +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Cfg] On DUT1 configure IPv6 interface on the link to TG and suppress\ +| | ... | sending of Router Advertisement packets periodically. +| | ... | [Ver] Make TG send IPv6 Router Solicitation request to DUT1, listen\ +| | ... | for response from DUT1 and verify the received RA packet is correct. +| | [Tags] | EXPECTED_FAILING +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Vpp Set If Ipv6 Addr | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | When VPP RA Suppress Link Layer | ${dut1_node} | ${dut1_to_tg} +| | Then Send router solicitation and verify response +| | ... | ${tg_node} | ${dut1_node} | ${tg_to_dut1} | ${dut1_to_tg} diff --git a/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ipolicemarkbase-func.robot b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ipolicemarkbase-func.robot new file mode 100644 index 0000000000..788d74ba92 --- /dev/null +++ b/tests/vpp/func/ip6/eth2p-ethip6-ip6base-ipolicemarkbase-func.robot @@ -0,0 +1,161 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | VM_ENV | HW_ENV +| Resource | resources/libraries/robot/features/policer.robot +| Library | resources.libraries.python.Trace +| Test Setup | Run Keywords | Set up functional test +| ... | AND | Configure topology for IPv6 policer test +| Test Teardown | Tear down functional test +| Documentation | *IPv6 policer test cases* +| ... +| ... | *[Top] Network topologies:* TG=DUT1 2-node topology with two links\ +| ... | between nodes. +| ... | *[Cfg] DUT configuration:* On DUT1 configure interfaces IPv6 adresses,\ +| ... | and static neighbor record on the second interface. +| ... | *[Ver] TG verification:* Test packet is sent from TG on the first link\ +| ... | to DUT1. Packet is received on TG on the second link from DUT1. +| ... | *[Ref] Applicable standard specifications:* RFC2474, RFC2697, RFC2698. + +*** Variables *** +| ${tg_to_dut_if1_ip6}= | 3ffe:5f::2 +| ${tg_to_dut_if2_ip6}= | 3ffe:60::2 +| ${dut_to_tg_if1_ip6}= | 3ffe:5f::1 +| ${dut_to_tg_if2_ip6}= | 3ffe:60::1 +| ${ip6_plen}= | ${64} + +| ${cir}= | ${100} +| ${eir}= | ${150} +| ${cb}= | ${200} +| ${eb}= | ${300} + +*** Test Cases *** +| TC01: VPP policer 2R3C Color-aware marks packet +| | [Documentation] +| | ... | [Top] TG=DUT1. +| | ... | [Ref] RFC2474, RFC2698. +| | ... | [Cfg] On DUT1 configure 2R3C color-aware policer on the first\ +| | ... | interface. +| | ... | [Ver] TG sends IPv6 TCP packet on the first link to DUT1.\ +| | ... | On DUT1 packet is marked with DSCP tag. Verify if DUT1 sends\ +| | ... | correct IPv6 TCP packet with correct DSCP on the second link to TG. +| | ${dscp}= | DSCP AF22 +| | Given Policer Set Name | policer1 +| | And Policer Set Node | ${dut_node} +| | And Policer Set CIR | ${cir} +| | And Policer Set EIR | ${eir} +| | And Policer Set CB | ${cb} +| | And Policer Set EB | ${eb} +| | And Policer Set Rate Type pps +| | And Policer Set Round Type Closest +| | And Policer Set Type 2R3C 2698 +| | And Policer Set Conform Action Transmit +| | And Policer Set Exceed Action Mark and Transmit | ${dscp} +| | And Policer Set Violate Action Drop +| | And Policer Enable Color Aware +| | And Policer Classify Set Precolor Exceed +| | And Policer Classify Set Interface | ${dut_to_tg_if1} +| | And Policer Classify Set Match IP | ${tg_to_dut_if1_ip} +| | When Policer Set Configuration +| | Then Send packet and verify marking | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} +| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if2_ip} | ${dscp} + +| TC02: VPP policer 2R3C Color-blind marks packet +| | [Documentation] +| | ... | [Top] TG=DUT1. +| | ... | [Ref] RFC2474, RFC2698. +| | ... | [Cfg] On DUT1 configure 2R3C color-blind policer on the first\ +| | ... | interface. +| | ... | [Ver] TG sends IPv6 TCP packet on the first link to DUT1.\ +| | ... | On DUT1 packet is marked with DSCP tag. Verify if DUT1 sends\ +| | ... | correct IPv6 TCP packet with correct DSCP on the second link to TG. +| | ${dscp}= | DSCP AF22 +| | Given Policer Set Name | policer1 +| | And Policer Set Node | ${dut_node} +| | And Policer Set CIR | ${cir} +| | And Policer Set EIR | ${eir} +| | And Policer Set CB | ${cb} +| | And Policer Set EB | ${eb} +| | And Policer Set Rate Type pps +| | And Policer Set Round Type Closest +| | And Policer Set Type 2R3C 2698 +| | And Policer Set Conform Action Mark and Transmit | ${dscp} +| | And Policer Set Exceed Action Transmit +| | And Policer Set Violate Action Drop +| | And Policer Classify Set Precolor Conform +| | And Policer Classify Set Interface | ${dut_to_tg_if1} +| | And Policer Classify Set Match IP | ${tg_to_dut_if1_ip} +| | When Policer Set Configuration +| | Then Send packet and verify marking | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} +| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if2_ip} | ${dscp} + +| TC03: VPP policer 1R3C Color-aware marks packet +| | [Documentation] +| | ... | [Top] TG=DUT1. +| | ... | [Ref] RFC2474, RFC2697. +| | ... | [Cfg] On DUT1 configure 1R3C color-aware policer on the first\ +| | ... | interface. +| | ... | [Ver] TG sends IPv6 TCP packet on the first link to DUT1.\ +| | ... | On DUT1 packet is marked with DSCP tag. Verify if DUT1 sends\ +| | ... | correct IPv6 TCP packet with correct DSCP on the second link to TG. +| | ${dscp}= | DSCP AF22 +| | Given Policer Set Name | policer1 +| | And Policer Set Node | ${dut_node} +| | And Policer Set CIR | ${1} +| | And Policer Set CB | ${2} +| | And Policer Set EB | ${eb} +| | And Policer Set Rate Type pps +| | And Policer Set Round Type Closest +| | And Policer Set Type 1R3C +| | And Policer Set Conform Action Transmit +| | And Policer Set Exceed Action Mark and Transmit | ${dscp} +| | And Policer Set Violate Action Drop +| | And Policer Enable Color Aware +| | And Policer Classify Set Precolor Exceed +| | And Policer Classify Set Interface | ${dut_to_tg_if1} +| | And Policer Classify Set Match IP | ${tg_to_dut_if1_ip} +| | When Policer Set Configuration +| | Then Send packet and verify marking | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} +| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if2_ip} | ${dscp} + +| TC04: VPP policer 1R3C Color-blind marks packet +| | [Documentation] +| | ... | [Top] TG=DUT1. +| | ... | [Ref] RFC2474, RFC2697. +| | ... | [Cfg] On DUT1 configure 1R3C color-blind policer on the first\ +| | ... | interface. +| | ... | [Ver] TG sends IPv6 TCP packet on the first link to DUT1.\ +| | ... | On DUT1 packet is marked with DSCP tag. Verify if DUT1 sends\ +| | ... | correct IPv6 TCP packet with correct DSCP on the second link to TG. +| | ${dscp}= | DSCP AF22 +| | Given Policer Set Name | policer1 +| | And Policer Set Node | ${dut_node} +| | And Policer Set CIR | ${cir} +| | And Policer Set CB | ${cb} +| | And Policer Set Rate Type pps +| | And Policer Set Round Type Closest +| | And Policer Set Type 1R3C +| | And Policer Set Conform Action Mark and Transmit | ${dscp} +| | And Policer Set Exceed Action Transmit +| | And Policer Set Violate Action Drop +| | And Policer Classify Set Precolor Conform +| | And Policer Classify Set Interface | ${dut_to_tg_if1} +| | And Policer Classify Set Match IP | ${tg_to_dut_if1_ip} +| | When Policer Set Configuration +| | Then Send packet and verify marking | ${tg_node} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if2} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} +| | ... | ${tg_to_dut_if1_ip} | ${tg_to_dut_if2_ip} | ${dscp} diff --git a/tests/vpp/func/ip6/eth2p-ethip6-ip6basevrf-func.robot b/tests/vpp/func/ip6/eth2p-ethip6-ip6basevrf-func.robot new file mode 100644 index 0000000000..cf0ed43a4a --- /dev/null +++ b/tests/vpp/func/ip6/eth2p-ethip6-ip6basevrf-func.robot @@ -0,0 +1,409 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *Vpn routed forwarding - baseline IPv6* +| ... | *[Top] Network Topologies:* TG=DUT1=DUT2=TG 3-node topology with two +| ... | links in between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-ICMPv6 +| ... | *[Cfg] DUT configuration:* Each DUT is configured with two VRF tables; +| ... | Separation of traffic is tested by IP packets; Neighbors and Routes are +| ... | set on DUT nodes; IP addresses are set on DUT interfaces. +| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets +| ... | are sent by TG on link to DUT1, DUT2 or back to TG; On receipt TG +| ... | verifies packets for correctness and their IPv6 src-addr, dst-addr, +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| ${fib_table_1}= | 9 +| ${fib_table_2}= | 99 + +| ${dut1_to_tg_ip1}= | 2001:62::3 +| ${dut1_to_tg_ip2}= | 2001:62::4 +| ${dut2_to_tg_ip1}= | 2003:62::3 +| ${dut2_to_tg_ip2}= | 2003:62::4 + +| ${dut1_to_dut2_ip1}= | 2002:62::1 +| ${dut1_to_dut2_ip2}= | 2002:62::2 +| ${dut2_to_dut1_ip1}= | 2002:62::3 +| ${dut2_to_dut1_ip2}= | 2002:62::4 + +| ${tg_dut1_ip1}= | 2001:62::1 +| ${tg_dut1_ip2}= | 2001:62::2 +| ${tg_dut2_ip1}= | 2003:62::1 +| ${tg_dut2_ip2}= | 2003:62::2 + +| ${ip_prefix}= | 64 +| ${timeout}= | 5 + +*** Test Cases *** +| TC01: TG packets routed to DUT ingress interface, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG +| | ... | [Enc] Eth-IPv6-ICMPv6. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. Neighbors are +| | ... | configured for each DUTs ingress/egress ports, and each VRF is +| | ... | configured with just one route. +| | ... | [Ver] Packet is sent from TG->DUT1-if1 to DUT1->TG-if1 and from +| | ... | TG->DUT1-if2 to DUT1->TG-if2 and checked if arrived. +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Send ICMP echo request and verify answer | ${tg_node} +| | ... | ${tg_to_dut1_if1} | ${dut1_to_tg_if1_mac} +| | ... | ${tg_to_dut1_if1_mac} | ${dut1_to_tg_ip1} +| | ... | ${tg_dut1_ip1} | ${timeout} +| | And Send ICMP echo request and verify answer | ${tg_node} +| | ... | ${tg_to_dut1_if2} | ${dut1_to_tg_if2_mac} +| | ... | ${tg_to_dut1_if2_mac} | ${dut1_to_tg_ip2} +| | ... | ${tg_dut1_ip2} | ${timeout} + +| TC02: TG packets routed to DUT egress interface, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG +| | ... | [Enc] Eth-IPv6-ICMPv6. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. Neighbors are +| | ... | configured for each DUTs ingress/egress ports, and each VRF is +| | ... | configured with just one route. +| | ... | [Ver] Packet is sent from TG->DUT1-if1 to DUT1->DUT2-if1 and from +| | ... | TG->DUT1-if2 to DUT1->DUT2-if2 and checked if arrived. +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if1} +| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} +| | ... | ${dut1_to_dut2_ip1} | ${tg_dut1_ip1} | ${timeout} +| | And Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if2} +| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} +| | ... | ${dut1_to_dut2_ip2} | ${tg_dut1_ip2} | ${timeout} + +| TC03: TG packets routed to DUT2 ingress interface through DUT1, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG +| | ... | [Enc] Eth-IPv6-ICMPv6. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. Neighbors are +| | ... | configured for each DUTs ingress/egress ports, and each VRF is +| | ... | configured with just one route. +| | ... | [Ver] Packet is sent from TG->DUT1-if1 to DUT2->DUT1-if1 and from +| | ... | TG->DUT1-if2 to DUT2->DUT1-if2 and checked if arrived. +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if1} +| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} +| | ... | ${dut2_to_dut1_ip1} | ${tg_dut1_ip1} | ${timeout} +| | And Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if2} +| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} +| | ... | ${dut2_to_dut1_ip2} | ${tg_dut1_ip2} | ${timeout} + +| TC04: TG packets routed to DUT2 egress interface through DUT1, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG +| | ... | [Enc] Eth-IPv6-ICMPv6. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. Neighbors are +| | ... | configured for each DUTs ingress/egress ports, and each VRF is +| | ... | configured with just one route. +| | ... | [Ver] Packet is sent from TG->DUT1-if1 to DUT2->TG-if1 and from +| | ... | TG->DUT1-if2 to DUT2->TG-if2 and checked if arrived. +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if1} +| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} +| | ... | ${dut2_to_tg_ip1} | ${tg_dut1_ip1} | ${timeout} +| | And Send ICMP echo request and verify answer | ${tg_node} | ${tg_to_dut1_if2} +| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} +| | ... | ${dut2_to_tg_ip2} | ${tg_dut1_ip2} | ${timeout} + +| TC05: TG packets routed to TG through DUT1 and DUT2, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG +| | ... | [Enc] Eth-IPv6-ICMPv6. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. Neighbors are +| | ... | configured for each DUTs ingress/egress ports, and each VRF is +| | ... | configured with just one route. +| | ... | [Ver] Packet is sent from TG->DUT1-if1 to TG->DUT2-if1 and from +| | ... | TG->DUT1-if2 to TG->DUT2-if2 and checked if arrived. +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Send packet and verify headers | ${tg_node} | ${tg_dut1_ip1} +| | ... | ${tg_dut2_ip1} | ${tg_to_dut1_if1} | ${tg_to_dut1_if1_mac} +| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut2_if1} | ${dut2_to_tg_if1_mac} +| | ... | ${tg_to_dut2_if1_mac} +| | And Send packet and verify headers | ${tg_node} +| | ... | ${tg_dut1_ip2} | ${tg_dut2_ip2} | ${tg_to_dut1_if2} +| | ... | ${tg_to_dut1_if2_mac} | ${dut1_to_tg_if2_mac} | ${tg_to_dut2_if2} +| | ... | ${dut2_to_tg_if2_mac} | ${tg_to_dut2_if2_mac} + +| TC06: TG packets not routed to DUT ingress interface in different VRF, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG +| | ... | [Enc] Eth-IPv6-ICMPv6. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. Neighbors are +| | ... | configured for each DUTs ingress/egress ports, and each VRF is +| | ... | configured with just one route. +| | ... | [Ver] Packet is sent from TG->DUT1-if1 to DUT1->TG-if2 where it +| | ... | should not arrive. +| | [Tags] | SKIP_PATCH +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP echo request and verify answer +| | ... | ${tg_node} | ${tg_to_dut1_if1} +| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} +| | ... | ${dut1_to_tg_ip2} | ${tg_dut1_ip1} | ${timeout} +| | And Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP echo request and verify answer +| | ... | ${tg_node} | ${tg_to_dut1_if2} +| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} +| | ... | ${dut1_to_tg_ip1} | ${tg_dut1_ip2} | ${timeout} + +| TC07: TG packets not routed to DUT egress interface in different VRF, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG +| | ... | [Enc] Eth-IPv6-ICMPv6. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. Neighbors are +| | ... | configured for each DUTs ingress/egress ports, and each VRF is +| | ... | configured with just one route. +| | ... | [Ver] Packet is sent from TG->DUT1-if1 to DUT1->DUT2-if2 where it +| | ... | should not arrive. +| | [Tags] | SKIP_PATCH +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP echo request and verify answer +| | ... | ${tg_node} | ${tg_to_dut1_if1} +| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} +| | ... | ${dut1_to_dut2_ip2} | ${tg_dut1_ip1} | ${timeout} +| | And Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP echo request and verify answer +| | ... | ${tg_node} | ${tg_to_dut1_if2} +| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} +| | ... | ${dut1_to_dut2_ip1} | ${tg_dut1_ip2} | ${timeout} + + +| TC08: TG packets not routed to DUT2 ingress interface in different VRF through DUT1, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG +| | ... | [Enc] Eth-IPv6-ICMPv6. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. Neighbors are +| | ... | configured for each DUTs ingress/egress ports, and each VRF is +| | ... | configured with just one route. +| | ... | [Ver] Packet is sent from TG->DUT1-if1 to DUT2->DUT1-if2 where it +| | ... | should not arrive. +| | [Tags] | SKIP_PATCH +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP echo request and verify answer +| | ... | ${tg_node} | ${tg_to_dut1_if1} +| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} +| | ... | ${dut2_to_dut1_ip2} | ${tg_dut1_ip1} | ${timeout} +| | And Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP echo request and verify answer +| | ... | ${tg_node} | ${tg_to_dut1_if2} +| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} +| | ... | ${dut2_to_dut1_ip1} | ${tg_dut1_ip2} | ${timeout} + +| TC09: TG packets not routed to DUT2 egress interface in different VRF through DUT1, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG +| | ... | [Enc] Eth-IPv6-ICMPv6. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. Neighbors are +| | ... | configured for each DUTs ingress/egress ports, and each VRF is +| | ... | configured with just one route. +| | ... | [Ver] Packet is sent from TG->DUT1-if1 to DUT2->TG-if2 where it +| | ... | should not arrive. +| | [Tags] | SKIP_PATCH +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP echo request and verify answer +| | ... | ${tg_node} | ${tg_to_dut1_if1} +| | ... | ${dut1_to_tg_if1_mac} | ${tg_to_dut1_if1_mac} +| | ... | ${dut2_to_tg_ip2} | ${tg_dut1_ip1} | ${timeout} +| | And Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP echo request and verify answer +| | ... | ${tg_node} | ${tg_to_dut1_if2} +| | ... | ${dut1_to_tg_if2_mac} | ${tg_to_dut1_if2_mac} +| | ... | ${dut2_to_tg_ip1} | ${tg_dut1_ip2} | ${timeout} + +| TC10: TG packets not routed to TG in different VRF through DUT1 and DUT2, VPP configured with two VRFs +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG. +| | ... | [Enc] Eth-IPv6-ICMPv6. +| | ... | [Cfg] DUT1 and DUT2 are both configured with two fib tables. Each +| | ... | table is assigned to 2 interfaces to separate the traffic. Interfaces +| | ... | are configured with IP addresses from *Variables*. Neighbors are +| | ... | configured for each DUTs ingress/egress ports, and each VRF is +| | ... | configured with just one route. +| | ... | [Ver] Packet is sent from TG->DUT1-if1 to TG->DUT2-if2 where it +| | ... | should not arrive. +| | [Tags] | SKIP_PATCH +| | Given Configure path in double-link 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in double-link 3-node circular topology up +| | When Setup Env - 2xVRF Each Node +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send packet and verify headers | ${tg_node} | ${tg_dut1_ip1} +| | ... | ${tg_dut2_ip2} | ${tg_to_dut1_if1} +| | ... | ${tg_to_dut1_if1_mac} | ${dut1_to_tg_if1_mac} | ${tg_to_dut2_if2} +| | ... | ${dut2_to_tg_if2_mac} | ${tg_to_dut2_if2_mac} +| | And Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send packet and verify headers | ${tg_node} | ${tg_dut1_ip2} +| | ... | ${tg_dut2_ip1} | ${tg_to_dut1_if2} +| | ... | ${tg_to_dut1_if2_mac} | ${dut1_to_tg_if2_mac} | ${tg_to_dut2_if1} +| | ... | ${dut2_to_tg_if1_mac} | ${tg_to_dut2_if1_mac} + +*** Keywords *** +| Setup Env - 2xVRF Each Node +| | [Documentation] +| | ... | Environment is set up with 2 fib tables on each DUT. DUT1-TG-IF1 and \ +| | ... | DUT1-DUT2-IF1 are assigned to FIB1, and DUT1-TG-IF2 and DUT1-DUT2-IF2 +| | ... | are assigned to FIB2 (the same done on DUT2, just opposite). +| | ... | IP addresses and IP Neighbors are subsequently set for interfaces. +| | ... | The last setting is route for each fib table. +| | ... +| | ${dut1_if1_idx}= | Get Interface SW Index +| | ... | ${dut1_node} | ${dut1_to_dut2_if1} +| | ${dut1_if2_idx}= | Get Interface SW Index +| | ... | ${dut1_node} | ${dut1_to_dut2_if2} +| | ${dut2_if1_idx}= | Get Interface SW Index +| | ... | ${dut2_node} | ${dut2_to_dut1_if1} +| | ${dut2_if2_idx}= | Get Interface SW Index +| | ... | ${dut2_node} | ${dut2_to_dut1_if2} + +| | Assign Interface To Fib Table +| | ... | ${dut1_node} | ${dut1_to_dut2_if1} | ${fib_table_1} | ipv6=${TRUE} +| | Assign Interface To Fib Table +| | ... | ${dut1_node} | ${dut1_to_dut2_if2} | ${fib_table_2} | ipv6=${TRUE} +| | Assign Interface To Fib Table +| | ... | ${dut1_node} | ${dut1_to_tg_if1} | ${fib_table_1} | ipv6=${TRUE} +| | Assign Interface To Fib Table +| | ... | ${dut1_node} | ${dut1_to_tg_if2} | ${fib_table_2} | ipv6=${TRUE} + +| | Assign Interface To Fib Table +| | ... | ${dut2_node} | ${dut2_to_dut1_if1} | ${fib_table_1} | ipv6=${TRUE} +| | Assign Interface To Fib Table +| | ... | ${dut2_node} | ${dut2_to_dut1_if2} | ${fib_table_2} | ipv6=${TRUE} +| | Assign Interface To Fib Table +| | ... | ${dut2_node} | ${dut2_to_tg_if1} | ${fib_table_1} | ipv6=${TRUE} +| | Assign Interface To Fib Table +| | ... | ${dut2_node} | ${dut2_to_tg_if2} | ${fib_table_2} | ipv6=${TRUE} + +| | And Set Interface Address +| | ... | ${dut1_node} | ${dut1_to_tg_if1} | ${dut1_to_tg_ip1} | ${ip_prefix} +| | And Set Interface Address +| | ... | ${dut1_node} | ${dut1_to_tg_if2} | ${dut1_to_tg_ip2} | ${ip_prefix} +| | And Set Interface Address +| | ... | ${dut1_node} | ${dut1_to_dut2_if1} +| | ... | ${dut1_to_dut2_ip1} | ${ip_prefix} +| | And Set Interface Address +| | ... | ${dut1_node} | ${dut1_to_dut2_if2} +| | ... | ${dut1_to_dut2_ip2} | ${ip_prefix} + +| | And Set Interface Address +| | ... | ${dut2_node} | ${dut2_to_tg_if1} | ${dut2_to_tg_ip1} | ${ip_prefix} +| | And Set Interface Address +| | ... | ${dut2_node} | ${dut2_to_tg_if2} | ${dut2_to_tg_ip2} | ${ip_prefix} +| | And Set Interface Address +| | ... | ${dut2_node} | ${dut2_to_dut1_if1} +| | ... | ${dut2_to_dut1_ip1} | ${ip_prefix} +| | And Set Interface Address +| | ... | ${dut2_node} | ${dut2_to_dut1_if2} +| | ... | ${dut2_to_dut1_ip2} | ${ip_prefix} + +| | And Add IP Neighbor | ${dut1_node} | ${dut1_to_tg_if1} +| | ... | ${tg_dut1_ip1} | ${tg_to_dut1_if1_mac} +| | And Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2_if1} +| | ... | ${dut2_to_dut1_ip1} | ${dut2_to_dut1_if1_mac} +| | And Add IP Neighbor | ${dut2_node} | ${dut2_to_tg_if1} +| | ... | ${tg_dut2_ip1} | ${tg_to_dut2_if1_mac} +| | And Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1_if1} +| | ... | ${dut1_to_dut2_ip1} | ${dut1_to_dut2_if1_mac} + +| | And Add IP Neighbor | ${dut1_node} | ${dut1_to_tg_if2} +| | ... | ${tg_dut1_ip2} | ${tg_to_dut1_if2_mac} +| | And Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2_if2} +| | ... | ${dut2_to_dut1_ip2} | ${dut2_to_dut1_if2_mac} +| | And Add IP Neighbor | ${dut2_node} | ${dut2_to_tg_if2} +| | ... | ${tg_dut2_ip2} | ${tg_to_dut2_if2_mac} +| | And Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1_if2} +| | ... | ${dut1_to_dut2_ip2} | ${dut1_to_dut2_if2_mac} + +| | And Vpp Route Add | ${dut1_node} | ${tg_dut2_ip1} | ${ip_prefix} +| | ... | ${dut2_to_dut1_ip1} | ${dut1_to_dut2_if1} | vrf=${fib_table_1} +| | And Vpp Route Add | ${dut2_node} | ${tg_dut1_ip1} | ${ip_prefix} +| | ... | ${dut1_to_dut2_ip1} | ${dut2_to_dut1_if1} | vrf=${fib_table_1} + +| | And Vpp Route Add | ${dut1_node} | ${tg_dut2_ip2} | ${ip_prefix} +| | ... | ${dut2_to_dut1_ip2} | ${dut1_to_dut2_if2} | vrf=${fib_table_2} +| | And Vpp Route Add | ${dut2_node} | ${tg_dut1_ip2} | ${ip_prefix} +| | ... | ${dut1_to_dut2_ip2} | ${dut2_to_dut1_if2} | vrf=${fib_table_2} + +| | Vpp All RA Suppress Link Layer | ${nodes} diff --git a/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lisp-l2bdbasemaclrn-func.robot b/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lisp-l2bdbasemaclrn-func.robot new file mode 100644 index 0000000000..6927dacde4 --- /dev/null +++ b/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lisp-l2bdbasemaclrn-func.robot @@ -0,0 +1,96 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.LispUtil +| Library | resources.libraries.python.L2Util +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/overlay/l2lisp.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/l2/l2_ipv6.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP +| ... +| Test Setup | Set up functional test +| ... +| Test Teardown | Tear down functional test +| ... +| Documentation | *l2-lispgpe-ip6 encapsulation test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IP6-ICMPv6-LISPGpe-IP6 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge\ +| ... | domains and neighbors. LISPoIPv6 tunnel is configured between\ +| ... | DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in\ +| ... | both directions by TG on links to DUT1 and DUT2; on receive\ +| ... | TG verifies packets for correctness and their IPv6 src-addr, dst-addr\ +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Test Cases *** +| TC01: Route IPv6 packet through LISP with Bridge Domain setup. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IP6-ICMPv6-LISPGpe-IP6 +| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2. Also\ +| | ... | configure BD and assign it to LISP VNI. +| | ... | [Ver] Make TG send ICMPv6 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP tunnel between them; verify IPv6, Ether headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830. +| | ... +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Configure IP addresses on interfaces +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} | ${prefix6} +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} | ${prefix6} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} | ${prefix6} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} | ${prefix6} +| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} +| | ... | ${tg_to_dut2_mac} +| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} +| | ... | ${tg_to_dut1_mac} +| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_dut1_mac} +| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6} +| | ... | ${dut1_to_dut2_mac} +| | And Vpp All RA Suppress Link Layer | ${nodes} +| | When Create L2 BD | ${dut1_node} | ${vpp_bd_id} +| | And Add Interface To L2 BD | ${dut1_node} | ${dut1_to_tg} | ${vpp_bd_id} +| | And Create L2 BD | ${dut2_node} | ${vpp_bd_id} +| | And Add Interface To L2 BD | ${dut2_node} | ${dut2_to_tg} | ${vpp_bd_id} +| | And Configure L2 LISP on DUT | ${dut1_node} +| | ... | ${dut1_to_dut2_ip6_static_adjacency} +| | ... | ${lisp_dut_settings} +| | And Configure L2 LISP on DUT | ${dut2_node} +| | ... | ${dut2_to_dut1_ip6_static_adjacency} +| | ... | ${lisp_dut_settings} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} +| | ... | ${tg_to_dut1} | ${tg_if1_mac} | ${tg_if2_mac} +| | ... | ${tg_to_dut2} | ${tg_if1_mac} | ${tg_if2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} +| | ... | ${tg_to_dut2} | ${tg_if2_mac} | ${tg_if1_mac} +| | ... | ${tg_to_dut1} | ${tg_if2_mac} | ${tg_if1_mac} diff --git a/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip4base-func.robot b/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip4base-func.robot new file mode 100644 index 0000000000..08fc5c76c6 --- /dev/null +++ b/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip4base-func.robot @@ -0,0 +1,108 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.Trace +# import additional Lisp settings from resource file +| Variables | resources/test_data/lisp/static_adjacency/lisp_static_adjacency.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO +| ... | VM_ENV | HW_ENV +| ... +| Test Setup | Set up functional test +| ... +| Test Teardown | Tear down functional test +| ... +| Documentation | *LISP static adjacency test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv4-ICMPv4 on\ +| ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn for IPv4 routing over LISPoIPv6\ +| ... | tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ +| ... | routing and static routes. LISPoIPv6 tunnel is configured\ +| ... | between DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets\ +| ... | are sent in both directions by TG on links to DUT1 and DUT2; on receive\ +| ... | TG verifies packets for correctness and their IPv4 src-addr,\ +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISPoIPv6 tunnel +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv6-LISP-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on\ +| | ... | TG-DUTn. +| | ... | [Cfg] On DUT1 and DUT2 configure IPv6 LISP static adjacencies. +| | ... | [Ver] Make TG send ICMPv4 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP tunnel between them; verify IPv4 headers on received\ +| | ... | packets are correct. +| | ... | [Cfg2] Reconf LISP. +| | ... | [Ver2] Verify packets are received again via LISP tunnel. +| | ... | [Ref] RFC6830. +| | ... +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Configure IP addresses on interfaces +| | ... | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${dut1_to_dut2_ip4o6} | ${dut_prefix4o6} +| | ... | ${dut1_node} | ${dut1_to_tg} +| | ... | ${dut1_to_tg_ip4o6} | ${tg_prefix4o6} +| | ... | ${dut2_node} | ${dut2_to_dut1} +| | ... | ${dut2_to_dut1_ip4o6} | ${dut_prefix4o6} +| | ... | ${dut2_node} | ${dut2_to_tg} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} +| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4o6} +| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4o6} +| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4o6} +| | ... | ${tg_to_dut2_mac} +| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4o6} +| | ... | ${tg_to_dut1_mac} +| | And Vpp All RA Suppress Link Layer | ${nodes} +| | When Configure LISP topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip4o6} | ${tg2_ip4o6} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip4o6} | ${tg1_ip4o6} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} +| | When Change LISP Configuration | ${dut1_node} | ${dut2_node} +| | ... | ${dut1_to_dut2} | ${dut2_to_dut1} | ${dut1_to_dut2_mac} +| | ... | ${dut2_to_dut1_mac} | ${dut1_to_dut2_ip4o6} +| | ... | ${dut2_to_dut1_ip4o6_reconf} | ${dut_prefix4o6} +| | ... | ${dut1_ip4o6_static_adjacency} +| | ... | ${dut1_ip4o6_static_adjacency_reconf} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip4o6} | ${tg2_ip4o6} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip4o6} | ${tg1_ip4o6} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} diff --git a/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip6base-func.robot b/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip6base-func.robot new file mode 100644 index 0000000000..43f19740e3 --- /dev/null +++ b/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip6base-func.robot @@ -0,0 +1,107 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.VPPUtil +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/vrf.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipv6.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP +| ... +| Test Setup | Run Keywords | Set up functional test +| ... | AND | Vpp All Ra Suppress Link Layer | ${nodes} +| ... +| Test Teardown | Tear down LISP functional test +| ... +| Documentation | *ip6-lispgpe-ip6 encapsulation test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv6-ICMPv6 on DUT1-DUT2,\ +| ... | Eth-IPv6-ICMPv6 on TG-DUTn for IPv6 routing over LISPoIPv6 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ +| ... | routing and static routes. LISPoIPv6 tunnel is configured between\ +| ... | DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in\ +| ... | both directions by TG on links to DUT1 and DUT2; on receive\ +| ... | TG verifies packets for correctness and their IPv6 src-addr, dst-addr\ +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using physical interfaces +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv6-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on\ +| | ... | TG-DUTn. +| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2. +| | ... | [Ver] Case: ip6-lispgpe-ip6 - phy2lisp +| | ... | Make TG send ICMPv6 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830. +| | ... +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Vpp Set If IPv6 Addr +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} | ${prefix6} +| | And Vpp Set If IPv6 Addr +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} | ${prefix6} +| | And Vpp Set If IPv6 Addr +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} | ${prefix6} +| | And Vpp Set If IPv6 Addr +| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} | ${prefix6} +| | And Add IP Neighbors +| | And Vpp All RA Suppress Link Layer | ${nodes} +| | When Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_to_dut2_ip6_static_adjacency} +| | ... | ${dut2_to_dut1_ip6_static_adjacency} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Add IP Neighbors +| | [Documentation] +| | ... | Add IP neighbors to physical interfaces on DUTs. +| | ... +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} +| | ... | ${tg_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} +| | ... | ${tg_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6} +| | ... | ${dut1_to_dut2_mac} diff --git a/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip6basevrf-func.robot b/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip6basevrf-func.robot new file mode 100644 index 0000000000..5d3d969426 --- /dev/null +++ b/tests/vpp/func/ip6_tunnels/lisp/eth2p-ethip6lispgpe-ip6basevrf-func.robot @@ -0,0 +1,112 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.VPPUtil +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/vrf.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipv6.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP +| ... +| Test Setup | Run Keywords | Set up functional test +| ... | AND | Vpp All Ra Suppress Link Layer | ${nodes} +| ... +| Test Teardown | Tear down LISP functional test +| ... +| Documentation | *ip6-lispgpe-ip6 encapsulation test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv6-ICMPv6 on DUT1-DUT2,\ +| ... | Eth-IPv6-ICMPv6 on TG-DUTn for IPv6 routing over LISPoIPv6 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ +| ... | routing and static routes. LISPoIPv6 tunnel is configured between\ +| ... | DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in\ +| ... | both directions by TG on links to DUT1 and DUT2; on receive\ +| ... | TG verifies packets for correctness and their IPv6 src-addr, dst-addr\ +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using physical interfaces and VRF is enabled +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv6-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on\ +| | ... | TG-DUTn. +| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2. +| | ... | [Ver] Case: ip6-lispgpe-ip6 - vrf, phy2lisp +| | ... | Make TG send ICMPv6 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830. +| | ... +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Assign Interface To Fib Table | ${dut1_node} +| | ... | ${dut1_to_tg} | ${fib_table_1} | ipv6=${TRUE} +| | And Assign Interface To Fib Table | ${dut2_node} +| | ... | ${dut2_to_tg} | ${fib_table_1} | ipv6=${TRUE} +| | And Vpp Set If IPv6 Addr +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} | ${prefix6} +| | And Vpp Set If IPv6 Addr +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} | ${prefix6} +| | And Vpp Set If IPv6 Addr +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} | ${prefix6} +| | And Vpp Set If IPv6 Addr +| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} | ${prefix6} +| | And Add IP Neighbors +| | And Vpp All RA Suppress Link Layer | ${nodes} +| | When Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_to_dut2_ip6_static_adjacency} +| | ... | ${dut2_to_dut1_ip6_static_adjacency} +| | ... | ${dut1_dut2_vni} | ${fib_table_1} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dut1_to_tg_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Add IP Neighbors +| | [Documentation] +| | ... | Add IP neighbors to physical interfaces on DUTs. +| | ... +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} +| | ... | ${tg_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} +| | ... | ${tg_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6} +| | ... | ${dut1_to_dut2_mac} diff --git a/tests/vpp/func/ip6_tunnels/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot b/tests/vpp/func/ip6_tunnels/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot new file mode 100644 index 0000000000..165da28bd2 --- /dev/null +++ b/tests/vpp/func/ip6_tunnels/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot @@ -0,0 +1,80 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/overlay/vxlan.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/vm/double_qemu_setup.robot +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPv6Setup +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *Bridge-domain with VXLAN test cases - IPv6* +| ... +| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on +| ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUTn for L2 switching of IPv6. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | bridge-domain (L2BD) switching combined with MAC learning enabled; +| ... | VXLAN tunnels are configured between L2BDs on DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent +| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG +| ... | verifies packets for correctness and their IPv6 src-addr, dst-addr +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC7348. + +*** Variables *** +| ${vni_1}= | 23 + +| ${bd_id1}= | 10 + +| ${ip6_addr1}= | 3ffe:64::1 +| ${ip6_addr2}= | 3ffe:64::2 +| ${ip6_prefix}= | 64 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv6 tunnels switch ICMPv6 between TG links +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG.[Enc] Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on \ +| | ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUTn. [Cfg] On DUT1 and DUT2 +| | ... | configure L2 bridge-domain (MAC learning enabled), each with one +| | ... | interface to TG and one VXLAN tunnel interface towards the other +| | ... | DUT. [Ver] Make TG send ICMPv6 Echo Req between two of its +| | ... | interfaces to be switched by DUT1 and DUT2; verify all packets +| | ... | are received. [Ref] RFC7348. +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr1} +| | ... | ${ip6_prefix} +| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr2} +| | ... | ${ip6_prefix} +| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr2} +| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr1} +| | And Vpp All RA Suppress Link Layer | ${nodes} +| | ${dut1s_vxlan}= | When Create VXLAN interface | ${dut1_node} | ${vni_1} +| | | ... | ${ip6_addr1} | ${ip6_addr2} +| | And Add interfaces to L2BD | ${dut1_node} | ${bd_id1} +| | ... | ${dut1_to_tg} | ${dut1s_vxlan} +| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${vni_1} +| | | ... | ${ip6_addr2} | ${ip6_addr1} +| | And Add interfaces to L2BD | ${dut2_node} | ${bd_id1} +| | ... | ${dut2_to_tg} | ${dut2s_vxlan} +| | Then Send ICMPv6 bidirectionally and verify received packets +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/vpp/func/ip6_tunnels/vxlan/eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot b/tests/vpp/func/ip6_tunnels/vxlan/eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot new file mode 100644 index 0000000000..115883f1b1 --- /dev/null +++ b/tests/vpp/func/ip6_tunnels/vxlan/eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot @@ -0,0 +1,203 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/overlay/vxlan.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/vm/double_qemu_setup.robot +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPv6Setup +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2BD with SHG combined with VXLAN test cases - IPv6* +| ... +| ... | *[Top] Network topologies:* TG=DUT1=DUT2=TG 3-node circular topology +| ... | with double parallel links. +| ... | *[Enc] Packet encapsulations:* th-IPv6-VXLAN-Eth-IPv6-ICMPv6 on +| ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUTn for L2 switching of IPv6. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | bridge-domain (L2BD) switching combined with MAC learning enabled +| ... | and Split Horizon Groups (SHG); VXLAN tunnels are configured +| ... | between L2BDs on DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent +| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG +| ... | verifies packets for correctness and their IPv6 src-addr, dst-addr +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC7348. + +*** Variables *** +| ${vni_1}= | 23 +| ${vni_2}= | 35 + +| ${bd_id1}= | 10 +| ${bd_id2}= | 20 +| ${bd_id3}= | 30 +| ${shg1}= | 1 +| ${shg2}= | 2 + +| ${ip6_addr1}= | 3ffe:64::1 +| ${ip6_addr2}= | 3ffe:64::2 +| ${ip6_prefix}= | 64 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv6 tunnels in SHG switch ICMPv6 between TG links +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG. [Enc] Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on \ +| | ... | DUT1-DUT2; Eth-IPv6-ICMPv6 on TG-DUTn. [Cfg] On DUT1 configure L2 +| | ... | bridge-domain (MAC learning enabled) with two untagged interfaces +| | ... | to TG and two VXLAN interfaces towards the DUT2 and put both VXLAN +| | ... | interfaces into the same Split-Horizon-Group (SHG). On DUT2 configure +| | ... | two L2 bridge-domain (MAC learning enabled), each with one untagged +| | ... | interface to TG and one VXLAN interface towards the DUT1. [Ver] Make +| | ... | TG send ICMPv6 Echo Reqs between all four of its interfaces to be +| | ... | switched by DUT1 and DUT2; verify packets are not switched between +| | ... | TG interfaces connected to DUT2 that are isolated by SHG on DUT1. +| | ... | [Ref] RFC7348. +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO +| | Given Configure path for 3-node BD-SHG test | ${nodes['TG']} +| | ... | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} +| | And Set interfaces in 3-node BD-SHG test up +| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr1} +| | ... | ${ip6_prefix} +| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr2} +| | ... | ${ip6_prefix} +| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr2} +| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr1} +| | And Vpp All RA Suppress Link Layer | ${nodes} +| | ${dut1s_vxlan1}= | When Create VXLAN interface | ${dut1_node} | ${vni_1} +| | | ... | ${ip6_addr1} | ${ip6_addr2} +| | ${dut1s_vxlan2}= | And Create VXLAN interface | ${dut1_node} | ${vni_2} +| | | ... | ${ip6_addr1} | ${ip6_addr2} +| | ${dut2s_vxlan1}= | And Create VXLAN interface | ${dut2_node} | ${vni_1} +| | | ... | ${ip6_addr2} | ${ip6_addr1} +| | ${dut2s_vxlan2}= | And Create VXLAN interface | ${dut2_node} | ${vni_2} +| | | ... | ${ip6_addr2} | ${ip6_addr1} +| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan1} | up +| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan2} | up +| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan1} | up +| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan2} | up +| | And Vpp Node Interfaces Ready Wait | ${dut1_node} +| | And Vpp Node Interfaces Ready Wait | ${dut2_node} +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if1} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1s_vxlan1} +| | ... | ${bd_id1} | ${shg1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1s_vxlan2} +| | ... | ${bd_id1} | ${shg1} +| | And Create bridge domain | ${dut2_node} | ${bd_id2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if1} +| | ... | ${bd_id2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2s_vxlan1} +| | ... | ${bd_id2} +| | And Create bridge domain | ${dut2_node} | ${bd_id3} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if2} +| | ... | ${bd_id3} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2s_vxlan2} +| | ... | ${bd_id3} +| | Then Send ICMPv6 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if1} +| | ... | ${tg_to_dut2_if1} +| | And Send ICMPv6 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if1} +| | ... | ${tg_to_dut2_if2} +| | And Send ICMPv6 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if2} +| | ... | ${tg_to_dut2_if1} +| | And Send ICMPv6 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if2} +| | ... | ${tg_to_dut2_if2} +| | And Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMPv6 bidirectionally and verify received packets +| | | ... | ${tg_node} | ${tg_to_dut2_if1} +| | | ... | ${tg_to_dut2_if2} + +| TC02: DUT1 and DUT2 with L2BD and VXLANoIPv6 tunnels in different SHGs switch ICMPv6 between TG links +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG.[Enc] Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on \ +| | ... | DUT1-DUT2; Eth-IPv6-ICMPv6 on TG-DUTn. [Cfg] On DUT1 configure L2 +| | ... | bridge-domain (MAC learning enabled) with two untagged interfaces +| | ... | to TG and two VXLAN interfaces towards the DUT2 and put both VXLAN +| | ... | interfaces into the different Split-Horizon-Group (SHGs). On DUT2 +| | ... | configure two L2 bridge-domain (MAC learning enabled), each with one +| | ... | untagged interface to TG and one VXLAN interface towards the DUT1. +| | ... | [Ver] Make TG send ICMPv6 Echo Req between all four of its interfaces +| | ... | to be switched by DUT1 and DUT2; verify packets are switched between +| | ... | all TG interfaces. [Ref] RFC7348. +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO +| | Given Configure path for 3-node BD-SHG test | ${nodes['TG']} +| | ... | ${nodes['DUT1']} +| | ... | ${nodes['DUT2']} +| | And Set interfaces in 3-node BD-SHG test up +| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr1} +| | ... | ${ip6_prefix} +| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr2} +| | ... | ${ip6_prefix} +| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr2} +| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr1} +| | And Vpp All RA Suppress Link Layer | ${nodes} +| | ${dut1s_vxlan1}= | When Create VXLAN interface | ${dut1_node} | ${vni_1} +| | | ... | ${ip6_addr1} | ${ip6_addr2} +| | ${dut1s_vxlan2}= | And Create VXLAN interface | ${dut1_node} | ${vni_2} +| | | ... | ${ip6_addr1} | ${ip6_addr2} +| | ${dut2s_vxlan1}= | And Create VXLAN interface | ${dut2_node} | ${vni_1} +| | | ... | ${ip6_addr2} | ${ip6_addr1} +| | ${dut2s_vxlan2}= | And Create VXLAN interface | ${dut2_node} | ${vni_2} +| | | ... | ${ip6_addr2} | ${ip6_addr1} +| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan1} | up +| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan2} | up +| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan1} | up +| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan2} | up +| | And Vpp Node Interfaces Ready Wait | ${dut1_node} +| | And Vpp Node Interfaces Ready Wait | ${dut2_node} +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if1} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1s_vxlan1} +| | ... | ${bd_id1} | ${shg1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1s_vxlan2} +| | ... | ${bd_id1} | ${shg2} +| | And Create bridge domain | ${dut2_node} | ${bd_id2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if1} +| | ... | ${bd_id2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2s_vxlan1} +| | ... | ${bd_id2} +| | And Create bridge domain | ${dut2_node} | ${bd_id3} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if2} +| | ... | ${bd_id3} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2s_vxlan2} +| | ... | ${bd_id3} +| | Then Send ICMPv6 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if1} +| | ... | ${tg_to_dut2_if1} +| | And Send ICMPv6 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if1} +| | ... | ${tg_to_dut2_if2} +| | And Send ICMPv6 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if2} +| | ... | ${tg_to_dut2_if1} +| | And Send ICMPv6 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if2} +| | ... | ${tg_to_dut2_if2} +| | And Send ICMPv6 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut2_if1} +| | ... | ${tg_to_dut2_if2} diff --git a/tests/vpp/func/l2bd/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot b/tests/vpp/func/l2bd/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot new file mode 100644 index 0000000000..38f370ef34 --- /dev/null +++ b/tests/vpp/func/l2bd/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot @@ -0,0 +1,221 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2BD with VLAN tag rewrite test cases - transalte-2-1* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-dot1ad-IPv4-ICMPv4 or +| ... | Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, Eth-dot1q-IPv4-ICMPv4 or +| ... | Eth-dot1q-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv4-ICMPv4 or Eth-IPv6-ICMPv6 +| ... | on TG-DUT2 for L2 switching of IPv4/IPv6. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with bridge domain (L2BD) +| ... | switching combined with MAC learning enabled and added VLAN +| ... | sub-interface with VLAN tag rewrite translate-2-1 method of interface +| ... | towards TG and interface towards DUT2. DUT2 is configured with L2 +| ... | bridge domain (L2BD) switching between VLAN sub-interface with VLAN tag +| ... | rewrite pop-1 method of interface towards DUT1 and interface towards TG. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are +| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; +| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. + +*** Variables *** +| ${bd_id1}= | 1 + +| ${subid}= | 10 + +| ${outer_vlan_id1}= | 110 +| ${outer_vlan_id2}= | 120 +| ${outer_vlan_wrong}= | 150 + +| ${inner_vlan_id1}= | 210 + +| ${src_ip6}= | 3ffe:63::1 +| ${dst_ip6}= | 3ffe:63::2 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2BD and VLAN translate-2-1 (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1, \ +| | ... | Eth-dot1q-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite +| | ... | translate-2-1 method; on DUT2 configure L2 bridge domain (L2BD) with +| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv4 Echo Req +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1ad +| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} + +| TC02: DUT1 and DUT2 with L2BD and VLAN translate-2-1 with wrong tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1, \ +| | ... | Eth-dot1q-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite +| | ... | translate-2-1 method to set tag different from tag set on VLAN +| | ... | sub-interface of DUT2; on DUT2 configure L2 bridge domain (L2BD) with +| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv4 Echo Req +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} +| | ... | vlan2=${inner_vlan_id1} + + +| TC03: DUT1 and DUT2 with L2BD and VLAN translate-2-1 (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, \ +| | ... | Eth-dot1q-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite +| | ... | translate-2-1 method; on DUT2 configure L2 bridge domain (L2BD) with +| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv6 Echo Req +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip6} +| | ... | dst_ip=${dst_ip6} | encaps=Dot1ad | vlan1=${outer_vlan_id1} +| | ... | vlan2=${inner_vlan_id1} + +| TC04: DUT1 and DUT2 with L2BD and VLAN translate-2-1 with wrong tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, \ +| | ... | Eth-dot1q-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite +| | ... | translate-2-1 method to set tag different from tag set on VLAN +| | ... | sub-interface of DUT2; on DUT2 configure L2 bridge domain (L2BD) with +| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv6 Echo Req +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1ad +| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} diff --git a/tests/vpp/func/l2bd/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot b/tests/vpp/func/l2bd/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot new file mode 100644 index 0000000000..06a4794086 --- /dev/null +++ b/tests/vpp/func/l2bd/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot @@ -0,0 +1,405 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2BD with VLAN tag rewrite test cases - translate-2-2* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-dot1ad-IPv4-ICMPv4 or +| ... | Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and DUT1-DUT2, Eth-IPv4-ICMPv4 or +| ... | Eth-IPv6-ICMPv6 on TG-DUT2 for L2 switching of IPv4/IPv6. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with bridge domain (L2BD) +| ... | switching combined with MAC learning enabled and added VLAN +| ... | sub-interface with VLAN tag rewrite translate-2-2 method of interface +| ... | towards TG and interface towards DUT2. DUT2 is configured with L2 +| ... | bridge domain (L2BD) switching between VLAN sub-interface with VLAN tag +| ... | rewrite pop-2 method of interface towards DUT1 and interface towards TG. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are +| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; +| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. + +*** Variables *** +| ${bd_id1}= | 1 + +| ${subid}= | 10 + +| ${outer_vlan_id1}= | 110 +| ${outer_vlan_id2}= | 120 +| ${outer_vlan_wrong}= | 150 + +| ${inner_vlan_id1}= | 210 +| ${inner_vlan_id2}= | 220 +| ${inner_vlan_wrong}= | 250 + +| ${src_ip6}= | 3ffe:63::1 +| ${dst_ip6}= | 3ffe:63::2 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2BD and VLAN translate-2-2 switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method; +| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG and +| | ... | one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-2 +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; verify +| | ... | that packet is received. [Ref] IEEE 802.1ad +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1ad +| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} + +| TC02: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong inner tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to +| | ... | set inner tag different from inner tag set on Dot1ad sub-interface of +| | ... | DUT2; on DUT2 configure L2 bridge domain (L2BD) with one interface to +| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite +| | ... | pop-2 tagged with Dot1ad tags from one of its interfaces to another +| | ... | one method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; +| | ... | verify that packet is not received. [Ref] IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} +| | ... | vlan2=${inner_vlan_id1} + +| TC03: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong outer tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to +| | ... | set outer tag different from outer tag set on Dot1ad sub-interface of +| | ... | DUT2; on DUT2 configure L2 bridge domain (L2BD) with one interface to +| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite +| | ... | pop-2 tagged with Dot1ad tags from one of its interfaces to another +| | ... | one method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; +| | ... | verify that packet is not received. [Ref] IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} +| | ... | vlan2=${inner_vlan_id1} + +| TC04: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong outer and inner tags used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to +| | ... | set tags different from tags set on Dot1ad sub-interface of DUT2; +| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG +| | ... | and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-2 +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; verify +| | ... | that packet is not received. [Ref] IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} +| | ... | vlan2=${inner_vlan_id1} + +| TC05: DUT1 and DUT2 with L2BD and VLAN translate-2-2 switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method; +| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG and +| | ... | one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1 +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; verify +| | ... | that packet is received. [Ref] IEEE 802.1ad +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip6} +| | ... | dst_ip=${dst_ip6} | encaps=Dot1ad | vlan1=${outer_vlan_id1} +| | ... | vlan2=${inner_vlan_id1} + +| TC06: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong inner tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to +| | ... | set inner tag different from inner tag set on Dot1ad sub-interface of +| | ... | DUT2; on DUT2 configure L2 bridge domain (L2BD) with one interface to +| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite +| | ... | pop-1 tagged with Dot1ad tags from one of its interfaces to another +| | ... | one method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; +| | ... | verify that packet is not received. [Ref] IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1ad +| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} + +| TC07: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong outer tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to +| | ... | set outer tag different from outer tag set on Dot1ad sub-interface of +| | ... | DUT2; on DUT2 configure L2 bridge domain (L2BD) with one interface to +| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite +| | ... | pop-1 tagged with Dot1ad tags from one of its interfaces to another +| | ... | one method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; +| | ... | verify that packet is not received. [Ref] IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1ad +| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} + +| TC08: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong outer and inner tags used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to +| | ... | set tags different from tags set on Dot1ad sub-interface of DUT2; +| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG +| | ... | and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1 +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; verify +| | ... | that packet is not received. [Ref] IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1ad +| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} diff --git a/tests/vpp/func/l2bd/eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot b/tests/vpp/func/l2bd/eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot new file mode 100644 index 0000000000..e71e75f563 --- /dev/null +++ b/tests/vpp/func/l2bd/eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot @@ -0,0 +1,394 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2BD with VLAN tag rewrite test cases - translate-1-2* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-dot1q-IPv4-ICMPv4 or +| ... | Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, Eth-dot1ad-IPv4-ICMPv4 or +| ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv4-ICMPv4 or Eth-IPv6-ICMPv6 +| ... | on TG-DUT2 for L2 switching of IPv4/IPv6. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with bridge domain (L2BD) +| ... | switching combined with MAC learning enabled and added VLAN +| ... | sub-interface with VLAN tag rewrite translate-1-2 method of interface +| ... | towards TG and interface towards DUT2. DUT2 is configured with L2 +| ... | bridge domain (L2BD) switching between VLAN sub-interface with VLAN tag +| ... | rewrite pop-2 method of interface towards DUT1 and interface towards TG. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are +| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; +| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. + +*** Variables *** +| ${bd_id1}= | 1 + +| ${subid}= | 10 + +| ${outer_vlan_id1}= | 110 +| ${outer_vlan_id2}= | 120 +| ${outer_vlan_wrong}= | 150 + +| ${inner_vlan_id1}= | 210 +| ${inner_vlan_id2}= | 220 +| ${inner_vlan_wrong}= | 250 + +| ${src_ip6}= | 3ffe:63::1 +| ${dst_ip6}= | 3ffe:63::2 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2BD and VLAN translate-1-2 (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method; on DUT2 configure L2 bridge domain (L2BD) with +| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv4 Echo Req +| | ... | tagged with one Dot1q tag from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id1} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1q +| | ... | vlan1=${outer_vlan_id1} + +| TC02: DUT1 and DUT2 with L2BD and VLAN translate-1-2 with wrong inner tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method to set inner tag different from inner tag set on +| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 bridge domain with +| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv4 Echo Req +| | ... | tagged with one Dot1q tag from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} + +| TC03: DUT1 and DUT2 with L2BD and VLAN translate-1-2 with wrong outer tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method to set outer tag different from outer tag set on +| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 bridge domain with +| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv4 Echo Req +| | ... | tagged with one Dot1q tag from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id1} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} + +| TC04: DUT1 and DUT2 with L2BD and VLAN translate-1-2 with wrong outer and inner tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method to set outer and inner tags different from tags +| | ... | set on Dot1ad sub-interface of DUT2; on DUT2 configure L2 +| | ... | bridge domain with one interface to TG and one Dot1ad sub-interface +| | ... | towards DUT1 with VLAN tag rewrite pop-2 method. [Ver] Make TG send +| | ... | ICMPv4 Echo Req tagged with one Dot1q tag from one of its interfaces +| | ... | to another one via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} + +| TC05: DUT1 and DUT2 with L2BD and VLAN translate-1-2 (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method; on DUT2 configure L2 bridge domain (L2BD) with +| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv6 Echo Req +| | ... | tagged with one Dot1q tag from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip6} +| | ... | dst_ip=${dst_ip6} | encaps=Dot1q | vlan1=${outer_vlan_id1} + +| TC06: DUT1 and DUT2 with L2BD and VLAN translate-1-2 with wrong inner tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method to set inner tag different from inner tag set on +| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 bridge domain with +| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv6 Echo Req +| | ... | tagged with one Dot1q tag from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1q +| | ... | vlan1=${outer_vlan_id1} + +| TC07: DUT1 and DUT2 with L2BD and VLAN translate-1-2 with wrong outer tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method to set outer tag different from outer tag set on +| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 bridge domain with +| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv6 Echo Req +| | ... | tagged with one Dot1q tag from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1q +| | ... | vlan1=${outer_vlan_id1} + +| TC08: DUT1 and DUT2 with L2BD and VLAN translate-1-2 with wrong outer and inner tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method to set outer and inner tags different from tags +| | ... | set on Dot1ad sub-interface of DUT2; on DUT2 configure L2 +| | ... | bridge domain with one interface to TG and one Dot1ad sub-interface +| | ... | towards DUT1 with VLAN tag rewrite pop-2 method. [Ver] Make TG send +| | ... | ICMPv6 Echo Req tagged with one Dot1q tag from one of its interfaces +| | ... | to another one via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1q +| | ... | vlan1=${outer_vlan_id1} diff --git a/tests/vpp/func/l2bd/eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot b/tests/vpp/func/l2bd/eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot new file mode 100644 index 0000000000..aba84789b1 --- /dev/null +++ b/tests/vpp/func/l2bd/eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot @@ -0,0 +1,206 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2BD with VLAN tag rewrite test cases - translate-1-1* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-dot1q-IPv4-ICMPv4 or +| ... | Eth-dot1q-IPv6-ICMPv6 on TG-DUT1 and DUT1-DUT2, Eth-IPv4-ICMPv4 or +| ... | Eth-IPv6-ICMPv6 on TG-DUT2 for L2 switching of IPv4/IPv6. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with bridge domain (L2BD) +| ... | switching combined with MAC learning enabled and added VLAN +| ... | sub-interface with VLAN tag rewrite translate-1-1 method of interface +| ... | towards TG and interface towards DUT2. DUT2 is configured with L2 +| ... | bridge domain (L2BD) switching between VLAN sub-interface with VLAN tag +| ... | rewrite pop-1 method of interface towards DUT1 and interface towards TG. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are +| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; +| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. + +*** Variables *** +| ${bd_id1}= | 1 + +| ${subid}= | 10 + +| ${outer_vlan_id1}= | 110 +| ${outer_vlan_id2}= | 120 +| ${outer_vlan_wrong}= | 150 + +| ${inner_vlan_id1}= | 210 +| ${inner_vlan_wrong}= | 250 + +| ${src_ip6}= | 3ffe:63::1 +| ${dst_ip6}= | 3ffe:63::2 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2BD and VLAN translate-1-1 (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1 and \ +| | ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain with one interface to DUT2 and one VLAN +| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method; +| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG +| | ... | and one VLAN sub-interface towards DUT1 with VLAN tag rewrite pop-1 +| | ... | method. [Ver] Make TG send ICMPv4 Echo Req tagged with one Dot1q tag +| | ... | from one of its interfaces to another one via DUT1 and DUT2; verify +| | ... | that packet is received. [Ref] IEEE 802.1q +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1q +| | ... | vlan1=${outer_vlan_id1} + +| TC02: DUT1 and DUT2 with L2BD and VLAN translate-1-1 with wrong tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1 and \ +| | ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one VLAN +| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method +| | ... | to set tag different from tag set on VLAN sub-interface of DUT2; +| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG +| | ... | and one VLAN sub-interface towards DUT1 with VLAN tag rewrite pop-1 +| | ... | method. [Ver] Make TG send ICMPv4 Echo Req tagged with one Dot1q tag +| | ... | from one of its interfaces to another one via DUT1 and DUT2; verify +| | ... | that packet is not received. [Ref] IEEE 802.1q +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} + +| TC03: DUT1 and DUT2 with L2BD and VLAN translate-1-1 (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1 and \ +| | ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one VLAN +| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method; +| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG +| | ... | and one VLAN sub-interface towards DUT1 with VLAN tag rewrite pop-1 +| | ... | method. [Ver] Make TG send ICMPv6 Echo Req tagged with one Dot1q tag +| | ... | from one of its interfaces to another one via DUT1 and DUT2; verify +| | ... | that packet is received. [Ref] IEEE 802.1q +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip6} +| | ... | dst_ip=${dst_ip6} | encaps=Dot1q | vlan1=${outer_vlan_id1} + +| TC04: DUT1 and DUT2 with L2BD and VLAN translate-1-1 with wrong tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1 and \ +| | ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one VLAN +| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method +| | ... | to set tag different from tag set on VLAN sub-interface of DUT2; +| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG +| | ... | and one VLAN sub-interface towards DUT1 with VLAN tag rewrite pop-1 +| | ... | method. [Ver] Make TG send ICMPv6 Echo Req tagged with one Dot1q tag +| | ... | from one of its interfaces to another one via DUT1 and DUT2; verify +| | ... | that packet is not received. [Ref] IEEE 802.1q +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1q +| | ... | vlan1=${outer_vlan_id1} diff --git a/tests/vpp/func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot b/tests/vpp/func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot new file mode 100644 index 0000000000..43e092dae2 --- /dev/null +++ b/tests/vpp/func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot @@ -0,0 +1,91 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2 bridge-domain test cases* +| ... +| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links +| ... | between nodes; TG-DUT1-DUT2-TG 3-node circular topology with +| ... | single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of +| ... | IPv4; Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply +| ... | to all links. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | bridge-domain (L2BD) switching combined with MAC learning enabled. +| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets +| ... | are sent in both directions by TG on links to DUT1 and DUT2; on +| ... | receive TG verifies packets for correctness and their IPv4 (IPv6) +| ... | src-addr, dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 + +*** Test Cases *** +| TC01: DUT reports active interfaces +| | [Documentation] +| | ... | [Top] TG=DUT1; TG-DUT1-DUT2-TG. [Enc] None. [Cfg] Discovered \ +| | ... | active interfaces. [Ver] Report active interfaces on DUT. [Ref] +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO | 3_NODE_SINGLE_LINK_TOPO +| | VPP reports interfaces through VAT on '${nodes['DUT1']}' + +| TC02: DUT with L2BD (MAC learning) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG=DUT1. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 configure \ +| | ... | two i/fs into L2BD with MAC learning. [Ver] Make TG verify +| | ... | ICMPv4 Echo Req pkts are switched thru DUT1 in both directions +| | ... | and are correct on receive. [Ref] +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | When Create bridge domain | ${dut_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2} +| | ... | ${bd_id1} +| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2} + +| TC03: DUT1 and DUT2 with L2BD (MAC learning) switch between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 and DUT2 \ +| | ... | configure two i/fs into L2BD with MAC learning. [Ver] Make TG +| | ... | verify ICMPv4 Echo Req pkts are switched thru DUT1 and DUT2 in +| | ... | both directions and are correct on receive. [Ref] +| | [Tags] | 3_NODE_SINGLE_LINK_TOPO +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | When Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_dut1} +| | ... | ${bd_id2} +| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/vpp/func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot b/tests/vpp/func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot new file mode 100644 index 0000000000..ce99a35fcb --- /dev/null +++ b/tests/vpp/func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot @@ -0,0 +1,85 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2 bridge-domain test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of +| ... | IPv4; Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply +| ... | to all links. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | bridge-domain (L2BD) switching combined with static MACs. +| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets +| ... | are sent in both directions by TG on links to DUT1 and DUT2; on +| ... | receive TG verifies packets for correctness and their IPv4 (IPv6) +| ... | src-addr, dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2BD (static MACs) switch between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 and \ +| | ... | DUT2 configure two i/fs into L2BD with static MACs. [Ver] Make +| | ... | TG verify ICMPv4 Echo Req pkts are switched thru DUT1 and DUT2 +| | ... | in both directions and are correct on receive. [Ref] +| | [Tags] | 3_NODE_SINGLE_LINK_TOPO +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | When Create bridge domain | ${dut1_node} | ${bd_id1} | learn=${FALSE} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add destination port to L2FIB | ${tg_node} +| | ... | ${tg_to_dut1} +| | ... | ${dut1_node} +| | ... | ${dut1_to_tg} +| | ... | ${bd_id1} +| | And Add destination port to L2FIB | ${tg_node} +| | ... | ${tg_to_dut2} +| | ... | ${dut1_node} +| | ... | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id2} +| | ... | learn=${FALSE} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_dut1} +| | ... | ${bd_id2} +| | And Add destination port to L2FIB | ${tg_node} +| | ... | ${tg_to_dut1} +| | ... | ${dut2_node} +| | ... | ${dut2_to_dut1} +| | ... | ${bd_id2} +| | And Add destination port to L2FIB | ${tg_node} +| | ... | ${tg_to_dut2} +| | ... | ${dut2_node} +| | ... | ${dut2_to_tg} +| | ... | ${bd_id2} +| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} diff --git a/tests/vpp/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot b/tests/vpp/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot new file mode 100644 index 0000000000..04cb91376a --- /dev/null +++ b/tests/vpp/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot @@ -0,0 +1,86 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2 bridge-domain test cases* +| ... +| ... | *[Top] Network Topologies:* TG=DUT1=DUT2=TG 3-node circular topology +| ... | with double parallel links. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of +| ... | IPv4; Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply +| ... | to all links. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | bridge-domain (L2BD) switching combined with MAC learning enabled +| ... | and Split Horizon Groups (SHG). +| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets +| ... | are sent in both directions by TG on links to DUT1 and DUT2; on +| ... | receive TG verifies packets for correctness and their IPv4 (IPv6) +| ... | src-addr, dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 + +| ${shg1}= | 3 +| ${shg2}= | 4 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2BD (MAC learn) and SHG switch between four TG links +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 and \ +| | ... | DUT2 configure four i/fs into L2BD with MAC learning and the +| | ... | same SHG on i/fs towards TG. [Ver] Make TG verify ICMPv4 Echo +| | ... | Req pkts are switched thru DUT1 and DUT2 in both directions and +| | ... | are correct on receive; verify no pkts are switched thru SHG +| | ... | isolated interfaces. [Ref] +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO +| | Given Configure path for 3-node BD-SHG test | ${nodes['TG']} +| | ... | ${nodes['DUT1']} | ${nodes['DUT2']} +| | And Set interfaces in 3-node BD-SHG test up +| | When Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if1} +| | ... | ${bd_id1} | ${shg1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if2} +| | ... | ${bd_id1} | ${shg1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if1} +| | ... | ${bd_id2} | ${shg2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if2} +| | ... | ${bd_id2} | ${shg2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_dut1} +| | ... | ${bd_id2} +| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if1} | ${tg_to_dut2_if1} +| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if1} | ${tg_to_dut2_if2} +| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if2} | ${tg_to_dut2_if1} +| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if2} | ${tg_to_dut2_if2} +| | And Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMPv4 bidirectionally and verify received packets +| | | ... | ${tg_node} | ${tg_to_dut1_if1} | ${tg_to_dut1_if2} +| | And Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMPv4 bidirectionally and verify received packets +| | | ... | ${tg_node} | ${tg_to_dut2_if1} | ${tg_to_dut2_if2} diff --git a/tests/vpp/func/l2xc/eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot b/tests/vpp/func/l2xc/eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot new file mode 100644 index 0000000000..c0e8c5c899 --- /dev/null +++ b/tests/vpp/func/l2xc/eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot @@ -0,0 +1,189 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2XC with VLAN tag rewrite test cases - translate-2-1* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-dot1ad-IPv4-ICMPv4 or +| ... | Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, Eth-dot1q-IPv4-ICMPv4 or +| ... | Eth-dot1aq-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2 +| ... | for L2 switching of IPv4/IPv6. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect +| ... | (L2XC) switching between VLAN sub-interface with VLAN tag rewrite +| ... | translate-2-1 method of interface towards TG and interface towards DUT2. +| ... | DUT2 is configured configured with L2 cross-connect (L2XC) switching +| ... | between VLAN sub-interface with VLAN tag rewrite pop-1 method +| ... | of interface towards DUT1 and interface towards TG. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are +| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; +| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. + +*** Variables *** +| ${subid}= | 10 + +| ${outer_vlan_id1}= | 110 +| ${outer_vlan_id2}= | 120 +| ${outer_vlan_wrong}= | 150 + +| ${inner_vlan_id1}= | 210 + +| ${src_ip}= | 3ffe:63::1 +| ${dst_ip}= | 3ffe:63::2 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2XC and VLAN translate-2-1 (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1, \ +| | ... | Eth-dot1q-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to +| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite +| | ... | translate-2-1 method; on DUT2 configure L2 cross-connect (L2XC) with +| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv4 Echo Req +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1ad +| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} + +| TC02: DUT1 and DUT2 with L2XC and VLAN translate-2-1 with wrong tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1, \ +| | ... | Eth-dot1q-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to +| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite +| | ... | translate-2-1 method to set tag different from tag set on VLAN +| | ... | sub-interface of DUT2; on DUT2 configure L2 cross-connect (L2XC) with +| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv4 Echo Req +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} +| | ... | vlan2=${inner_vlan_id1} + +| TC03: DUT1 and DUT2 with L2XC and VLAN translate-2-1 (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, \ +| | ... | Eth-dot1q-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to +| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite +| | ... | translate-2-1 method; on DUT2 configure L2 cross-connect (L2XC) with +| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv6 Echo Req +| | ... | tagegd with Dot1ad tags from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip} +| | ... | dst_ip=${dst_ip} | encaps=Dot1ad | vlan1=${outer_vlan_id1} +| | ... | vlan2=${inner_vlan_id1} + +| TC04: DUT1 and DUT2 with L2XC and VLAN translate-2-1 with wrong tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, \ +| | ... | Eth-dot1q-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to +| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite +| | ... | translate-2-1 method to set tag different from tag set on VLAN +| | ... | sub-interface of DUT2; on DUT2 configure L2 cross-connect (L2XC) with +| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv6 Echo Req +| | ... | tagegd with Dot1ad tags from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1ad +| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} diff --git a/tests/vpp/func/l2xc/eth2p-dot1ad-l2xcbase-func.robot b/tests/vpp/func/l2xc/eth2p-dot1ad-l2xcbase-func.robot new file mode 100644 index 0000000000..f030e618f7 --- /dev/null +++ b/tests/vpp/func/l2xc/eth2p-dot1ad-l2xcbase-func.robot @@ -0,0 +1,69 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2 cross-connect with QinQ test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology with +| ... | single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, +| ... | Eth-IPv4-ICMPv4 on TG-DUTn for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | cross-connect (L2XC) switching with 802.1ad QinQ VLAN tag push and pop. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are +| ... | sent in both directions by TG on links to DUT1 and DUT2; on receive TG +| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr and +| ... | MAC addresses. +| ... | *[Ref] Applicable standard specifications:* IEEE 802.1ad. + +*** Variables *** +| ${subid}= | 10 +| ${outer_vlan_id}= | 100 +| ${inner_vlan_id}= | 200 +| ${type_subif}= | two_tags +| ${tag_rewrite_method}= | pop-2 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2XC and two VLAN push-pop switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on \ +| | ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 and DUT2 +| | ... | configure L2 cross-connect (L2XC), each with one interface to TG +| | ... | and one Ethernet interface towards the other DUT; each DUT +| | ... | pushes two VLAN tags on packets received from local TG, and +| | ... | popping two VLAN tags on packets transmitted to local TG. [Ver] +| | ... | Make TG send ICMPv4 Echo Req in both directions between two of +| | ... | its interfaces to be switched by DUT1 and DUT2; verify all +| | ... | packets are received. [Ref] IEEE 802.1ad. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1_node} | ${subif_index_1} | ${dut2_node} | ${subif_index_2} +| | ... | ${tag_rewrite_method} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subif_index_1} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${subif_index_2} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/vpp/func/l2xc/eth2p-dot1ad-l2xcbase-vlantrans22-func.robot b/tests/vpp/func/l2xc/eth2p-dot1ad-l2xcbase-vlantrans22-func.robot new file mode 100644 index 0000000000..14406da97f --- /dev/null +++ b/tests/vpp/func/l2xc/eth2p-dot1ad-l2xcbase-vlantrans22-func.robot @@ -0,0 +1,346 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2XC with VLAN tag rewrite test cases - translate-2-2* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-dot1ad-IPv4-ICMPv4 or +| ... | Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and DUT1-DUT2, Eth-IPv4-ICMPv4 or +| ... | Eth-IPv6-ICMPv6 on TG-DUT2 for L2 switching of IPv4/IPv6. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect +| ... | (L2XC) switching between VLAN sub-interface with VLAN tag rewrite +| ... | translate-2-2 method of interface towards TG and interface towards DUT2. +| ... | DUT2 is configured configured with L2 cross-connect (L2XC) switching +| ... | between VLAN sub-interface with VLAN tag rewrite pop-2 method +| ... | of interface towards DUT1 and interface towards TG. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are +| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; +| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. + +*** Variables *** +| ${subid}= | 10 + +| ${outer_vlan_id1}= | 110 +| ${outer_vlan_id2}= | 120 +| ${outer_vlan_wrong}= | 150 + +| ${inner_vlan_id1}= | 210 +| ${inner_vlan_id2}= | 220 +| ${inner_vlan_wrong}= | 250 + +| ${src_ip}= | 3ffe:63::1 +| ${dst_ip}= | 3ffe:63::2 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2XC and VLAN translate-2-2 switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method; +| | ... | on DUT2 configure L2 cross-connect (L2XC) with one interface to TG and +| | ... | one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1 +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; verify +| | ... | that packet is received. [Ref] IEEE 802.1ad +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1ad +| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} + +| TC02: DUT1 and DUT2 with L2XC and VLAN translate-2-2 with wrong inner tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to +| | ... | set inner tag different from inner tag set on Dot1ad sub-interface of +| | ... | DUT2; on DUT2 configure L2 cross-connect (L2XC) with one interface to +| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite +| | ... | pop-1 tagged with Dot1ad tags from one of its interfaces to another one +| | ... | method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; verify +| | ... | that packet is not received. [Ref] IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} +| | ... | vlan2=${inner_vlan_id1} + +| TC03: DUT1 and DUT2 with L2XC and VLAN translate-2-2 with wrong outer tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to +| | ... | set outer tag different from outer tag set on Dot1ad sub-interface of +| | ... | DUT2; on DUT2 configure L2 cross-connect (L2XC) with one interface to +| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite +| | ... | pop-1 tagged with Dot1ad tags from one of its interfaces to another +| | ... | one method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; +| | ... | verify that packet is not received. [Ref] IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} +| | ... | vlan2=${inner_vlan_id1} + +| TC04: DUT1 and DUT2 with L2XC and VLAN translate-2-2 with wrong outer and inner tags used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to +| | ... | set tags different from tags set on Dot1ad sub-interface of DUT2; +| | ... | on DUT2 configure L2 cross-connect (L2XC) with one interface to TG +| | ... | and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1 +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; verify +| | ... | that packet is not received. [Ref] IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} +| | ... | vlan2=${inner_vlan_id1} + +| TC05: DUT1 and DUT2 with L2XC and VLAN translate-2-2 switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method; +| | ... | on DUT2 configure L2 cross-connect (L2XC) with one interface to TG and +| | ... | one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1 +| | ... | tagegd with Dot1ad tags from one of its interfaces to another one +| | ... | method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; verify +| | ... | that packet is received. [Ref] IEEE 802.1ad +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip} +| | ... | dst_ip=${dst_ip} | encaps=Dot1ad | vlan1=${outer_vlan_id1} +| | ... | vlan2=${inner_vlan_id1} + +| TC06: DUT1 and DUT2 with L2XC and VLAN translate-2-2 with wrong inner tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to +| | ... | set inner tag different from inner tag set on Dot1ad sub-interface of +| | ... | DUT2; on DUT2 configure L2 cross-connect (L2XC) with one interface to +| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite +| | ... | pop-1 tagegd with Dot1ad tags from one of its interfaces to another one +| | ... | method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; verify +| | ... | that packet is not received. [Ref] IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1ad +| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} + +| TC07: DUT1 and DUT2 with L2XC and VLAN translate-2-2 with wrong outer tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to +| | ... | set outer tag different from outer tag set on Dot1ad sub-interface of +| | ... | DUT2; on DUT2 configure L2 cross-connect (L2XC) with one interface to +| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite +| | ... | pop-1 tagegd with Dot1ad tags from one of its interfaces to another +| | ... | one method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; +| | ... | verify that packet is not received. [Ref] IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1ad +| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} + +| TC08: DUT1 and DUT2 with L2XC and VLAN translate-2-2 with wrong outer and inner tags used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | cross-connect (L2XC) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to +| | ... | set tags different from tags set on Dot1ad sub-interface of DUT2; +| | ... | on DUT2 configure L2 cross-connect (L2XC) with one interface to TG +| | ... | and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1 +| | ... | tagegd with Dot1ad tags from one of its interfaces to another one +| | ... | method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; verify +| | ... | that packet is not received. [Ref] IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1ad +| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} diff --git a/tests/vpp/func/l2xc/eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot b/tests/vpp/func/l2xc/eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot new file mode 100644 index 0000000000..6952d368b8 --- /dev/null +++ b/tests/vpp/func/l2xc/eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot @@ -0,0 +1,335 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2XC with VLAN tag rewrite test cases - translate-1-2* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-dot1q-IPv4-ICMPv4 or +| ... | Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, Eth-dot1ad-IPv4-ICMPv4 or +| ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv4-ICMPv4 or Eth-IPv6-ICMPv6 +| ... | on TG-DUT2 for L2 switching of IPv4/IPv6. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect +| ... | (L2XC) switching between VLAN sub-interface with VLAN tag rewrite +| ... | translate-1-2 method of interface towards TG and interface towards DUT2. +| ... | DUT2 is configured configured with L2 cross-connect (L2XC) switching +| ... | between VLAN sub-interface with VLAN tag rewrite pop-2 method +| ... | of interface towards DUT1 and interface towards TG. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are +| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; +| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. + +*** Variables *** +| ${subid}= | 10 + +| ${outer_vlan_id1}= | 110 +| ${outer_vlan_id2}= | 120 +| ${outer_vlan_wrong}= | 150 + +| ${inner_vlan_id1}= | 210 +| ${inner_vlan_id2}= | 220 +| ${inner_vlan_wrong}= | 250 + +| ${src_ip}= | 3ffe:63::1 +| ${dst_ip}= | 3ffe:63::2 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2XC and VLAN translate-1-2 (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method; on DUT2 configure L2 cross-connect (L2XC) with +| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv4 Echo Req +| | ... | tagged with one Dot1q tag from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id1} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1q +| | ... | vlan1=${outer_vlan_id1} + +| TC02: DUT1 and DUT2 with L2XC and VLAN translate-1-2 with wrong inner tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method to set inner tag different from inner tag set on +| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 cross-connect with +| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv4 Echo Req +| | ... | tagged with one Dot1q tag from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} + +| TC03: DUT1 and DUT2 with L2XC and VLAN translate-1-2 with wrong outer tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method to set outer tag different from outer tag set on +| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 cross-connect with +| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv4 Echo Req +| | ... | tagged with one Dot1q tag from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id1} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} + +| TC04: DUT1 and DUT2 with L2XC and VLAN translate-1-2 with wrong outer and inner tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method to set outer and inner tags different from tags +| | ... | set on Dot1ad sub-interface of DUT2; on DUT2 configure L2 +| | ... | cross-connect with one interface to TG and one Dot1ad sub-interface +| | ... | towards DUT1 with VLAN tag rewrite pop-2 method. [Ver] Make TG send +| | ... | ICMPv4 Echo Req tagged with one Dot1q tag from one of its interfaces +| | ... | to another one via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} + +| TC05: DUT1 and DUT2 with L2XC and VLAN translate-1-2 (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method; on DUT2 configure L2 cross-connect (L2XC) with +| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv6 Echo Req +| | ... | tagegd with one Dot1q tag from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip} +| | ... | dst_ip=${dst_ip} | encaps=Dot1q | vlan1=${outer_vlan_id1} + +| TC06: DUT1 and DUT2 with L2XC and VLAN translate-1-2 with wrong inner tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method to set inner tag different from inner tag set on +| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 cross-connect with +| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv6 Echo Req +| | ... | tagegd with one Dot1q tag from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1q +| | ... | vlan1=${outer_vlan_id1} + +| TC07: DUT1 and DUT2 with L2XC and VLAN translate-1-2 with wrong outer tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method to set outer tag different from outer tag set on +| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 cross-connect with +| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv6 Echo Req +| | ... | tagegd with one Dot1q tag from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1q +| | ... | vlan1=${outer_vlan_id1} + +| TC08: DUT1 and DUT2 with L2XC and VLAN translate-1-2 with wrong outer and inner tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 cross-connect (L2XC) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method to set outer and inner tags different from tags +| | ... | set on Dot1ad sub-interface of DUT2; on DUT2 configure L2 +| | ... | cross-connect with one interface to TG and one Dot1ad sub-interface +| | ... | towards DUT1 with VLAN tag rewrite pop-2 method. [Ver] Make TG send +| | ... | ICMPv6 Echo Req tagegd with one Dot1q tag from one of its interfaces +| | ... | to another one via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1q +| | ... | vlan1=${outer_vlan_id1} diff --git a/tests/vpp/func/l2xc/eth2p-dot1q-l2xcbase-vlantrans11-func.robot b/tests/vpp/func/l2xc/eth2p-dot1q-l2xcbase-vlantrans11-func.robot new file mode 100644 index 0000000000..49039e9db9 --- /dev/null +++ b/tests/vpp/func/l2xc/eth2p-dot1q-l2xcbase-vlantrans11-func.robot @@ -0,0 +1,171 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2XC with VLAN tag rewrite test cases - translate-1-1* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-dot1q-IPv4-ICMPv4 or +| ... | Eth-dot1q-IPv6-ICMPv6 on TG-DUT1 and DUT1-DUT2, Eth-IPv4-ICMPv4 or +| ... | Eth-IPv4-ICMPv4 on TG-DUT2 for L2 switching of IPv4/IPv6. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect +| ... | (L2XC) switching between VLAN sub-interface with VLAN tag rewrite +| ... | translate-1-1 method of interface towards TG and interface towards DUT2. +| ... | DUT2 is configured configured with L2 cross-connect (L2XC) switching +| ... | between VLAN sub-interface with VLAN tag rewrite pop-1 method +| ... | of interface towards DUT1 and interface towards TG. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are +| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; +| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. + +*** Variables *** +| ${subid}= | 10 + +| ${outer_vlan_id1}= | 110 +| ${outer_vlan_id2}= | 120 +| ${outer_vlan_wrong}= | 150 + +| ${src_ip}= | 3ffe:63::1 +| ${dst_ip}= | 3ffe:63::2 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2XC and VLAN translate-1-1 (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1 and \ +| | ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | cross-connect (L2XC) with one interface to DUT2 and one VLAN +| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method; +| | ... | on DUT2 configure L2 cross-connect (L2XC) with one interface to TG +| | ... | and one VLAN sub-interface towards DUT1 with VLAN tag rewrite pop-1 +| | ... | method. [Ver] Make TG send ICMPv4 Echo Req tagged with one Dot1q tag +| | ... | from one of its interfaces to another one via DUT1 and DUT2; verify +| | ... | that packet is received. [Ref] IEEE 802.1q +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1q +| | ... | vlan1=${outer_vlan_id1} + +| TC02: DUT1 and DUT2 with L2XC and VLAN translate-1-1 with wrong tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1 and \ +| | ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | cross-connect (L2XC) with one VLAN tagged sub-interface to DUT2 and +| | ... | one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | (translate-1-1) on sub-interface to DUT2; on DUT2 configure L2XC with +| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with VLAN +| | ... | tag pop-1. [Ver] Make TG send ICMPv4 Echo Req tagged with one dot1q +| | ... | tag from one of its interfaces to another one via DUT1 and DUT2; +| | ... | verify that packet is not received. [Ref] IEEE 802.1q +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} + +| TC03: DUT1 and DUT2 with L2XC and VLAN translate-1-1 (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1 and \ +| | ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | cross-connect (L2XC) with one interface to DUT2 and one VLAN +| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method; +| | ... | on DUT2 configure L2 cross-connect (L2XC) with one interface to TG +| | ... | and one VLAN sub-interface towards DUT1 with VLAN tag rewrite pop-1 +| | ... | method. [Ver] Make TG send ICMPv6 Echo Req tagegd with one Dot1q tag +| | ... | from one of its interfaces to another one via DUT1 and DUT2; verify +| | ... | that packet is received. [Ref] IEEE 802.1q +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip} +| | ... | dst_ip=${dst_ip} | encaps=Dot1q | vlan1=${outer_vlan_id1} + +| TC04: DUT1 and DUT2 with L2XC and VLAN translate-1-1 with wrong tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1 and \ +| | ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | cross-connect (L2XC) with one interface to DUT2 and one VLAN +| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method +| | ... | to set tag different from tag set on VLAN sub-interface of DUT2; +| | ... | on DUT2 configure L2 cross-connect (L2XC) with one interface to TG +| | ... | and one VLAN sub-interface towards DUT1 with VLAN tag rewrite pop-1 +| | ... | method. [Ver] Make TG send ICMPv6 Echo Req tagegd with one Dot1q tag +| | ... | from one of its interfaces to another one via DUT1 and DUT2; verify +| | ... | that packet is not received. [Ref] IEEE 802.1q +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip} | dst_ip=${dst_ip} | encaps=Dot1q +| | ... | vlan1=${outer_vlan_id1} diff --git a/tests/vpp/func/l2xc/eth2p-eth-l2xcbase-func.robot b/tests/vpp/func/l2xc/eth2p-eth-l2xcbase-func.robot new file mode 100644 index 0000000000..37ccfc47cf --- /dev/null +++ b/tests/vpp/func/l2xc/eth2p-eth-l2xcbase-func.robot @@ -0,0 +1,74 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_xconnect.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.NodePath +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2 cross-connect test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of IPv4; +| ... | Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply to all links. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | cross-connect (L2XC) switching. +| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets are +| ... | sent in both directions by TG on links to DUT1 and DUT2; on receive TG +| ... | verifies packets for correctness and their IPv4 (IPv6) src-addr, +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2XC switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 and \ +| | ... | DUT2 configure L2 cross-connect (L2XC), each with one interface +| | ... | to TG and one Ethernet interface towards the other DUT. [Ver] +| | ... | Make TG send ICMPv4 Echo Req in both directions between two of +| | ... | its interfaces to be switched by DUT1 and DUT2; verify all +| | ... | packets are received. [Ref] +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Configure L2XC | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_dut2} +| | And Configure L2XC | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | When All Vpp Interfaces Ready Wait | ${nodes} +| | Then Send ICMPv4 bidirectionally and verify received packets +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} + +| TC02: DUT1 and DUT2 with L2XC switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv6-ICMPv6. [Cfg] On DUT1 and \ +| | ... | DUT2 configure L2 cross-connect (L2XC), each with one interface +| | ... | to TG and one Ethernet interface towards the other DUT. [Ver] +| | ... | Make TG send ICMPv6 Echo Req in both directions between two of +| | ... | its interfaces to be switched by DUT1 and DUT2; verify all +| | ... | packets are received. [Ref] +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Configure L2XC | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_dut2} +| | And Configure L2XC | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | When All Vpp Interfaces Ready Wait | ${nodes} +| | Then Send ICMPv6 bidirectionally and verify received packets +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/vpp/func/l2xc/eth2p-eth-l2xcbase-iaclbase-func.robot b/tests/vpp/func/l2xc/eth2p-eth-l2xcbase-iaclbase-func.robot new file mode 100644 index 0000000000..b62f0f8731 --- /dev/null +++ b/tests/vpp/func/l2xc/eth2p-eth-l2xcbase-iaclbase-func.robot @@ -0,0 +1,144 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/counters.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/l2/l2_xconnect.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Library | resources.libraries.python.Classify.Classify +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *Ingress ACL test cases* +| ... +| ... | *[Top] Network Topologies:* TG - DUT1 - DUT2 - TG +| ... | with one link between the nodes. +| ... | *[Cfg] DUT configuration:* DUT2 is configured with L2 Cross connect. +| ... | DUT1 is configured with iACL classification on link to TG, +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent +| ... | in one direction by TG on link to DUT1 and received on TG link +| ... | to DUT2. On receive TG verifies if packets are dropped. + +*** Variables *** +| ${l2_table}= | l2 + +*** Test Cases *** +| TC01: DUT with iACL MAC src-addr drops matching pkts +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Cfg] On DUT1 add source MAC address to classify table with 'deny'. +| | ... | [Ver] Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Configure L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_tg} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table L2 | ${dut1_node} | src +| | And Vpp Configures Classify Session L2 +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | src | ${tg_to_dut1_mac} +| | And Vpp Enable Input ACL Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${l2_table} | ${table_index} +| | Then ICMP packet transmission should fail +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} + +| TC02: DUT with iACL MAC dst-addr drops matching pkts +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Cfg] On DUT1 add destination MAC address to classify +| | ... | table with 'deny'. +| | ... | [Ver] Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Configure L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_tg} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table L2 | ${dut1_node} | dst +| | And Vpp Configures Classify Session L2 +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | dst | ${tg_to_dut2_mac} +| | And Vpp Enable Input ACL Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${l2_table} | ${table_index} +| | Then ICMP packet transmission should fail +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} + +| TC03: DUT with iACL MAC src-addr and dst-addr drops matching pkts +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Cfg] On DUT1 add source and destination MAC address to classify +| | ... | table with 'deny'. +| | ... | [Ver] Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Configure L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_tg} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} +| | ${table_index_1} | ${skip_n_1} | ${match_n_1}= +| | ... | When Vpp Creates Classify Table L2 | ${dut1_node} | src +| | And Vpp Configures Classify Session L2 +| | ... | ${dut1_node} | deny | ${table_index_1} | ${skip_n_1} | ${match_n_1} +| | ... | src | ${tg_to_dut1_mac} +| | ${table_index_2} | ${skip_n_2} | ${match_n_2}= +| | ... | When Vpp Creates Classify Table L2 | ${dut1_node} | dst +| | And Vpp Configures Classify Session L2 +| | ... | ${dut1_node} | deny | ${table_index_2} | ${skip_n_2} | ${match_n_2} +| | ... | dst | ${tg_to_dut1_mac} +| | And Vpp Enable Input ACL Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${l2_table} | ${table_index_1} +| | And Vpp Enable Input ACL Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${l2_table} | ${table_index_2} +| | Then ICMP packet transmission should fail +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} + +| TC04: DUT with iACL EtherType drops matching pkts +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Cfg] On DUT1 add EtherType IPv4(0x0800) to classify table with 'deny'. +| | ... | [Ver] Make TG verify matching packets are dropped. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Configure L2XC +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_tg} +| | And Configure L2XC +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_tg} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | When Vpp Creates Classify Table Hex +| | ... | ${dut1_node} | 000000000000000000000000ffff +| | And Vpp Configures Classify Session Hex +| | ... | ${dut1_node} | deny | ${table_index} | ${skip_n} | ${match_n} +| | ... | 0000000000000000000000000800 +| | And Vpp Enable Input ACL Interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${l2_table} | ${table_index} +| | Then ICMP packet transmission should fail +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/vpp/func/telemetry/eth2p-ethip4-ip4base-ip4ipfixbase-func.robot b/tests/vpp/func/telemetry/eth2p-ethip4-ip4base-ip4ipfixbase-func.robot new file mode 100644 index 0000000000..d2c979a3a4 --- /dev/null +++ b/tests/vpp/func/telemetry/eth2p-ethip4-ip4base-ip4ipfixbase-func.robot @@ -0,0 +1,201 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/telemetry/ipfix.robot +| Library | resources.libraries.python.Classify.Classify +| Library | resources.libraries.python.telemetry.IPFIXSetup +| Library | resources.libraries.python.Trace + +| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO | EXPECTED_FAILING +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *IPFIX ipv4 test cases* +| ... +| ... | IPFIX tests use 3-node topology TG - DUT1 - DUT2 - TG with +| ... | one link between the nodes. DUT1 is configured with IPv4 +| ... | routing and static routes. IPFIX is configured on DUT1 with +| ... | DUT1->TG interface as collector. Test packets are +| ... | sent from TG to DUT1. TG listens for flow report packets +| ... | and verifies that they contains flow record of test packets sent. + +*** Variables *** +| ${dut1_to_tg_ip}= | 192.168.1.1 +| ${tg_to_dut1_ip}= | 192.168.1.2 +| ${dut2_to_dut1_ip}= | 192.168.2.1 +| ${prefix_length}= | 24 +| ${ip_version}= | ip4 +| ${port}= | 80 + +*** Test Cases *** +| TC01: DUT sends IPFIX template and data packets +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface +| | ... | address as collector and a basic classify session. +| | ... | [Ver] Make TG listen for IPFIX template and data packets, verify +| | ... | that packet is received and correct. No packets are sent from TG. +| | ... | [Ref] RFC 7011 +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} +| | ... | ${tg_to_dut1_mac} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | src +| | And VPP configures classify session L3 | ${dut1_node} | permit +| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | src +| | ... | ${tg_to_dut1_ip} +| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} +| | ... | ${table_index} | ip_version=${ip_version} +| | And Setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip} +| | ... | ${dut1_to_tg_ip} | interval=5 +| | And Set IPFIX stream | ${dut1_node} | ${1} +| | And Assign classify table to exporter | ${dut1_node} | ${table_index} +| | ... | ${ip_version} +| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} +| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} +| | ... | count=0 + +| TC02: DUT reports packet flow for traffic by source address +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface +| | ... | address as collector and add classify session with TG source address. +| | ... | [Ver] Make TG send a packet to DUT1, then listen for IPFIX template +| | ... | and data packets, verify that IPFIX reported the received packet. +| | ... | [Ref] RFC 7011 +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} +| | ... | ${tg_to_dut1_mac} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | src +| | And VPP configures classify session L3 | ${dut1_node} | permit +| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | src +| | ... | ${tg_to_dut1_ip} +| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} +| | ... | ${table_index} | ip_version=${ip_version} +| | And Setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip} +| | ... | ${dut1_to_tg_ip} | interval=5 +| | And Set IPFIX stream | ${dut1_node} | ${1} +| | And Assign classify table to exporter | ${dut1_node} | ${table_index} +| | ... | ${ip_version} +| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} +| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} + +| TC03: DUT reports packet flow for traffic with local destination address +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface +| | ... | address as collector and add classify session with destination +| | ... | address of DUT1. +| | ... | [Ver] Make TG send a packet to DUT1, then listen for IPFIX template +| | ... | and data packets, verify that IPFIX reported the received packet. +| | ... | [Ref] RFC 7011 +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} +| | ... | ${tg_to_dut1_mac} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | dst +| | And VPP configures classify session L3 | ${dut1_node} | permit +| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | dst +| | ... | ${dut1_to_tg_ip} +| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} +| | ... | ${table_index} | ip_version=${ip_version} +| | And Setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip} +| | ... | ${dut1_to_tg_ip} | interval=5 +| | And Set IPFIX stream | ${dut1_node} | ${1} +| | And Assign classify table to exporter | ${dut1_node} | ${table_index} +| | ... | ${ip_version} +| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} +| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} + +| TC04: DUT reports packet flow for traffic with remote destination address +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface +| | ... | address as collector and add classify session with destination +| | ... | address of DUT2. +| | ... | [Ver] Make TG send a packet to DUT2 through DUT1, then listen +| | ... | for IPFIX template and data packets, verify that IPFIX reported +| | ... | the received packet. +| | ... | [Ref] RFC 7011 +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} +| | ... | ${tg_to_dut1_mac} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip} +| | ... | ${dut2_to_dut1_mac} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | dst +| | And VPP configures classify session L3 | ${dut1_node} | permit +| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | dst +| | ... | ${dut2_to_dut1_ip} +| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} +| | ... | ${table_index} | ip_version=${ip_version} +| | And Setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip} +| | ... | ${dut1_to_tg_ip} | interval=5 +| | And Set IPFIX stream | ${dut1_node} | ${1} +| | And Assign classify table to exporter | ${dut1_node} | ${table_index} +| | ... | ${ip_version} +| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} +| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut2_to_dut1_ip} + +| TC05: DUT reports packet flow for traffic by source and destination port +| | [Tags] | SKIP_VPP_PATCH +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface +| | ... | address as collector and add classify session with TG source address +| | ... | and source and destination ports. +| | ... | [Ver] Make TG send a packet to DUT1, then listen for IPFIX template +| | ... | and data packets, verify that IPFIX reported the received packet. +| | ... | [Ref] RFC 7011 +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} +| | ... | ${tg_to_dut1_mac} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} +| | ... | src proto l4 src_port dst_port +| | And VPP configures classify session generic | ${dut1_node} +| | ... | acl-hit-next permit | ${table_index} | ${skip_n} | ${match_n} +| | ... | l3 ${ip_version} src ${tg_to_dut1_ip} +| | ... | proto 6 l4 src_port ${port} dst_port ${port} +| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} +| | ... | ${table_index} | ip_version=${ip_version} +| | And Setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip} +| | ... | ${dut1_to_tg_ip} | interval=5 +| | And Set IPFIX stream | ${dut1_node} | ${1} +| | And Assign classify table to exporter | ${dut1_node} | ${table_index} +| | ... | ${ip_version} +| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} +| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} +| | ... | port=${port} + +# TODO: DUT reports packet flow when ACL is configured with wildcards diff --git a/tests/vpp/func/telemetry/eth2p-ethip4-ip4base-ip4ipfixscale-func.robot b/tests/vpp/func/telemetry/eth2p-ethip4-ip4base-ip4ipfixscale-func.robot new file mode 100644 index 0000000000..553996fcc2 --- /dev/null +++ b/tests/vpp/func/telemetry/eth2p-ethip4-ip4base-ip4ipfixscale-func.robot @@ -0,0 +1,111 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/telemetry/ipfix.robot +| Library | resources.libraries.python.Classify.Classify +| Library | resources.libraries.python.telemetry.IPFIXSetup +| Library | resources.libraries.python.Trace + +| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO | EXPECTED_FAILING +| ... | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *IPFIX ipv4 test cases* +| ... +| ... | IPFIX tests use 3-node topology TG - DUT1 - DUT2 - TG with +| ... | one link between the nodes. DUT1 is configured with IPv4 +| ... | routing and static routes. IPFIX is configured on DUT1 with +| ... | DUT1->TG interface as collector. Test packets are +| ... | sent from TG to DUT1. TG listens for flow report packets +| ... | and verifies that they contains flow record of test packets sent. + +*** Variables *** +| ${dut1_to_tg_ip}= | 192.168.1.1 +| ${tg_to_dut1_ip}= | 192.168.1.2 +| ${prefix_length}= | 24 +| ${ip_version}= | ip4 +| ${sessions}= | 80 + +*** Test Cases *** +| TC01: DUT reports packet flow with a large number of packets +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface +| | ... | address as collector and add classify session with TG source address. +| | ... | [Ver] Make TG send packets to DUT1, then listen for IPFIX template +| | ... | and data packets, verify that IPFIX reported the received packets. +| | ... | [Ref] RFC 7011 +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} +| | ... | ${tg_to_dut1_mac} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | src +| | And VPP configures classify session L3 | ${dut1_node} | permit +| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | src +| | ... | ${tg_to_dut1_ip} +| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} +| | ... | ${table_index} | ip_version=${ip_version} +| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip} +| | ... | ${dut1_to_tg_ip} | interval=5 +| | And Set IPFIX stream | ${dut1_node} | ${1} +| | And Assign classify table to exporter | ${dut1_node} | ${table_index} +| | ... | ${ip_version} +| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} +| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} +| | ... | count=20000 | timeout=10 + +| TC02: DUT reports packet flow when multiple sessions are configured +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface +| | ... | address as collector and add several classify sessions with different +| | ... | ports. +| | ... | [Ver] Make TG send packets to DUT1 using a range of ports matching +| | ... | configured sessions, then listen for IPFIX template and data packets, +| | ... | verify that IPFIX reported the received packets for each session. +| | ... | [Ref] RFC 7011 +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} +| | ... | ${tg_to_dut1_mac} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} +| | ... | src proto l4 src_port dst_port +| | :FOR | ${index} | IN RANGE | ${sessions} +| | | VPP configures classify session generic | ${dut1_node} +| | | ... | acl-hit-next permit | ${table_index} | ${skip_n} | ${match_n} +| | | ... | l3 ${ip_version} src ${tg_to_dut1_ip} +| | | ... | proto 6 l4 src_port ${index} dst_port ${index} +| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} +| | ... | ${table_index} | ip_version=${ip_version} +| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip} +| | ... | ${dut1_to_tg_ip} +| | ... | mtu=1450 | interval=5 +| | And Set IPFIX stream | ${dut1_node} | ${1} +| | And Assign classify table to exporter | ${dut1_node} | ${table_index} +| | ... | ${ip_version} +| | Then Send session sweep and verify IPFIX | ${tg_node} | ${dut1_node} +| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} +| | ... | ${sessions} | timeout=10 | count=3 + +# TODO: DUT reports packet flow when ACL is configured with wildcards diff --git a/tests/vpp/func/telemetry/eth2p-ethip4-ip4base-spanrx-func.robot b/tests/vpp/func/telemetry/eth2p-ethip4-ip4base-spanrx-func.robot new file mode 100644 index 0000000000..37e5b04662 --- /dev/null +++ b/tests/vpp/func/telemetry/eth2p-ethip4-ip4base-spanrx-func.robot @@ -0,0 +1,79 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/telemetry/span.robot +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPv4Util +| Library | resources.libraries.python.IPv4Setup +| Library | resources.libraries.python.telemetry.SPAN +| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *SPAN test suite* +| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two +| ... | links between nodes. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with SPAN mirroring from +| ... | the first DUT1-TG interface to the second one. +| ... | *[Ver] TG verification:* Test ARP or ICMP packets are sent by TG +| ... | on first link to DUT1; On receipt through second link TG verifies +| ... | the copy of packet sent and the copy of DUT's reply packet. +| ... | *[Ref] Applicable standard specifications: None?* + +*** Variables *** +| ${tg_to_dut_if1_ip4}= | 192.168.1.1 +| ${dut_to_tg_if1_ip4}= | 192.168.1.2 +| ${prefix}= | 24 + +*** Test Cases *** +| TC01: DUT mirrors L2 packets from one interface to another +| | [Documentation] +| | ... | [Top] TG=DUT1 +| | ... | [Cfg] On DUT1 configure IPv4 address and set SPAN mirroring\ +| | ... | from one DUT interface to the other. +| | ... | [Ver] Make TG send an ARP packet to DUT through one interface,\ +| | ... | then receive a copy of sent packet and of DUT's ARP reply\ +| | ... | on the second interface. +| | Given Configure path in 2-node circular topology | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And Set interface Address | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${dut_to_tg_if1_ip4} | ${prefix} +| | And Set SPAN Mirroring | ${dut_node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} +| | Then Send Packet And Check Received Copies | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${dut_to_tg__if1_mac} | ${tg_to_dut_if2} +| | ... | ${tg_to_dut_if1_ip4} | ${dut_to_tg_if1_ip4} | ARP + +| TC02: DUT mirrors IPv4 packets from one interface to another +| | [Documentation] +| | ... | [Top] TG=DUT1 +| | ... | [Cfg] On DUT1 configure IPv4 address, add ARP entry for one TG \ +| | ... | interface and set SPAN mirroring from one DUT interface to the other. +| | ... | [Ver] Make TG send an ICMP packet to DUT through one interface,\ +| | ... | then receive a copy of sent packet and of DUT's ICMP reply\ +| | ... | on the other interface. +| | Given Configure path in 2-node circular topology | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And Set interface Address | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${dut_to_tg_if1_ip4} | ${prefix} +| | And Add ARP on DUT | ${dut_node} | ${dut_to_tg_if1} | ${tg_to_dut_if1_ip4} +| | ... | ${tg_to_dut_if1_mac} +| | And Set SPAN Mirroring | ${dut_node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} +| | Then Send Packet And Check Received Copies | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${dut_to_tg__if1_mac} | ${tg_to_dut_if2} +| | ... | ${tg_to_dut_if1_ip4} | ${dut_to_tg_if1_ip4} | ICMP diff --git a/tests/vpp/func/telemetry/eth2p-ethip6-ip6base-ip6ipfixbase-func.robot b/tests/vpp/func/telemetry/eth2p-ethip6-ip6base-ip6ipfixbase-func.robot new file mode 100644 index 0000000000..5248ff8ec0 --- /dev/null +++ b/tests/vpp/func/telemetry/eth2p-ethip6-ip6base-ip6ipfixbase-func.robot @@ -0,0 +1,198 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/telemetry/ipfix.robot +| Library | resources.libraries.python.Classify.Classify +| Library | resources.libraries.python.telemetry.IPFIXSetup +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.Trace + +| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO | EXPECTED_FAILING +# TODO: Remove EXPECTED_FAILING tag once functionality is implemented (VPP-204) +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *IPFIX ipv6 test cases* +| ... +| ... | IPFIX tests use 3-node topology TG - DUT1 - DUT2 - TG with +| ... | one link between the nodes. DUT1 is configured with IPv4 and IPV6 +| ... | routing and static routes. IPFIX is configured on DUT1 with +| ... | DUT1->TG interface as collector.Test packets are +| ... | sent from TG to or through DUT1. TG listens for flow report packets +| ... | and verifies that they contains flow records of test packets sent. + +*** Variables *** +| ${dut1_to_tg_ip}= | 10::10 +| ${dut2_to_dut1_ip}= | 11::10 +| ${tg_to_dut1_ip}= | 12::10 +| ${prefix_length}= | 64 +| ${ip_version}= | ip6 +| ${port}= | 80 + +# IPv4 addresses used for IPFIX exporter. Export over IPv6 not (yet?) supported. +| ${dut1_to_tg_ip4}= | 192.168.1.1 +| ${tg_to_dut1_ip4}= | 192.168.1.2 + +*** Test Cases *** +| TC01: DUT reports packet flow for traffic by source address +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface +| | ... | address as collector and add classify session with TG source address. +| | ... | [Ver] Make TG send a packet to DUT1, then listen for IPFIX template +| | ... | and data packets, verify that IPFIX reported the received packet. +| | ... | [Ref] RFC 7011 +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${24} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip4} +| | ... | ${tg_to_dut1_mac} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} +| | ... | ${tg_to_dut1_mac} +| | And VPP RA suppress link layer | ${dut1_node} | ${dut1_to_tg} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | src +| | And VPP configures classify session L3 | ${dut1_node} | permit +| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | src +| | ... | ${tg_to_dut1_ip} +| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} +| | ... | ${table_index} | ip_version=${ip_version} +| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip4} +| | ... | ${dut1_to_tg_ip4} | interval=5 +| | And Set IPFIX stream | ${dut1_node} | ${1} +| | And Assign classify table to exporter | ${dut1_node} | ${table_index} +| | ... | ${ip_version} +| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} +| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} + +| TC02: DUT reports packet flow for traffic with local destination address +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface +| | ... | address as collector and add classify session with destination +| | ... | address of DUT1. +| | ... | [Ver] Make TG send a packet to DUT1, then listen for IPFIX template +| | ... | and data packets, verify that IPFIX reported the received packet. +| | ... | [Ref] RFC 7011 +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${24} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip4} +| | ... | ${tg_to_dut1_mac} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} +| | ... | ${tg_to_dut1_mac} +| | And VPP RA suppress link layer | ${dut1_node} | ${dut1_to_tg} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | dst +| | And VPP configures classify session L3 | ${dut1_node} | permit +| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | dst +| | ... | ${dut1_to_tg_ip} +| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} +| | ... | ${table_index} | ip_version=${ip_version} +| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip4} +| | ... | ${dut1_to_tg_ip4} | interval=5 +| | And Set IPFIX stream | ${dut1_node} | ${1} +| | And Assign classify table to exporter | ${dut1_node} | ${table_index} +| | ... | ${ip_version} +| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} +| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} + +| TC03: DUT reports packet flow for traffic with remote destination address +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface +| | ... | address as collector and add classify session with destination +| | ... | address of DUT2. +| | ... | [Ver] Make TG send a packet to DUT2 through DUT1, then listen +| | ... | for IPFIX template and data packets, verify that IPFIX reported +| | ... | the received packet. +| | ... | [Ref] RFC 7011 +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${24} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip4} +| | ... | ${tg_to_dut1_mac} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} +| | ... | ${tg_to_dut1_mac} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip} +| | ... | ${dut2_to_dut1_mac} +| | And VPP RA suppress link layer | ${dut1_node} | ${dut1_to_tg} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | dst +| | And VPP configures classify session L3 | ${dut1_node} | permit +| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | dst +| | ... | ${dut2_to_dut1_ip} +| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} +| | ... | ${table_index} | ip_version=${ip_version} +| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip4} +| | ... | ${dut1_to_tg_ip4} | interval=5 +| | And Set IPFIX stream | ${dut1_node} | ${1} +| | And Assign classify table to exporter | ${dut1_node} | ${table_index} +| | ... | ${ip_version} +| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} +| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} +| | ... | ${dut2_to_dut1_ip} + +| TC04: DUT reports packet flow for traffic by source and destination port +| | [Tags] | SKIP_VPP_PATCH +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface +| | ... | address as collector and add classify session with TG source address +| | ... | and source and destination ports. +| | ... | [Ver] Make TG send a packet to DUT1, then listen for IPFIX template +| | ... | and data packets, verify that IPFIX reported the received packet. +| | ... | [Ref] RFC 7011 +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${24} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip4} +| | ... | ${tg_to_dut1_mac} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} +| | ... | ${tg_to_dut1_mac} +| | And VPP RA suppress link layer | ${dut1_node} | ${dut1_to_tg} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} +| | ... | src proto l4 src_port dst_port +| | And VPP configures classify session generic | ${dut1_node} +| | ... | acl-hit-next permit | ${table_index} | ${skip_n} | ${match_n} +| | ... | l3 ${ip_version} src ${tg_to_dut1_ip} +| | ... | proto 6 l4 src_port ${port} dst_port ${port} +| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} +| | ... | ${table_index} | ip_version=${ip_version} +| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip4} +| | ... | ${dut1_to_tg_ip4} | interval=5 +| | And Set IPFIX stream | ${dut1_node} | ${1} +| | And Assign classify table to exporter | ${dut1_node} | ${table_index} +| | ... | ${ip_version} +| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} +| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} +| | ... | port=${port} + +# TODO: DUT reports packet flow when ACL is configured with wildcards diff --git a/tests/vpp/func/telemetry/eth2p-ethip6-ip6base-ip6ipfixscale-func.robot b/tests/vpp/func/telemetry/eth2p-ethip6-ip6base-ip6ipfixscale-func.robot new file mode 100644 index 0000000000..4bc0f66504 --- /dev/null +++ b/tests/vpp/func/telemetry/eth2p-ethip6-ip6base-ip6ipfixscale-func.robot @@ -0,0 +1,127 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/telemetry/ipfix.robot +| Library | resources.libraries.python.Classify.Classify +| Library | resources.libraries.python.telemetry.IPFIXSetup +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.Trace + +| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO | EXPECTED_FAILING +| ... | SKIP_VPP_PATCH +# TODO: Remove EXPECTED_FAILING tag once functionality is implemented (VPP-204) +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *IPFIX ipv6 test cases* +| ... +| ... | IPFIX tests use 3-node topology TG - DUT1 - DUT2 - TG with +| ... | one link between the nodes. DUT1 is configured with IPv4 and IPV6 +| ... | routing and static routes. IPFIX is configured on DUT1 with +| ... | DUT1->TG interface as collector.Test packets are +| ... | sent from TG to or through DUT1. TG listens for flow report packets +| ... | and verifies that they contains flow records of test packets sent. + +*** Variables *** +| ${dut1_to_tg_ip}= | 10::10 +| ${tg_to_dut1_ip}= | 12::10 +| ${prefix_length}= | 64 +| ${ip_version}= | ip6 +| ${sessions}= | 45 + +# IPv4 addresses used for IPFIX exporter. Export over IPv6 not (yet?) supported. +| ${dut1_to_tg_ip4}= | 192.168.1.1 +| ${tg_to_dut1_ip4}= | 192.168.1.2 + +*** Test Cases *** +| TC01: DUT reports packet flow with a large number of packets +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface +| | ... | address as collector and add classify session with TG source address. +| | ... | [Ver] Make TG send packets to DUT1, then listen for IPFIX template +| | ... | and data packets, verify that IPFIX reported the received packets. +| | ... | [Ref] RFC 7011 +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${24} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip4} +| | ... | ${tg_to_dut1_mac} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} +| | ... | ${tg_to_dut1_mac} +| | And VPP RA suppress link layer | ${dut1_node} | ${dut1_to_tg} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | src +| | And VPP configures classify session L3 | ${dut1_node} | permit +| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | src +| | ... | ${tg_to_dut1_ip} +| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} +| | ... | ${table_index} | ip_version=${ip_version} +| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip4} +| | ... | ${dut1_to_tg_ip4} | interval=5 +| | And Set IPFIX stream | ${dut1_node} | ${1} +| | And Assign classify table to exporter | ${dut1_node} | ${table_index} +| | ... | ${ip_version} +| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} +| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} +| | ... | count=20000 | timeout=10 + +| TC02: DUT reports packet flow when multiple sessions are configured +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface +| | ... | address as collector and add several classify sessions with different +| | ... | ports. +| | ... | [Ver] Make TG send packets to DUT1 using a range of ports matching +| | ... | configured sessions, then listen for IPFIX template and data packets, +| | ... | verify that IPFIX reported the received packets for each session. +| | ... | [Ref] RFC 7011 +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${24} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip4} +| | ... | ${tg_to_dut1_mac} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} +| | ... | ${tg_to_dut1_mac} +| | And VPP RA suppress link layer | ${dut1_node} | ${dut1_to_tg} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} +| | ... | src proto l4 src_port dst_port +| | :FOR | ${index} | IN RANGE | ${sessions} +| | | VPP configures classify session generic | ${dut1_node} +| | | ... | acl-hit-next permit | ${table_index} | ${skip_n} | ${match_n} +| | | ... | l3 ${ip_version} src ${tg_to_dut1_ip} +| | | ... | proto 6 l4 src_port ${index} dst_port ${index} +| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} +| | ... | ${table_index} | ip_version=${ip_version} +| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip4} +| | ... | ${dut1_to_tg_ip4} | interval=5 +| | ... | mtu=1450 | interval=5 +| | And Set IPFIX stream | ${dut1_node} | ${1} +| | And Assign classify table to exporter | ${dut1_node} | ${table_index} +| | ... | ${ip_version} +| | Then Send session sweep and verify IPFIX | ${tg_node} | ${dut1_node} +| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} +| | ... | ${sessions} | timeout=10 | count=3 + +# TODO: DUT reports packet flow when ACL is configured with wildcards diff --git a/tests/vpp/func/telemetry/eth2p-ethip6-ip6base-spanrx-func.robot b/tests/vpp/func/telemetry/eth2p-ethip6-ip6base-spanrx-func.robot new file mode 100644 index 0000000000..48bb7cf173 --- /dev/null +++ b/tests/vpp/func/telemetry/eth2p-ethip6-ip6base-spanrx-func.robot @@ -0,0 +1,64 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/telemetry/span.robot +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPv6Util +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.Routing +| Library | resources.libraries.python.telemetry.SPAN +| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *SPAN test suite* +| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two +| ... | links between nodes. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with SPAN mirroring from +| ... | the first DUT1-TG interface to the second one. +| ... | *[Ver] TG verification:* Test ARP or ICMP packets are sent by TG +| ... | on first link to DUT1; On receipt through second link TG verifies +| ... | the copy of packet sent and the copy of DUT's reply packet. +| ... | *[Ref] Applicable standard specifications: None?* + +*** Variables *** +| ${tg_to_dut_if1_ip6}= | 11::1 +| ${dut_to_tg_if1_ip6}= | 10::1 +| ${prefix}= | 24 + +*** Test Cases *** +| TC01: DUT mirrors IPv6 packets from one interface to another +| | [Documentation] +| | ... | [Top] TG=DUT1 +| | ... | [Cfg] On DUT1 configure IPv6 address, add ARP entry for one TG \ +| | ... | interface and set SPAN mirroring from one DUT interface to the other. +| | ... | [Ver] Make TG send an ICMP packet to DUT through one interface,\ +| | ... | then receive a copy of sent packet and of DUT's ICMP reply\ +| | ... | on the other interface. +| | Given Configure path in 2-node circular topology | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And Vpp Ra Suppress Link Layer | ${dut_node} | ${dut_to_tg_if1} +| | And Vpp Set If Ipv6 Addr | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${dut_to_tg_if1_ip6} | ${prefix} +| | And Add Ip Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${tg_to_dut_if1_ip6} +| | ... | ${tg_to_dut_if1_mac} +| | And Vpp Route Add | ${dut_node} | ${tg_to_dut_if1_ip6} | ${prefix} +| | ... | ${dut_to_tg_if1_ip6} | ${dut_to_tg_if1} +| | And Set SPAN Mirroring | ${dut_node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} +| | Then Send Packet And Check Received Copies | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${dut_to_tg__if1_mac} | ${tg_to_dut_if2} +| | ... | ${tg_to_dut_if1_ip6} | ${dut_to_tg_if1_ip6} | ICMPv6 diff --git a/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4-ip4base-eth-2vhost-1vm.robot b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4-ip4base-eth-2vhost-1vm.robot new file mode 100644 index 0000000000..5886454b06 --- /dev/null +++ b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4-ip4base-eth-2vhost-1vm.robot @@ -0,0 +1,98 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.VPPUtil +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.VhostUser +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/vrf.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Force Tags | VM_ENV | HW_ENV | 3_NODE_DOUBLE_LINK_TOPO +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *IPv4 routing test cases with vhost user interface* +| ... +| ... | RFC791 IPv4, RFC826 ARP, RFC792 ICMPv4. Encapsulations: Eth-IPv4-ICMPv4 +| ... | on links TG=DUT1. IPv4 routing tests use circular 2-node +| ... | topology TG - DUT1 - TG with two link between the nodes. DUT is +| ... | configured with IPv4 routing and static routes. Test sends packets +| ... | by TG on links to DUT and received on TG link on the other side of +| ... | circular topology. On receive TG verifies packets IPv4 src-addr, +| ... | dst-addr and MAC addresses. + +*** Variables *** +| ${net1}= | 10.0.1.0 +| ${net3}= | 10.0.3.0 +| ${net1_ip1}= | 10.0.1.1 +| ${net1_ip2}= | 10.0.1.2 +| ${net2_ip1}= | 10.0.2.1 +| ${net2_ip2}= | 10.0.2.2 +| ${net3_ip1}= | 10.0.3.1 +| ${net3_ip2}= | 10.0.3.2 +| ${prefix_length}= | 24 +| ${fib_table_2}= | 20 +| ${sock1}= | /tmp/sock1 +| ${sock2}= | /tmp/sock2 + +*** Test Cases *** +| TC01: IPv4 forward via vhost to another VRF +| | [Documentation] +| | ... | Test uses VRF to route IPv4 traffic through 2 vhost user interfaces. +| | ... | Both have IP addresses from same network. On VM is set bridge to pass +| | ... | packet from a one vhost user interface to another one. +| | [Teardown] | Run Keywords +| | ... | Stop and clear QEMU | ${dut_node} | ${vm_node} | AND +| | ... | Tear down functional test +| | +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | ${vhost1}= | And Vpp Create Vhost User Interface | ${dut_node} | ${sock1} +| | ${vhost2}= | And Vpp Create Vhost User Interface | ${dut_node} | ${sock2} +| | And Set Interface State | ${dut_node} | ${vhost1} | up +| | And Set Interface State | ${dut_node} | ${vhost2} | up +| | And Assign Interface To Fib Table | ${dut_node} +| | ... | ${vhost2} | ${fib_table_2} +| | And Assign Interface To Fib Table | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${fib_table_2} +| | And Configure IP addresses on interfaces +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${net1_ip1} | ${prefix_length} +| | ... | ${dut_node} | ${vhost1} | ${net2_ip1} | ${prefix_length} +| | ... | ${dut_node} | ${vhost2} | ${net2_ip2} | ${prefix_length} +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${net3_ip1} | ${prefix_length} +| | ${vhost2_mac}= | And Get Vhost User Mac By SW Index +| | ... | ${dut_node} | ${vhost2} +| | And Vpp Route Add | ${dut_node} | ${net3} | 24 | ${net2_ip2} +| | ... | ${vhost1} | resolve_attempts=${NONE} | count=${NONE} +| | And Vpp Route Add | ${dut_node} | ${net1} | 24 | ${net2_ip1} +| | ... | ${vhost2} | resolve_attempts=${NONE} | count=${NONE} +| | ... | vrf=${fib_table_2} +| | Add IP Neighbor | ${dut_node} | ${vhost1} | ${net2_ip2} | ${vhost2_mac} +| | Add IP Neighbor | ${dut_node} | ${dut_to_tg_if2} | ${net3_ip2} +| | ... | ${tg_to_dut_if2_mac} +| | When Configure VM for vhost L2BD forwarding +| | ... | ${dut_node} | ${sock1} | ${sock2} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${net1_ip2} | ${net3_ip2} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} +| | ... | ${tg_to_dut_if2} | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} diff --git a/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot new file mode 100644 index 0000000000..d23c7427fd --- /dev/null +++ b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot @@ -0,0 +1,209 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.LispUtil +| Library | resources.libraries.python.VhostUser +| Library | resources.libraries.python.QemuUtils +| Library | resources.libraries.python.VPPUtil +| Library | resources.libraries.python.IPsecUtil +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/vrf.robot +| Resource | resources/libraries/robot/crypto/ipsec.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/overlay/l2lisp.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/ipv4_ipsec_lispgpe_ipv4/ipv4_ipsec_lispgpe_ipv4.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH +| ... +| Test Setup | Set up functional test +| ... +| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node} +| ... +| Documentation | *IPv4-ip4-ipsec-lispgpe-ip4 - main fib, vrf (gpe_vni-to-vrf)* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* ICMPv4-IPv4-IPSec-LISPGPE-IPv4-ICMPv4. +| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec.\ +| ... | IPsec is in transport mode. Tests cases are for IPsec configured both\ +| ... | on RLOC interface or lisp_gpe0 interface. +| ... | *[Ver] TG verification:* Packet is send from TG(if1) across the DUT1\ +| ... | via VM to DUT2 where it is forwarded to TG(if2). +| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303. + +*** Variables *** +| ${dut2_spi}= | ${1000} +| ${dut1_spi}= | ${1001} + +| ${ESP_PROTO}= | ${50} + +| ${sock1}= | /tmp/sock1 +| ${sock2}= | /tmp/sock2 + +| ${bid}= | 10 + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv4 over Vhost to LISP GPE tunnel using IPsec (transport) on RLOC Int. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-IPSec-LISPGPE-IPv4-ICMP on DUT1-DUT2, Eth-IPv4-ICMP\ +| | ... | on TG-DUTn. +| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ +| | ... | IPsec in between DUTS. Create Qemu vm on DUT1 and configure bridge\ +| | ... | between two vhosts. +| | ... | [Ver] Case: ip4-ipsec-lispgpe-ip4 - main fib, virt2lisp\ +| | ... | Make TG send ICMPv4 Echo Req between its interfaces across\ +| | ... | both DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830, RFC4303. +| | ... +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Setup 3-node Topology +| | And Add IP Neighbors +| | And Setup Qemu DUT1 +| | And Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_to_dut2_ip4_static_adjacency} +| | ... | ${dut2_to_dut1_ip4_static_adjacency} +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} +| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} +| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +| TC02: DUT1 and DUT2 route IPv4 over Vhost to LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-IPSec-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2,\ +| | ... | Eth-IPv4-ICMPv4 on TG-DUTn. +| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ +| | ... | IPsec in between DUTS. +| | ... | [Ver] Case: ip4-ipsec-lispgpe-ip4 - main fib, virt2lisp\ +| | ... | Make TG send ICMPv4 Echo Req between its interfaces across\ +| | ... | both DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830, RFC4303. +| | ... +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Setup 3-node Topology +| | And Add IP Neighbors +| | And Setup Qemu DUT1 +| | And Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_to_dut2_ip4_static_adjacency} +| | ... | ${dut2_to_dut1_ip4_static_adjacency} +| | ${lisp1_if_idx}= | resources.libraries.python.InterfaceUtil.Get Sw If Index +| | ... | ${dut1_node} | lisp_gpe0 +| | ${lisp2_if_idx}= | resources.libraries.python.InterfaceUtil.Get Sw If Index +| | ... | ${dut2_node} | lisp_gpe0 +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut1_node} | ${lisp1_if_idx} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} +| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut2_node} | ${lisp2_if_idx} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} +| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Setup 3-node Topology +| | [Documentation] +| | ... | Setup 3-node topology for this test suite. Set all physical\ +| | ... | interfaces up and assing IP adresses to them.\ +| | ... | You can specify fib table ID where the DUT-TG interfaces assign to.\ +| | ... | Default is 0. +| | ... +| | [Arguments] | ${fib_table}=0 +| | Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | Set interfaces in 3-node circular topology up +| | Assign Interface To Fib Table | ${dut1_node} +| | ... | ${dut1_to_tg} | ${fib_table} +| | Assign Interface To Fib Table | ${dut2_node} +| | ... | ${dut2_to_tg} | ${fib_table} +| | Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} +| | ... | ${prefix4} +| | Set Interface Address | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} +| | ... | ${prefix4} +| | Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} +| | ... | ${prefix4} +| | Set Interface Address | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} +| | ... | ${prefix4} + +| Add IP Neighbors +| | [Documentation] +| | ... | Add IP neighbors to physical interfaces on DUTs. +| | ... +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} +| | ... | ${tg_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} +| | ... | ${tg_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} +| | ... | ${dut1_to_dut2_mac} + +| Setup Qemu DUT1 +| | [Documentation] | Setup Vhosts on DUT1 and setup IP to one of them. Setup \ +| | ... | Qemu and bridge the vhosts. +| | ${vhost1}= | And Vpp Create Vhost User Interface | ${dut1_node} | ${sock1} +| | ${vhost2}= | And Vpp Create Vhost User Interface | ${dut1_node} | ${sock2} +| | Set Interface Address | ${dut1_node} | ${vhost2} | 6.6.1.9 +| | ... | ${prefix4} +| | Set Interface State | ${dut1_node} | ${vhost1} | up +| | Set Interface State | ${dut1_node} | ${vhost2} | up +| | Create bridge domain | ${dut1_node} | ${bid} | learn=${TRUE} +| | Add interface to bridge domain | ${dut1_node} +| | ... | ${dut1_to_tg} | ${bid} | 0 +| | Add interface to bridge domain | ${dut1_node} +| | ... | ${vhost1} | ${bid} | 0 +| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2} +| | Set test variable | ${dst_vhost_mac} | ${vhost_mac} +| | Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} | ${sock2} diff --git a/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot new file mode 100644 index 0000000000..144ac0ac59 --- /dev/null +++ b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot @@ -0,0 +1,185 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.L2Util +| Library | resources.libraries.python.LispUtil +| Library | resources.libraries.python.IPsecUtil +| Library | resources.libraries.python.VatJsonUtil +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.VhostUser +| Library | resources.libraries.python.QemuUtils +| Library | resources.libraries.python.VPPUtil +| Library | String +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/crypto/ipsec.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv4/ipv6_lispgpe_ipsec_ipv4.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH +| ... +| Test Setup | Set up functional test +| ... +| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node} +| ... +| Documentation | *IPv6 - ip4-ipsec-lispgpe-ip6 - main fib, vrf, virt2lisp,\ +| ... | phy2lisp* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISPGPE-IPSec-IPv6-ICMP,\ +| ... | Eth-IPv4-IPSec-LISPGPE-IPv6-ICMP +| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec.\ +| ... | IPsec is in transport mode. Tests cases are for IPsec configured both\ +| ... | on RLOC interface or lisp_gpe0 interface. +| ... | *[Ver] TG verification:* Packet is send from TG(if1) across the DUT1\ +| ... | via VM to DUT2 where it is forwarded to TG(if2). +| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303. + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv6 over Vhost to LISP GPE tunnel using IPsec (transport) on RLOC Int. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-LISPGPE-IPSec-IPv6-ICMP on DUT1-DUT2, Eth-IPv6-ICMP\ +| | ... | on TG-DUTn. +| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ +| | ... | IPsec in between DUTS. Create Qemu vm on DUT1 and configure bridge\ +| | ... | between two vhosts. +| | ... | [Ver] Case: ip4-ipsec-lispgpe-ip6 - main fib, virt2lisp\ +| | ... | Make TG send ICMPv6 Echo Req between its interfaces across\ +| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830, RFC4303. +| | ... +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Setup Topology And Lisp +| | And Setup Qemu DUT1 +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} +| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} +| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +| TC02: DUT1 and DUT2 route IPv6 over Vhost to LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2,\ +| | ... | Eth-IPv6-ICMPv6, on TG-DUTn. +| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2 with\ +| | ... | IPsec in between DUTS. +| | ... | [Ver] Case: ip4-ipsec-lispgpe-ip6 - main fib, virt2lisp\ +| | ... | Make TG send ICMPv6 Echo Req between its interfaces across\ +| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830, RFC4303. +| | ... +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Setup Topology And Lisp +| | And Setup Qemu DUT1 +| | ${lisp1_if_idx}= | resources.libraries.python.InterfaceUtil.get sw if index +| | ... | ${dut1_node} | ${lisp_gpe_int} +| | ${lisp2_if_idx}= | resources.libraries.python.InterfaceUtil.get sw if index +| | ... | ${dut2_node} | ${lisp_gpe_int} +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut1_node} | ${lisp1_if_idx} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} +| | ... | ${dut1_to_dut2_ip4} | ${dut2_to_dut1_ip4} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut2_node} | ${lisp2_if_idx} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} +| | ... | ${dut2_to_dut1_ip4} | ${dut1_to_dut2_ip4} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Setup Topology And Lisp +| | [Documentation] | Setup IPs and neighbors for interfaces on DUT1 and DUT2\ +| | ... | and then setup LISP. +| | [Arguments] | ${fib_table}=0 | ${vni_table}=0 | ${ip6}=${FALSE} +| | Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | Set interfaces in 3-node circular topology up +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} +| | ... | ${prefix4} +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} +| | ... | ${prefix6} +| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} +| | ... | ${prefix4} +| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} +| | ... | ${prefix6} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} +| | ... | ${tg_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} +| | ... | ${dut1_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} +| | ... | ${tg_to_dut1_mac} +| | Vpp All RA Suppress Link Layer | ${nodes} +| | Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_to_dut2_ip_static_adjacency} +| | ... | ${dut2_to_dut1_ip_static_adjacency} +| | ... | ${vni_table} | ${fib_table} + +| Setup Qemu DUT1 +| | [Documentation] | Setup Vhosts on DUT1 and setup IP to one of them. Setup\ +| | ... | Qemu and bridge the vhosts. +| | ${vhost1}= | And Vpp Create Vhost User Interface | ${dut1_node} | ${sock1} +| | ${vhost2}= | And Vpp Create Vhost User Interface | ${dut1_node} | ${sock2} +| | Set Interface Address | ${dut1_node} | ${vhost2} | ${vhost_ip} | ${prefix6} +| | Set Interface State | ${dut1_node} | ${vhost1} | up +| | Set Interface State | ${dut1_node} | ${vhost2} | up +| | Vpp RA Suppress Link Layer | ${dut1_node} | ${vhost2} +| | Create bridge domain | ${dut1_node} | ${bid} | learn=${TRUE} +| | Add interface to bridge domain | ${dut1_node} +| | ... | ${dut1_to_tg} | ${bid} | 0 +| | Add interface to bridge domain | ${dut1_node} +| | ... | ${vhost1} | ${bid} | 0 +| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2} +| | Set test variable | ${dst_vhost_mac} | ${vhost_mac} +| | Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} | ${sock2} diff --git a/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot new file mode 100644 index 0000000000..c99ba40491 --- /dev/null +++ b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot @@ -0,0 +1,121 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.VPPUtil +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.VhostUser +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/vrf.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/ipv4_lispgpe_ipv4/ipv4_lispgpe_ipv4.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP +| ... +| Test Setup | Set up functional test +| ... +| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node} +| ... +| Documentation | *ip4-lispgpe-ip4 encapsulation test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv4-ICMPv4 on DUT1-DUT2,\ +| ... | Eth-IPv4-ICMPv4 on TG-DUTn for IPv4 routing over LISPoIPv4 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ +| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ +| ... | DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in\ +| ... | both directions by TG on links to DUT1 and DUT2; on receive\ +| ... | TG verifies packets for correctness and their IPv4 src-addr, dst-addr\ +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using vhost interfaces +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on\ +| | ... | TG-DUTn. +| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. +| | ... | [Ver] Case: ip4-lispgpe-ip4 - main fib, virt2lisp +| | ... | Make TG send ICMPv4 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ +| | ... | received packets are correct. +| | ... +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Configure IP addresses on interfaces +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} | ${prefix4} +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${prefix4} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} | ${prefix4} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} | ${prefix4} +| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} +| | ... | ${tg_to_dut1_mac} +| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} +| | ... | ${tg_to_dut2_mac} +| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_dut1_mac} +| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} +| | ... | ${dut1_to_dut2_mac} +| | When Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_to_dut2_ip4_static_adjacency} +| | ... | ${dut2_to_dut1_ip4_static_adjacency} +| | And Setup Qemu DUT1 +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Setup Qemu DUT1 +| | [Documentation] | Setup Vhosts on DUT1 and setup IP on one of them. Setup\ +| | ... | Qemu and bridge the vhosts. Optionally, you can set fib table ID\ +| | ... | where the vhost2 interface should be assigned to. +| | ... +| | [Arguments] | ${fib_table}=0 +| | ... +| | ${vhost1}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock1} +| | ${vhost2}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock2} +| | Assign Interface To Fib Table | ${dut1_node} +| | ... | ${vhost2} | ${fib_table} +| | Set Interface Address | ${dut1_node} | ${vhost2} | ${vhost_ip} | ${prefix4} +| | Set Interface State | ${dut1_node} | ${vhost1} | up +| | Set Interface State | ${dut1_node} | ${vhost2} | up +| | Create bridge domain | ${dut1_node} | ${bid} | learn=${TRUE} +| | Add interface to bridge domain | ${dut1_node} +| | ... | ${dut1_to_tg} | ${bid} | 0 +| | Add interface to bridge domain | ${dut1_node} +| | ... | ${vhost1} | ${bid} | 0 +| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2} +| | Set test variable | ${dst_vhost_mac} | ${vhost_mac} +| | Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} | ${sock2} diff --git a/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot new file mode 100644 index 0000000000..0539bfad1c --- /dev/null +++ b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot @@ -0,0 +1,133 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.VPPUtil +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.VhostUser +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/vrf.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/ipv4_lispgpe_ipv4/ipv4_lispgpe_ipv4.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP +| ... +| Test Setup | Set up functional test +| ... +| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node} +| ... +| Documentation | *ip4-lispgpe-ip4 encapsulation test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv4-ICMPv4 on DUT1-DUT2,\ +| ... | Eth-IPv4-ICMPv4 on TG-DUTn for IPv4 routing over LISPoIPv4 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ +| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ +| ... | DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in\ +| ... | both directions by TG on links to DUT1 and DUT2; on receive\ +| ... | TG verifies packets for correctness and their IPv4 src-addr, dst-addr\ +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv4 bidirectionally over LISP GPE tunnel using vhost interfaces and VRF is enabled +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-LISPGPE-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on\ +| | ... | TG-DUTn. +| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. +| | ... | [Ver] Case: ip4-lispgpe-ip4 - vrf, virt2lisp +| | ... | Make TG send ICMPv4 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP GPE tunnel between them; verify IPv4 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830. +| | ... +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Assign Interface To Fib Table | ${dut1_node} +| | ... | ${dut1_to_tg} | ${fib_table_1} +| | And Assign Interface To Fib Table | ${dut2_node} +| | ... | ${dut2_to_tg} | ${fib_table_1} +| | And Add IP Neighbors +| | And Configure IP addresses on interfaces +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip4} | ${prefix4} +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${prefix4} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip4} | ${prefix4} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} | ${prefix4} +| | When Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_to_dut2_ip4_static_adjacency} +| | ... | ${dut2_to_dut1_ip4_static_adjacency} +| | ... | ${dut1_dut2_vni} | ${fib_table_1} +| | And Setup Qemu DUT1 | ${fib_table_1} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Setup Qemu DUT1 +| | [Documentation] | Setup Vhosts on DUT1 and setup IP on one of them. Setup\ +| | ... | Qemu and bridge the vhosts. Optionally, you can set fib table ID\ +| | ... | where the vhost2 interface should be assigned to. +| | ... +| | [Arguments] | ${fib_table}=0 +| | ... +| | ${vhost1}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock1} +| | ${vhost2}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock2} +| | Assign Interface To Fib Table | ${dut1_node} +| | ... | ${vhost2} | ${fib_table} +| | Set Interface Address | ${dut1_node} | ${vhost2} | ${vhost_ip} | ${prefix4} +| | Set Interface State | ${dut1_node} | ${vhost1} | up +| | Set Interface State | ${dut1_node} | ${vhost2} | up +| | Create bridge domain | ${dut1_node} | ${bid} | learn=${TRUE} +| | Add interface to bridge domain | ${dut1_node} +| | ... | ${dut1_to_tg} | ${bid} | 0 +| | Add interface to bridge domain | ${dut1_node} +| | ... | ${vhost1} | ${bid} | 0 +| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2} +| | Set test variable | ${dst_vhost_mac} | ${vhost_mac} +| | Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} | ${sock2} + +| Add IP Neighbors +| | [Documentation] +| | ... | Add IP neighbors to physical interfaces on DUTs. +| | ... +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} +| | ... | ${tg_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} +| | ... | ${tg_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip4} +| | ... | ${dut1_to_dut2_mac} diff --git a/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot new file mode 100644 index 0000000000..811dce4b27 --- /dev/null +++ b/tests/vpp/func/vm_vhost/ip4/eth2p-ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot @@ -0,0 +1,117 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.VhostUser +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.VPPUtil +# import additional Lisp settings from resource file +| Variables | resources/test_data/lisp/static_adjacency/lisp_static_adjacency.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | 3_NODE_DOUBLE_LINK_TOPO +| ... | VM_ENV | HW_ENV +| ... +| Test Setup | Set up functional test +| ... +| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node} +| ... +| Documentation | *LISP static adjacency test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv6-ICMPv6 on DUT1-DUT2,\ +| ... | Eth-IPv6-ICMPv6 on TG-DUTn for IPv6 routing over LISPoIPv4 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ +| ... | routing and static routes. LISPoIPv4 tunnel is configured\ +| ... | between DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets\ +| ... | are sent in both directions by TG on links to DUT1 and DUT2; on receive\ +| ... | TG verifies packets for correctness and their IPv6 src-addr,\ +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using vhost interfaces +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv4-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on\ +| | ... | TG-DUTn. +| | ... | [Cfg] Configure IPv4 LISP static adjacencies on DUT1 and DUT2. +| | ... | [Ver] Case: ip6-lispgpe-ip4 - main fib, virt2lisp +| | ... | Make TG send ICMPv6 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ +| | ... | received packets are correct. +| | ... +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Configure IP addresses on interfaces +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6o4} +| | ... | ${dut_prefix6o4} +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6o4} | ${tg_prefix6o4} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut_prefix6o4} +| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} +| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6o4} +| | ... | ${tg_to_dut1_mac} +| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6o4} +| | ... | ${tg_to_dut2_mac} +| | And Add Arp On Dut | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_dut1_mac} +| | And Add Arp On Dut | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6o4} +| | ... | ${dut1_to_dut2_mac} +| | And Vpp All RA Suppress Link Layer | ${nodes} +| | When Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} +| | ... | ${dut2_ip6o4_static_adjacency} +| | And Setup Qemu DUT1 +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip6o4} | ${tg2_ip6o4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip6o4} | ${tg1_ip6o4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Setup Qemu DUT1 +| | [Documentation] | Setup Vhosts on DUT1 and setup IP on one of them. Setup\ +| | ... | Qemu and bridge the vhosts. +| | ... +| | ${vhost1}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock1} +| | ${vhost2}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock2} +| | Set Interface Address | ${dut1_node} | ${vhost2} | ${vhost_ip} | ${prefix4} +| | Set Interface State | ${dut1_node} | ${vhost1} | up +| | Set Interface State | ${dut1_node} | ${vhost2} | up +| | Create bridge domain | ${dut1_node} | ${bid} | learn=${TRUE} +| | Add interface to bridge domain | ${dut1_node} +| | ... | ${dut1_to_tg} | ${bid} | 0 +| | Add interface to bridge domain | ${dut1_node} +| | ... | ${vhost1} | ${bid} | 0 +| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2} +| | Set test variable | ${dst_vhost_mac} | ${vhost_mac} +| | Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} | ${sock2} diff --git a/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot new file mode 100644 index 0000000000..6b5639537e --- /dev/null +++ b/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot @@ -0,0 +1,183 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.L2Util +| Library | resources.libraries.python.LispUtil +| Library | resources.libraries.python.IPsecUtil +| Library | resources.libraries.python.VatJsonUtil +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.VhostUser +| Library | resources.libraries.python.QemuUtils +| Library | resources.libraries.python.VPPUtil +| Library | String +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/crypto/ipsec.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/ipv4_lispgpe_ipv6/ipv4_lispgpe_ipsec_ipv6.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH +| ... +| Test Setup | Set up functional test +| ... +| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node} +| ... +| Documentation | *IPv6 - ip4-ipsec-lispgpe-ip6 - main fib, virt2lisp, phy2lisp* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISPGPE-IPSec-IPv4-ICMP,\ +| ... | Eth-IPv6-IPSec-LISPGPE-IPv4-ICMP +| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec.\ +| ... | IPsec is in transport mode. Test cases are for IPsec configured both\ +| ... | on RLOC interface or lisp_gpe0 interface. +| ... | *[Ver] TG verification:* Packet is send from TG(if1) across the DUT1 to\ +| ... | DUT2 where it is forwarded to TG(if2). +| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303. + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv4 over Vhost to LISP GPE tunnel using IPsec (transport) on RLOC Int. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv6-LISPGPE-IPSec-IPv4-ICMP on DUT1-DUT2, Eth-IPv4-ICMP\ +| | ... | on TG-DUTn. +| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 with\ +| | ... | IPsec in between DUTS. Create Qemu vm on DUT1 and configure bridge\ +| | ... | between two vhosts. +| | ... | [Ver] Case: ip6-ipsec-lispgpe-ip4 - main fib, virt2lisp\ +| | ... | Make TG send ICMPv6 Echo Req between its interfaces across\ +| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830, RFC4303. +| | ... +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Setup Topology And Lisp +| | And Setup Qemu DUT1 +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} +| | ... | ${dut1_to_dut2_ip6} | ${dut2_to_dut1_ip6} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} +| | ... | ${dut2_to_dut1_ip6} | ${dut1_to_dut2_ip6} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +| TC02: DUT1 and DUT2 route IPv4 over Vhost to LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv6-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2,\ +| | ... | Eth-IPv6-ICMPv6, on TG-DUTn. +| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 with\ +| | ... | IPsec in between DUTS. +| | ... | [Ver] Case: ip6-ipsec-lispgpe-ip4 - main fib, virt2lisp\ +| | ... | Make TG send ICMPv6 Echo Req between its interfaces across\ +| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830, RFC4303. +| | ... +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Setup Topology And Lisp +| | And Setup Qemu DUT1 +| | ${lisp1_if_idx}= | resources.libraries.python.InterfaceUtil.get sw if index +| | ... | ${dut1_node} | ${lisp_gpe_int} +| | ${lisp2_if_idx}= | resources.libraries.python.InterfaceUtil.get sw if index +| | ... | ${dut2_node} | ${lisp_gpe_int} +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut1_node} | ${lisp1_if_idx} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} +| | ... | ${dut1_to_dut2_ip6} | ${dut2_to_dut1_ip6} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut2_node} | ${lisp2_if_idx} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} +| | ... | ${dut2_to_dut1_ip6} | ${dut1_to_dut2_ip6} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip4} | ${tg2_ip4} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip4} | ${tg1_ip4} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Setup Topology And Lisp +| | [Documentation] | Setup IPs and neighbors for interfaces on DUT1 and DUT2\ +| | ... | and then setup LISP. +| | Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | Set interfaces in 3-node circular topology up +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} +| | ... | ${prefix6} +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} +| | ... | ${prefix6} +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip4} +| | ... | ${prefix4} +| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} +| | ... | ${prefix6} +| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip4} +| | ... | ${prefix4} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip4} +| | ... | ${tg_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6} +| | ... | ${dut1_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip4} +| | ... | ${tg_to_dut1_mac} +| | Vpp All RA Suppress Link Layer | ${nodes} +| | Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_to_dut2_ip_static_adjacency} +| | ... | ${dut2_to_dut1_ip_static_adjacency} + +| Setup Qemu DUT1 +| | [Documentation] | Setup Vhosts on DUT1 and setup IP to one of them. Setup\ +| | ... | Qemu and bridge the vhosts. +| | ${vhost1}= | And Vpp Create Vhost User Interface | ${dut1_node} | ${sock1} +| | ${vhost2}= | And Vpp Create Vhost User Interface | ${dut1_node} | ${sock2} +| | Set Interface Address | ${dut1_node} | ${vhost2} | ${vhost_ip} | ${prefix4} +| | Set Interface State | ${dut1_node} | ${vhost1} | up +| | Set Interface State | ${dut1_node} | ${vhost2} | up +| | Create bridge domain | ${dut1_node} | ${bid} | learn=${TRUE} +| | Add interface to bridge domain | ${dut1_node} +| | ... | ${dut1_to_tg} | ${bid} | 0 +| | Add interface to bridge domain | ${dut1_node} +| | ... | ${vhost1} | ${bid} | 0 +| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2} +| | Set test variable | ${dst_vhost_mac} | ${vhost_mac} +| | Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} | ${sock2} diff --git a/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot new file mode 100644 index 0000000000..d5186ddbfd --- /dev/null +++ b/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot @@ -0,0 +1,201 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.L2Util +| Library | resources.libraries.python.LispUtil +| Library | resources.libraries.python.VPPUtil +| Library | resources.libraries.python.IPsecUtil +| Library | resources.libraries.python.VatJsonUtil +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.VhostUser +| Library | resources.libraries.python.QemuUtils +| Library | String +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/crypto/ipsec.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipsec_ipv6.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP | SKIP_VPP_PATCH +| ... +| Test Setup | Run Keywords | Set up functional test +| ... | AND | Vpp All Ra Suppress Link Layer | ${nodes} +| ... +| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node} +| ... +| Documentation | *IPv6 - ip6-ipsec-lispgpe-ip6 - main fib, +| ... | vrf (gpe_vni-to-vrf), phy2lisp, virt2lisp* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-IPSec-LISPGPE-IPv6-ICMPv6,\ +| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec.\ +| ... | IPsec is in transport mode. Tests cases are for IPsec configured both\ +| ... | on RLOC interface or lisp_gpe0 interface. +| ... | *[Ver] TG verification:* Packet is send from TG(if1) across the DUT1\ +| ... | via VM to DUT2 where it is forwarded to TG(if2). +| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303. + +*** Variables *** +| ${dut2_spi}= | ${1000} +| ${dut1_spi}= | ${1001} + +| ${ESP_PROTO}= | ${50} + +| ${sock1}= | /tmp/sock1 +| ${sock2}= | /tmp/sock2 + +| ${bid}= | 10 + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv6 over Vhost to LISP GPE tunnel using IPsec (transport) on RLOC Int. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv6-IPSec-LISPGPE-IPv6-ICMP on DUT1-DUT2, Eth-IPv6-ICMP\ +| | ... | on TG-DUTn. +| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 with\ +| | ... | IPsec in between DUTS. Create Qemu vm on DUT1 and configure bridge\ +| | ... | between two vhosts. +| | ... | [Ver] Case: ip6-ipsec-lispgpe-ip6 - main fib, virt2lisp\ +| | ... | Make TG send ICMPv6 Echo Req between its interfaces across\ +| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830, RFC4303. +| | ... +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Setup Topology +| | And Setup Qemu DUT1 +| | And Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_to_dut2_ip6_static_adjacency} +| | ... | ${dut2_to_dut1_ip6_static_adjacency} +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} +| | ... | ${dut1_to_dut2_ip6} | ${dut2_to_dut1_ip6} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} +| | ... | ${dut2_to_dut1_ip6} | ${dut1_to_dut2_ip6} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +| TC02: DUT1 and DUT2 route IPv6 over Vhost to LISP GPE tunnel using IPsec (transport) on lisp_gpe0 Int. +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv6-IPSec-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2,\ +| | ... | Eth-IPv6-ICMPv6 on TG-DUTn. +| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2 with\ +| | ... | IPsec in between DUTS. +| | ... | [Ver] Case: ip6-ipsec-lispgpe-ip6 - main fib, virt2lisp\ +| | ... | Make TG send ICMPv6 Echo Req between its interfaces across\ +| | ... | both DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830, RFC4303. +| | ... +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Setup Topology +| | And Setup Qemu DUT1 +| | And Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_to_dut2_ip6_static_adjacency} +| | ... | ${dut2_to_dut1_ip6_static_adjacency} +| | ${lisp1_if_idx}= | resources.libraries.python.InterfaceUtil.get sw if index +| | ... | ${dut1_node} | lisp_gpe0 +| | ${lisp2_if_idx}= | resources.libraries.python.InterfaceUtil.get sw if index +| | ... | ${dut2_node} | lisp_gpe0 +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | When Configure manual keyed connection for IPSec +| | ... | ${dut1_node} | ${lisp1_if_idx} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut1_spi} | ${dut2_spi} +| | ... | ${dut1_to_dut2_ip6} | ${dut2_to_dut1_ip6} +| | And Configure manual keyed connection for IPSec +| | ... | ${dut2_node} | ${lisp2_if_idx} | ${encr_alg} | ${encr_key} +| | ... | ${auth_alg} | ${auth_key} | ${dut2_spi} | ${dut1_spi} +| | ... | ${dut2_to_dut1_ip6} | ${dut1_to_dut2_ip6} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Setup Topology +| | Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | Set interfaces in 3-node circular topology up +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} +| | ... | ${prefix6} +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} +| | ... | ${prefix6} +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} +| | ... | ${prefix6} +| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} +| | ... | ${prefix6} +| | Vpp Set If IPv6 Addr | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} +| | ... | ${prefix6} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} +| | ... | ${tg_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} +| | ... | ${tg_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6} +| | ... | ${dut1_to_dut2_mac} +| | Vpp All RA Suppress Link Layer | ${nodes} + +| Setup Qemu DUT1 +| | [Documentation] | Setup Vhosts on DUT1 and setup IP to one of them. Setup \ +| | ... | Qemu and bridge the vhosts. +| | ${vhost1}= | And Vpp Create Vhost User Interface | ${dut1_node} | ${sock1} +| | ${vhost2}= | And Vpp Create Vhost User Interface | ${dut1_node} | ${sock2} +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${vhost2} | 2001:cdba:1::9 +| | ... | ${prefix6} +| | Set Interface State | ${dut1_node} | ${vhost1} | up +| | Set Interface State | ${dut1_node} | ${vhost2} | up +| | Vpp RA Suppress Link Layer | ${dut1_node} | ${vhost2} +| | Create bridge domain | ${dut1_node} | ${bid} | learn=${TRUE} +| | Add interface to bridge domain | ${dut1_node} +| | ... | ${dut1_to_tg} | ${bid} | 0 +| | Add interface to bridge domain | ${dut1_node} +| | ... | ${vhost1} | ${bid} | 0 +| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2} +| | Set test variable | ${dst_vhost_mac} | ${vhost_mac} +| | Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} | ${sock2} diff --git a/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot new file mode 100644 index 0000000000..073792618d --- /dev/null +++ b/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot @@ -0,0 +1,131 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.VPPUtil +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/vrf.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipv6.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP +| ... +| Test Setup | Run Keywords | Set up functional test +| ... | AND | Vpp All Ra Suppress Link Layer | ${nodes} +| ... +| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node} +| ... +| Documentation | *ip6-lispgpe-ip6 encapsulation test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv6-ICMPv6 on DUT1-DUT2,\ +| ... | Eth-IPv6-ICMPv6 on TG-DUTn for IPv6 routing over LISPoIPv6 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ +| ... | routing and static routes. LISPoIPv6 tunnel is configured between\ +| ... | DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in\ +| ... | both directions by TG on links to DUT1 and DUT2; on receive\ +| ... | TG verifies packets for correctness and their IPv6 src-addr, dst-addr\ +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using vhost interfaces +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv6-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on\ +| | ... | TG-DUTn. +| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2. +| | ... | [Ver] Case: ip6-ipsec-lispgpe-ip6 - main fib, virt2lisp +| | ... | Make TG send ICMPv6 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ +| | ... | received packets are correct. +| | ... +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Vpp Set If IPv6 Addr +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} | ${prefix6} +| | And Vpp Set If IPv6 Addr +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} | ${prefix6} +| | And Vpp Set If IPv6 Addr +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} | ${prefix6} +| | And Vpp Set If IPv6 Addr +| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} | ${prefix6} +| | And Add IP Neighbors +| | And Vpp All RA Suppress Link Layer | ${nodes} +| | When Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_to_dut2_ip6_static_adjacency} +| | ... | ${dut2_to_dut1_ip6_static_adjacency} +| | And Setup Qemu DUT1 +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Setup Qemu DUT1 +| | [Documentation] | Setup Vhosts on DUT1 and setup IP on one of them. Setup\ +| | ... | Qemu and bridge the vhosts. Optionally, you can set fib table ID\ +| | ... | where the vhost2 interface should be assigned to. +| | ... +| | [Arguments] | ${fib_table}=0 +| | ... +| | ${vhost1}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock1} +| | ${vhost2}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock2} +| | Assign Interface To Fib Table | ${dut1_node} +| | ... | ${vhost2} | ${fib_table} | ipv6=${TRUE} +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${vhost2} | ${vhost_ip} +| | ... | ${prefix6} +| | Set Interface State | ${dut1_node} | ${vhost1} | up +| | Set Interface State | ${dut1_node} | ${vhost2} | up +| | Create bridge domain | ${dut1_node} | ${bid} | learn=${TRUE} +| | Add interface to bridge domain | ${dut1_node} +| | ... | ${dut1_to_tg} | ${bid} | 0 +| | Add interface to bridge domain | ${dut1_node} +| | ... | ${vhost1} | ${bid} | 0 +| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2} +| | Set test variable | ${dst_vhost_mac} | ${vhost_mac} +| | Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} | ${sock2} + +| Add IP Neighbors +| | [Documentation] +| | ... | Add IP neighbors to physical interfaces on DUTs. +| | ... +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} +| | ... | ${tg_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} +| | ... | ${tg_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6} +| | ... | ${dut1_to_dut2_mac} diff --git a/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot new file mode 100644 index 0000000000..e0a6cd425d --- /dev/null +++ b/tests/vpp/func/vm_vhost/ip6/eth2p-ethip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot @@ -0,0 +1,138 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPUtil +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.VPPUtil +| Resource | resources/libraries/robot/shared/traffic.robot +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/vrf.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +# Import configuration and test data: +| Variables | resources/test_data/lisp/ipv6_lispgpe_ipv6/ipv6_lispgpe_ipv6.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | LISP +| ... +| Test Setup | Run Keywords | Set up functional test +| ... | AND | Vpp All Ra Suppress Link Layer | ${nodes} +| ... +| Test Teardown | Tear down LISP functional test with QEMU | ${vm_node} +| ... +| Documentation | *ip6-lispgpe-ip6 encapsulation test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv6-ICMPv6 on DUT1-DUT2,\ +| ... | Eth-IPv6-ICMPv6 on TG-DUTn for IPv6 routing over LISPoIPv6 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ +| ... | routing and static routes. LISPoIPv6 tunnel is configured between\ +| ... | DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in\ +| ... | both directions by TG on links to DUT1 and DUT2; on receive\ +| ... | TG verifies packets for correctness and their IPv6 src-addr, dst-addr\ +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Test Cases *** +| TC01: DUT1 and DUT2 route IPv6 bidirectionally over LISP GPE tunnel using vhost interfaces and VRF is enabled +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. +| | ... | [Enc] Eth-IPv6-LISPGPE-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on\ +| | ... | TG-DUTn. +| | ... | [Cfg] Configure IPv6 LISP static adjacencies on DUT1 and DUT2. +| | ... | [Ver] Case: ip6-lispgpe-ip6 - vrf, virt2lisp +| | ... | Make TG send ICMPv6 Echo Req between its interfaces across both\ +| | ... | DUTs and LISP GPE tunnel between them; verify IPv6 headers on\ +| | ... | received packets are correct. +| | ... | [Ref] RFC6830. +| | ... +| | ... +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | And Assign Interface To Fib Table | ${dut1_node} +| | ... | ${dut1_to_tg} | ${fib_table_1} | ipv6=${TRUE} +| | And Assign Interface To Fib Table | ${dut2_node} +| | ... | ${dut2_to_tg} | ${fib_table_1} | ipv6=${TRUE} +| | And Vpp Set If IPv6 Addr +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_to_dut2_ip6} | ${prefix6} +| | And Vpp Set If IPv6 Addr +| | ... | ${dut1_node} | ${dut1_to_tg} | ${dut1_to_tg_ip6} | ${prefix6} +| | And Vpp Set If IPv6 Addr +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_to_dut1_ip6} | ${prefix6} +| | And Vpp Set If IPv6 Addr +| | ... | ${dut2_node} | ${dut2_to_tg} | ${dut2_to_tg_ip6} | ${prefix6} +| | And Add IP Neighbors +| | And Vpp All RA Suppress Link Layer | ${nodes} +| | When Configure LISP GPE topology in 3-node circular topology +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${NONE} +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_to_dut2_ip6_static_adjacency} +| | ... | ${dut2_to_dut1_ip6_static_adjacency} +| | ... | ${dut1_dut2_vni} | ${fib_table_1} +| | And Setup Qemu DUT1 | ${fib_table_1} +| | Then Send packet and verify headers +| | ... | ${tg_node} | ${tg1_ip6} | ${tg2_ip6} +| | ... | ${tg_to_dut1} | ${tg_to_dut1_mac} | ${dst_vhost_mac} +| | ... | ${tg_to_dut2} | ${dut2_to_tg_mac} | ${tg_to_dut2_mac} +| | And Send packet and verify headers +| | ... | ${tg_node} | ${tg2_ip6} | ${tg1_ip6} +| | ... | ${tg_to_dut2} | ${tg_to_dut2_mac} | ${dut2_to_tg_mac} +| | ... | ${tg_to_dut1} | ${dut1_to_tg_mac} | ${tg_to_dut1_mac} + +*** Keywords *** +| Setup Qemu DUT1 +| | [Documentation] | Setup Vhosts on DUT1 and setup IP on one of them. Setup\ +| | ... | Qemu and bridge the vhosts. Optionally, you can set fib table ID\ +| | ... | where the vhost2 interface should be assigned to. +| | ... +| | [Arguments] | ${fib_table}=0 +| | ... +| | ${vhost1}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock1} +| | ${vhost2}= | Vpp Create Vhost User Interface | ${dut1_node} | ${sock2} +| | Assign Interface To Fib Table | ${dut1_node} +| | ... | ${vhost2} | ${fib_table} | ipv6=${TRUE} +| | Vpp Set If IPv6 Addr | ${dut1_node} | ${vhost2} | ${vhost_ip} +| | ... | ${prefix6} +| | Set Interface State | ${dut1_node} | ${vhost1} | up +| | Set Interface State | ${dut1_node} | ${vhost2} | up +| | Create bridge domain | ${dut1_node} | ${bid} | learn=${TRUE} +| | Add interface to bridge domain | ${dut1_node} +| | ... | ${dut1_to_tg} | ${bid} | 0 +| | Add interface to bridge domain | ${dut1_node} +| | ... | ${vhost1} | ${bid} | 0 +| | ${vhost_mac}= | Get Vhost User Mac By SW Index | ${dut1_node} | ${vhost2} +| | Set test variable | ${dst_vhost_mac} | ${vhost_mac} +| | Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} | ${sock2} + +| Add IP Neighbors +| | [Documentation] +| | ... | Add IP neighbors to physical interfaces on DUTs. +| | ... +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_tg} | ${tg1_ip6} +| | ... | ${tg_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_tg} | ${tg2_ip6} +| | ... | ${tg_to_dut2_mac} +| | Add IP Neighbor | ${dut1_node} | ${dut1_to_dut2} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_dut1_mac} +| | Add IP Neighbor | ${dut2_node} | ${dut2_to_dut1} | ${dut1_to_dut2_ip6} +| | ... | ${dut1_to_dut2_mac} diff --git a/tests/vpp/func/vm_vhost/l2bd/eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/l2bd/eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-func.robot new file mode 100644 index 0000000000..7eb7d3e857 --- /dev/null +++ b/tests/vpp/func/vm_vhost/l2bd/eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-func.robot @@ -0,0 +1,145 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/vm/double_qemu_setup.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | HW_ENV | VM_ENV | VPP_VM_ENV +| Test Setup | Set up functional test +| Test Teardown | Run Keywords | Show Packet Trace on All DUTs | ${nodes} +| ... | AND | Show vpp trace dump on all DUTs +| ... | AND | Stop and clear QEMU | ${dut_node} | ${vm_node} +| ... | AND | Verify VPP PID in Teardown +| Documentation | *L2 bridge domain with VLAN tag over VM test cases* +| ... +| ... | *[Top] Network Topologies:* TG=DUT 2-node circular topology +| ... | with double links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-dot1q-IPv4-ICMPv4 or +| ... | Eth-dot1q-IPv6-ICMPv6 on TG=DUT and on DUT=VM. +| ... | *[Cfg] DUT configuration:* DUT is configured with two bridge domains +| ... | (L2BD) with MAC learning enabled; each one with added VLAN +| ... | sub-interface towards TG and vhost-user interface to local VM. Configure +| ... | linux bridge on VM to pass traffic between both vhost-user interfaces. +| ... | *[Ver] TG verification:* Make TG send ICMPv4/ICMPv6 Echo Req between two +| ... | of its interfaces to be switched by DUT via VM; verify packets are +| ... | switched between these TG interfaces; on receive TG verifies packets for +| ... | correctness and their IPv4 src-addr, dst-addr, MAC addresses and +| ... | VLAN tag. +| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q. + +*** Variables *** +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 + +| ${vlan_id1}= | 110 +| ${vlan_wrong}= | 150 + +| ${sock1}= | /tmp/sock1 +| ${sock2}= | /tmp/sock2 + +| ${ip4_1}= | 192.168.100.1 +| ${ip4_2}= | 192.168.100.2 + +| ${ip6_1}= | 3ffe:63::1 +| ${ip6_2}= | 3ffe:63::2 + +*** Test Cases *** +| TC01: eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm - ipv4 +| | [Documentation] +| | ... | [Top] TG=DUT. +| | ... | [Enc] Eth-dot1q-IPv4-ICMPv4 on TG=DUT and on DUT=VM. +| | ... | [Cfg] On DUT configure two L2BDs (MAC learning enabled); first L2BD +| | ... | with Dot1Q tagged interface to TG-if1 and vhost-user interface to +| | ... | local VM, second one with vhost-user interface to local VM and Dot1Q +| | ... | tagged interface towards TG-if2. Configure linux bridge on VM to pass +| | ... | traffic between both vhost-user interfaces. +| | ... | [Ver] Make TG send ICMPv4 Echo Req tagged with one Dot1q tag +| | ... | from one of its interfaces to another one via DUT and VM; verify +| | ... | that packet is received. +| | ... | [Ref] IEEE 802.1q +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${vlan_id1} +| | And Configure vhost interfaces for L2BD forwarding +| | ... | ${dut_node} | ${sock1} | ${sock2} +| | And Configure VM for vhost L2BD forwarding +| | ... | ${dut_node} | ${sock1} | ${sock2} +| | And Add interface to bridge domain | ${dut_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut_node} | ${vhost_if1} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut_node} | ${vlan2_index} +| | ... | ${bd_id2} +| | And Add interface to bridge domain | ${dut_node} | ${vhost_if2} +| | ... | ${bd_id2} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} | ${ip4_1} | ${ip4_2} +| | ... | encaps=Dot1q | vlan1=${vlan_id1} | encaps_rx=Dot1q +| | And Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if1} | ${ip4_2} | ${ip4_1} +| | ... | encaps=Dot1q | vlan1=${vlan_id1} | encaps_rx=Dot1q + +| TC01: eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm - ipv6 +| | [Documentation] +| | ... | [Top] TG=DUT. +| | ... | [Enc] Eth-dot1q-IPv6-ICMPv6 on TG=DUT and on DUT=VM. +| | ... | [Cfg] On DUT configure two L2BDs (MAC learning enabled); first L2BD +| | ... | with Dot1Q tagged interface to TG-if1 and vhost-user interface to +| | ... | local VM, second one with vhost-user interface to local VM and Dot1Q +| | ... | tagged interface towards TG-if2. Configure linux bridge on VM to pass +| | ... | traffic between both vhost-user interfaces. +| | ... | [Ver] Make TG send ICMPv6 Echo Req tagged with one Dot1q tag +| | ... | from one of its interfaces to another one via DUT and VM; verify +| | ... | that packet is received. +| | ... | [Ref] IEEE 802.1q +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut_node} | ${dut_to_tg_if2} | ${vlan_id1} +| | And Configure vhost interfaces for L2BD forwarding +| | ... | ${dut_node} | ${sock1} | ${sock2} +| | And Configure VM for vhost L2BD forwarding +| | ... | ${dut_node} | ${sock1} | ${sock2} +| | And Add interface to bridge domain | ${dut_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut_node} | ${vhost_if1} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut_node} | ${vlan2_index} +| | ... | ${bd_id2} +| | And Add interface to bridge domain | ${dut_node} | ${vhost_if2} +| | ... | ${bd_id2} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} | ${ip6_1} | ${ip6_2} +| | ... | encaps=Dot1q | vlan1=${vlan_id1} | encaps_rx=Dot1q +| | And Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut_if2} | ${tg_to_dut_if1} | ${ip6_2} | ${ip6_1} +| | ... | encaps=Dot1q | vlan1=${vlan_id1} | encaps_rx=Dot1q + + + + diff --git a/tests/vpp/func/vm_vhost/l2bd/eth2p-dot1q-l2bdbasemaclrn-eth-4vhost-2vm-fds-provider-nets-func.robot b/tests/vpp/func/vm_vhost/l2bd/eth2p-dot1q-l2bdbasemaclrn-eth-4vhost-2vm-fds-provider-nets-func.robot new file mode 100644 index 0000000000..6bf594c0df --- /dev/null +++ b/tests/vpp/func/vm_vhost/l2bd/eth2p-dot1q-l2bdbasemaclrn-eth-4vhost-2vm-fds-provider-nets-func.robot @@ -0,0 +1,341 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/vm/double_qemu_setup.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/fds/default.robot +| Library | resources.libraries.python.Trace +| ... +| Force Tags | HW_ENV | VM_ENV | SKIP_PATCH +| ... +| Test Setup | Set up FDS functional test | ${nodes} +| ... +| Test Teardown | Tear down FDS functional test | ${nodes} +| ... | ${dut1_node} | ${qemu_node1} | ${dut2_node} | ${qemu_node2} +| ... +| Documentation | *Provider network FDS related.* +| ... +| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG +| ... | with one link between nodes. Test packets are sent in both directions +| ... | between namespaces in DUT1 and DUT2 with both positive and negative +| ... | scenarios tested. + +*** Variables *** +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 +| ${shg1}= | 3 +| ${shg2}= | 4 +| ${sock1}= | /tmp/sock1 +| ${sock2}= | /tmp/sock2 +| ${sock3}= | /tmp/sock3 +| ${sock4}= | /tmp/sock4 + +| ${bid_b}= | 23 +| ${bid_r}= | 24 + +| ${vlan_red}= | 50 +| ${vlan_blue}= | 60 + +| ${dut1_if_ip}= | 16.0.0.1 +| ${dut2_if_ip}= | 16.0.0.2 + +| ${dut1_blue1}= | 16.0.10.1 +| ${dut1_blue2}= | 16.0.10.2 +| ${dut1_red1}= | 16.0.10.3 +| ${dut1_red2}= | 16.0.10.4 + +| ${dut2_blue1}= | 16.0.20.1 +| ${dut2_blue2}= | 16.0.20.2 +| ${dut2_red1}= | 16.0.20.3 +| ${dut2_red2}= | 16.0.20.4 + +| ${namespace1}= | nmspace1 +| ${namespace2}= | nmspace2 +| ${namespace3}= | nmspace3 +| ${namespace4}= | nmspace4 + +| ${prefix_length}= | 16 + +*** Test Cases *** +| Provider network test cases with provider physical networks (VLAN) +| | [Documentation] | Ping among all ports inside the same network should pass. +| | ... | a) test l2 connectivity inside every network +| | ... | b) test l2 connectivity between networks +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO | VPP_VM_ENV +| | Given Configure path in 3-node circular topology | ${nodes['TG']} +| | ... | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if_ip} +| | ... | ${prefix_length} +| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${dut2_if_ip} +| | ... | ${prefix_length} +| | And Set Interface State | ${dut1_node} | ${dut1_to_dut2} | up +| | And Set Interface State | ${dut2_node} | ${dut2_to_dut1} | up +| | ${vhost_if1_DUT1}= | And Vpp Create Vhost User Interface +| | ... | ${dut1_node} | ${sock1} +| | ${vhost_if2_DUT1}= | And Vpp Create Vhost User Interface +| | ... | ${dut1_node} | ${sock2} +| | ${vhost_if3_DUT1}= | And Vpp Create Vhost User Interface +| | ... | ${dut1_node} | ${sock3} +| | ${vhost_if4_DUT1}= | And Vpp Create Vhost User Interface +| | ... | ${dut1_node} | ${sock4} +| | ${dut1_vhosts}= | And Create List | ${vhost_if1_DUT1} | ${vhost_if2_DUT1} +| | ... | ${vhost_if3_DUT1} | ${vhost_if4_DUT1} +| | ${vhost_if1_DUT2}= | And Vpp Create Vhost User Interface +| | ... | ${dut2_node} | ${sock1} +| | ${vhost_if2_DUT2}= | And Vpp Create Vhost User Interface +| | ... | ${dut2_node} | ${sock2} +| | ${vhost_if3_DUT2}= | And Vpp Create Vhost User Interface +| | ... | ${dut2_node} | ${sock3} +| | ${vhost_if4_DUT2}= | And Vpp Create Vhost User Interface +| | ... | ${dut2_node} | ${sock4} +| | ${dut2_vhosts}= | And Create List | ${vhost_if1_DUT2} | ${vhost_if2_DUT2} +| | ... | ${vhost_if3_DUT2} | ${vhost_if4_DUT2} +| | When Configure QEMU vhost and run it | ${dut1_node} +| | ... | ${sock1} +| | ... | ${sock2} +| | ... | ${sock3} +| | ... | ${sock4} +| | ... | ${dut1_blue1} +| | ... | ${dut1_blue2} +| | ... | ${dut1_red1} +| | ... | ${dut1_red2} +| | ... | ${prefix_length} +| | ... | qemu_node1 +| | ... | 04 +| | And Configure QEMU vhost and run it | ${dut2_node} +| | ... | ${sock1} +| | ... | ${sock2} +| | ... | ${sock3} +| | ... | ${sock4} +| | ... | ${dut2_blue1} +| | ... | ${dut2_blue2} +| | ... | ${dut2_red1} +| | ... | ${dut2_red2} +| | ... | ${prefix_length} +| | ... | qemu_node2 +| | ... | 06 +| | And Setup VLAN and BD on Dut | ${dut1_node} | ${dut1_to_dut2} +| | ... | @{dut1_vhosts} +| | And Setup VLAN and BD on Dut | ${dut2_node} | ${dut2_to_dut1} +| | ... | @{dut2_vhosts} +| | Then Positive Scenario Ping From DUT1 - Intra network +| | And Positive Scenario Ping From DUT1 - Inter network +| | And Positive Scenario Ping From DUT2 - Intra network +| | And Positive Scenario Ping From DUT2 - Inter network +| | And Negative Scenario Ping From DUT1 - Intra network +| | And Negative Scenario Ping From DUT1 - Inter network +| | And Negative Scenario Ping From DUT2 - Intra network +| | And Negative Scenario Ping From DUT2 - Inter network + +*** Keywords *** +| Setup VLAN and BD on Dut +| | [Documentation] | Setup VLAN and bridge domain on specific DUT and +| | ... | subsequently interconnect them properly. Also set VLAN tag +| | ... | rewrite on vhosts. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - Node where to setup VLAN and BD. Type: dict +| | ... | - interface - Interface where to create VLAN sub-interface. +| | ... | Type: string +| | ... | - vhosts - List containing vhost interfaces. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Setup VLAN and BD on Dut \| ${dut_node} \| GigabitEthernet0/6/0 \ +| | ... | \| @{vhosts} \| +| | ... +| | [Arguments] | ${dut_node} | ${interface} | @{vhosts} +| | Create bridge domain | ${dut_node} | ${bid_b} | learn=${TRUE} +| | Create bridge domain | ${dut_node} | ${bid_r} | learn=${TRUE} +| | ${interface_name}= | Get interface name | ${dut_node} | ${interface} +| | ${vlan1_name} | ${vlan1_index}= | Create Vlan Subinterface +| | ... | ${dut_node} | ${interface_name} | ${vlan_blue} +| | ${vlan2_name} | ${vlan2_index}= | Create Vlan Subinterface +| | ... | ${dut_node} | ${interface_name} | ${vlan_red} +| | L2 Vlan Tag Rewrite | ${dut_node} | @{vhosts}[0] | push-1 +| | ... | tag1_id=${vlan_blue} +| | L2 Vlan Tag Rewrite | ${dut_node} | @{vhosts}[1] | push-1 +| | ... | tag1_id=${vlan_blue} +| | L2 Vlan Tag Rewrite | ${dut_node} | @{vhosts}[2] | push-1 +| | ... | tag1_id=${vlan_red} +| | L2 Vlan Tag Rewrite | ${dut_node} | @{vhosts}[3] | push-1 +| | ... | tag1_id=${vlan_red} +| | Add interface to bridge domain | ${dut_node} +| | ... | ${vlan1_index} | ${bid_b} | 0 +| | Add interface to bridge domain | ${dut_node} +| | ... | @{vhosts}[0] | ${bid_b} | 0 +| | Add interface to bridge domain | ${dut_node} +| | ... | @{vhosts}[1] | ${bid_b} | 0 +| | Add interface to bridge domain | ${dut_node} +| | ... | ${vlan2_index} | ${bid_r} | 0 +| | Add interface to bridge domain | ${dut_node} +| | ... | @{vhosts}[2] | ${bid_r} | 0 +| | Add interface to bridge domain | ${dut_node} +| | ... | @{vhosts}[3] | ${bid_r} | 0 + +| Positive Scenario Ping From DUT1 - Intra network +| | [Documentation] | Send ping packets from specified namespaces to other in +| | ... | order to test connectivity. +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue2} | ${namespace1} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue1} | ${namespace2} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red2} | ${namespace3} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red1} | ${namespace4} + +| Positive Scenario Ping From DUT1 - Inter network +| | [Documentation] | Send ping packets from specified namespaces to other in +| | ... | order to test connectivity. +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} | ${namespace1} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} | ${namespace1} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} | ${namespace2} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} | ${namespace2} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} | ${namespace3} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} | ${namespace3} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} | ${namespace4} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} | ${namespace4} + +| Positive Scenario Ping From DUT2 - Intra network +| | [Documentation] | Send ping packets from specified namespaces to other in +| | ... | order to test connectivity. +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue2} | ${namespace1} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue1} | ${namespace2} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red2} | ${namespace3} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red1} | ${namespace4} + +| Positive Scenario Ping From DUT2 - Inter network +| | [Documentation] | Send ping packets from specified namespaces to other in +| | ... | order to test connectivity. +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} | ${namespace1} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} | ${namespace1} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} | ${namespace2} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} | ${namespace2} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} | ${namespace3} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} | ${namespace3} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} | ${namespace4} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} | ${namespace4} + +| Negative Scenario Ping From DUT1 - Intra network +| | [Documentation] | Send ping packets from specified namespaces to other in +| | ... | order to test unreachability of namespaces. +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red1} +| | ... | ${namespace1} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red2} +| | ... | ${namespace1} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red1} +| | ... | ${namespace2} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red2} +| | ... | ${namespace2} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue1} +| | ... | ${namespace3} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue2} +| | ... | ${namespace3} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue1} +| | ... | ${namespace4} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue2} +| | ... | ${namespace4} + +| Negative Scenario Ping From DUT1 - Inter network +| | [Documentation] | Send ping packets from specified namespaces to other in +| | ... | order to test unreachability of namespaces. +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} +| | ... | ${namespace1} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} +| | ... | ${namespace1} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} +| | ... | ${namespace2} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} +| | ... | ${namespace2} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} +| | ... | ${namespace3} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} +| | ... | ${namespace3} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} +| | ... | ${namespace4} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} +| | ... | ${namespace4} + +| Negative Scenario Ping From DUT2 - Intra network +| | [Documentation] | Send ping packets from specified namespaces to other in +| | ... | order to test unreachability of namespaces. +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red1} +| | ... | ${namespace1} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red2} +| | ... | ${namespace1} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red1} +| | ... | ${namespace2} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red2} +| | ... | ${namespace2} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue1} +| | ... | ${namespace3} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue2} +| | ... | ${namespace3} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue1} +| | ... | ${namespace4} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue2} +| | ... | ${namespace4} + +| Negative Scenario Ping From DUT2 - Inter network +| | [Documentation] | Send ping packets from specified namespaces to other in +| | ... | order to test unreachability of namespaces. +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} +| | ... | ${namespace1} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} +| | ... | ${namespace1} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} +| | ... | ${namespace2} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} +| | ... | ${namespace2} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} +| | ... | ${namespace3} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} +| | ... | ${namespace3} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} +| | ... | ${namespace4} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} +| | ... | ${namespace4} diff --git a/tests/vpp/func/vm_vhost/l2bd/eth2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/l2bd/eth2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot new file mode 100644 index 0000000000..678e268235 --- /dev/null +++ b/tests/vpp/func/vm_vhost/l2bd/eth2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot @@ -0,0 +1,110 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | HW_ENV | VM_ENV | VPP_VM_ENV +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2 bridge-domain test cases* +| ... +| ... | *[Top] Network Topologies:* TG=DUT=VM 3-node topology with VM +| ... | and double parallel links. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of +| ... | IPv4; Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply +| ... | to all links. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge-domains +| ... | (L2BD) switching combined with MAC learning enabled. +| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets +| ... | are sent in both directions by TG on links to DUT1 via VM; on +| ... | receive TG verifies packets for correctness and their IPv4 (IPv6) +| ... | src-addr, dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 + +| ${sock1}= | /tmp/sock1 +| ${sock2}= | /tmp/sock2 + +*** Test Cases *** +| TC01: DUT with two L2BDs (MAC learn) switches ICMPv4 between TG and VM links +| | [Documentation] +| | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 configure \ +| | ... | two L2BDs with MAC learning, each with vhost-user i/f to local +| | ... | VM and i/f to TG; configure VM to loop pkts back betwen its two +| | ... | virtio i/fs. [Ver] Make TG verify ICMPv4 Echo Req pkts are +| | ... | switched thru DUT1 and VM in both directions and are correct on +| | ... | receive. [Ref] +| | ... +| | [Teardown] | Run Keywords | Stop and clear QEMU | ${dut_node} | ${vm_node} +| | ... | AND | Tear down functional test +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | When Configure vhost interfaces for L2BD forwarding | ${dut_node} +| | ... | ${sock1} +| | ... | ${sock2} +| | And Create bridge domain | ${dut_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut_node} | ${vhost_if1} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut_node} | ${bd_id2} +| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2} +| | ... | ${bd_id2} +| | And Add interface to bridge domain | ${dut_node} | ${vhost_if2} +| | ... | ${bd_id2} +| | And Configure VM for vhost L2BD forwarding | ${dut_node} | ${sock1} +| | ... | ${sock2} +| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2} + +| TC02: DUT with two L2BDs (MAC learn) switches ICMPv6 between TG and VM links +| | [Documentation] +| | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv6-ICMPv6. [Cfg] On DUT1 configure \ +| | ... | two L2BDs with MAC learning, each with vhost-user i/f to local +| | ... | VM and i/f to TG; configure VM to loop pkts back betwen its two +| | ... | virtio i/fs. [Ver] Make TG verify ICMPv6 Echo Req pkts are +| | ... | switched thru DUT1 and VM in both directions and are correct on +| | ... | receive. [Ref] +| | ... +| | [Teardown] | Run Keywords | Stop and clear QEMU | ${dut_node} | ${vm_node} +| | ... | AND | Tear down functional test +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | When Configure vhost interfaces for L2BD forwarding | ${dut_node} +| | ... | ${sock1} +| | ... | ${sock2} +| | And Create bridge domain | ${dut_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut_node} | ${vhost_if1} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut_node} | ${bd_id2} +| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2} +| | ... | ${bd_id2} +| | And Add interface to bridge domain | ${dut_node} | ${vhost_if2} +| | ... | ${bd_id2} +| | And Configure VM for vhost L2BD forwarding | ${dut_node} | ${sock1} +| | ... | ${sock2} +| | Then Send ICMPv6 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2} diff --git a/tests/vpp/func/vm_vhost/l2bd/eth2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/l2bd/eth2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot new file mode 100644 index 0000000000..22ec61d395 --- /dev/null +++ b/tests/vpp/func/vm_vhost/l2bd/eth2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot @@ -0,0 +1,151 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | HW_ENV | VM_ENV | VPP_VM_ENV +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2 bridge-domain test cases* +| ... +| ... | *[Top] Network Topologies:* TG=DUT=VM 3-node topology with VM +| ... | and double parallel links. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of +| ... | IPv4; Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply +| ... | to all links. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge-domains +| ... | (L2BD) switching combined with static MACs. +| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets +| ... | are sent in both directions by TG on links to DUT1 via VM; on +| ... | receive TG verifies packets for correctness and their IPv4 (IPv6) +| ... | src-addr, dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 + +| ${sock1}= | /tmp/sock1 +| ${sock2}= | /tmp/sock2 + +*** Test Cases *** +| TC01: DUT with two L2BDs (static MACs) switches ICMPv4 between TG and VM links +| | [Documentation] +| | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 configure \ +| | ... | two L2BDs with static MACs, each with vhost-user i/f to local VM +| | ... | and i/f to TG; configure VM to loop pkts back betwen its two +| | ... | virtio i/fs. [Ver] Make TG verify ICMPv4 Echo Req pkts are +| | ... | switched thru DUT1 and VM in both directions and are correct on +| | ... | receive. [Ref] +| | ... +| | [Teardown] | Run Keywords | Stop and clear QEMU | ${dut_node} | ${vm_node} +| | ... | AND | Tear down functional test +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | When Configure vhost interfaces for L2BD forwarding | ${dut_node} +| | ... | ${sock1} | ${sock2} +| | And Create bridge domain | ${dut_node} | ${bd_id1} +| | ... | learn=${FALSE} +| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut_node} | ${vhost_if1} | ${bd_id1} +| | And Add destination port to L2FIB | ${tg_node} +| | ... | ${tg_to_dut_if1} +| | ... | ${dut_node} +| | ... | ${dut_to_tg_if1} +| | ... | ${bd_id1} +| | And Add destination port to L2FIB | ${tg_node} +| | ... | ${tg_to_dut_if2} +| | ... | ${dut_node} +| | ... | ${vhost_if1} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut_node} | ${bd_id2} +| | ... | learn=${FALSE} +| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2} +| | ... | ${bd_id2} +| | And Add interface to bridge domain | ${dut_node} | ${vhost_if2} +| | ... | ${bd_id2} +| | And Add destination port to L2FIB | ${tg_node} +| | ... | ${tg_to_dut_if2} +| | ... | ${dut_node} +| | ... | ${dut_to_tg_if2} +| | ... | ${bd_id2} +| | And Add destination port to L2FIB | ${tg_node} +| | ... | ${tg_to_dut_if1} +| | ... | ${dut_node} +| | ... | ${vhost_if2} +| | ... | ${bd_id2} +| | And Configure VM for vhost L2BD forwarding | ${dut_node} | ${sock1} +| | ... | ${sock2} +| | Then Send ICMPv4 bidirectionally and verify received packets +| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} + +| TC02: DUT with two L2BDs (static MACs) switches ICMPv6 between TG and VM links +| | [Documentation] +| | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv6-ICMPv6. [Cfg] On DUT1 configure \ +| | ... | two L2BDs with static MACs, each with vhost-user i/f to local VM +| | ... | and i/f to TG; configure VM to loop pkts back betwen its two +| | ... | virtio i/fs. [Ver] Make TG verify ICMPv6 Echo Req pkts are +| | ... | switched thru DUT1 and VM in both directions and are correct on +| | ... | receive. [Ref] +| | ... +| | [Teardown] | Run Keywords | Stop and clear QEMU | ${dut_node} | ${vm_node} +| | ... | AND | Tear down functional test +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | When Configure vhost interfaces for L2BD forwarding | ${dut_node} +| | ... | ${sock1} +| | ... | ${sock2} +| | And Create bridge domain | ${dut_node} | ${bd_id1} +| | ... | learn=${FALSE} +| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut_node} | ${vhost_if1} +| | ... | ${bd_id1} +| | And Add destination port to L2FIB | ${tg_node} +| | ... | ${tg_to_dut_if1} +| | ... | ${dut_node} +| | ... | ${dut_to_tg_if1} +| | ... | ${bd_id1} +| | And Add destination port to L2FIB | ${tg_node} +| | ... | ${tg_to_dut_if2} +| | ... | ${dut_node} +| | ... | ${vhost_if1} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut_node} | ${bd_id2} +| | ... | learn=${FALSE} +| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2} +| | ... | ${bd_id2} +| | And Add interface to bridge domain | ${dut_node} | ${vhost_if2} | ${bd_id2} +| | And Add destination port to L2FIB | ${tg_node} +| | ... | ${tg_to_dut_if2} +| | ... | ${dut_node} +| | ... | ${dut_to_tg_if2} +| | ... | ${bd_id2} +| | And Add destination port to L2FIB | ${tg_node} +| | ... | ${tg_to_dut_if1} +| | ... | ${dut_node} +| | ... | ${vhost_if2} +| | ... | ${bd_id2} +| | And Configure VM for vhost L2BD forwarding | ${dut_node} | ${sock1} +| | ... | ${sock2} +| | Then Send ICMPv6 bidirectionally and verify received packets +| | ... | ${tg_node} | ${tg_to_dut_if1} | ${tg_to_dut_if2} diff --git a/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4-l2bdbase-vhost-client-reconnect-2vm-func.robot b/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4-l2bdbase-vhost-client-reconnect-2vm-func.robot new file mode 100644 index 0000000000..4609aa10d2 --- /dev/null +++ b/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4-l2bdbase-vhost-client-reconnect-2vm-func.robot @@ -0,0 +1,231 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/overlay/vxlan.robot +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO | VPP_VM_ENV +| Test Setup | Set up functional test +| Test Teardown | Run Keywords +| ... | resources.libraries.python.QemuUtils.Qemu Kill All | ${dut_node} | AND +| ... | Tear down functional test +| Documentation | *Vhost-User Interface Traffic Tests* +| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links +| ... | between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-VXLAN-ETH-IP on TG-DUT link. +| ... | ETH-IP on VirtualEthernet-VM interface. +| ... | *[Cfg] DUT configuration:* On DUT is running 2 VM with 2 vhost-user +| ... | interface on each VM. DUT is configured with VXLAN and vhost-user +| ... | interfaces in bridge-domain (L2BD). +| ... | *[Cfg] VM configuration:* VM has both vhost-user interfaces added into +| ... | Linux Bridge. +| ... | *[Ver] TG verification:* +| ... | VXLAN packet is send to DUT where is decapsulated and send bridged to +| ... | vhost-user inteface. VM forwards frame to its second interface and VPP +| ... | encapsulates it to another VXLAN tunnel. Packets +| ... | are sent and received by TG on link to DUT. + +*** Variables *** +| ${tg_if1_ip}= | 192.168.0.1 +| ${dut_if1_ip}= | 192.168.0.2 +| ${prefix_length}= | ${24} + +| ${sock_vm1_1}= | /tmp/sock1 +| ${sock_vm1_2}= | /tmp/sock2 +| ${sock_vm2_1}= | /tmp/sock3 +| ${sock_vm2_2}= | /tmp/sock4 + +*** Test Cases *** +| TC01: Qemu reconnects to VPPs vhost-user when Qemu is killed and restarted +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And Set Interface Address | ${dut_node} | ${dut_to_tg_if1} | ${dut_if1_ip} +| | ... | ${prefix_length} +| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${tg_if1_ip} +| | ... | ${tg_to_dut_if1_mac} +| | ${vxlan1}= | And Create VXLAN interface | ${dut_node} | ${101} +| | ... | ${dut_if1_ip} | ${tg_if1_ip} +| | ${vxlan2}= | And Create VXLAN interface | ${dut_node} | ${102} +| | ... | ${dut_if1_ip} | ${tg_if1_ip} +| | ${vxlan3}= | And Create VXLAN interface | ${dut_node} | ${103} +| | ... | ${dut_if1_ip} | ${tg_if1_ip} +| | ${vxlan4}= | And Create VXLAN interface | ${dut_node} | ${104} +| | ... | ${dut_if1_ip} | ${tg_if1_ip} +| | And Set Interface State | ${dut_node} | ${vxlan1} | up +| | And Set Interface State | ${dut_node} | ${vxlan2} | up +| | And Set Interface State | ${dut_node} | ${vxlan3} | up +| | And Set Interface State | ${dut_node} | ${vxlan4} | up +| | ${vhost_if1}= | And Vpp Create Vhost User Interface +| | ... | ${dut_node} | ${sock_vm1_1} +| | ${vhost_if2}= | And Vpp Create Vhost User Interface +| | ... | ${dut_node} | ${sock_vm1_2} +| | ${vhost_if3}= | And Vpp Create Vhost User Interface +| | ... | ${dut_node} | ${sock_vm2_1} +| | ${vhost_if4}= | And Vpp Create Vhost User Interface +| | ... | ${dut_node} | ${sock_vm2_2} +| | And Set Interface State | ${dut_node} | ${vhost_if1} | up +| | And Set Interface State | ${dut_node} | ${vhost_if2} | up +| | And Set Interface State | ${dut_node} | ${vhost_if3} | up +| | And Set Interface State | ${dut_node} | ${vhost_if4} | up +| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${101} | ${vxlan1} +| | ... | ${vhost_if1} +| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${102} | ${vxlan2} +| | ... | ${vhost_if2} +| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${103} | ${vxlan3} +| | ... | ${vhost_if3} +| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${104} | ${vxlan4} +| | ... | ${vhost_if4} +| | And Configure QEMU vhost and run it VM | ${dut_node} | ${sock_vm1_1} +| | ... | ${sock_vm1_2} | ${1} +| | And Configure QEMU vhost and run it VM | ${dut_node} | ${sock_vm2_1} +| | ... | ${sock_vm2_2} | ${2} +| | And Check traffic through VM +| | When Run keyword | qemu-1.Qemu Kill +| | ${vm1}= | And Run Keyword | qemu-1.Qemu Start +| | ${vhost_int_1}= | And Get Vhost User If Name By Sock | ${vm1} +| | ... | ${sock_vm1_1} +| | ${vhost_int_2}= | And Get Vhost User If Name By Sock | ${vm1} +| | ... | ${sock_vm1_2} +| | And Linux Add Bridge | ${vm1} | br0 | ${vhost_int_1} | ${vhost_int_2} +| | And Set Interface State | ${vm1} | ${vhost_int_1} | up | if_type=name +| | And Set Interface State | ${vm1} | ${vhost_int_2} | up | if_type=name +| | Then Check traffic through VM + + +| TC02: VPP reconnects to Qemu vhost-user when Restart VPP and reconfigured +| | [Tags] | EXPECTED_FAILING +| | [Documentation] +| | ... | *Failing:* Qemu doesn't support reconnect prior to version 2.7. +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | And Set Interface Address | ${dut_node} | ${dut_to_tg_if1} | ${dut_if1_ip} +| | ... | ${prefix_length} +| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${tg_if1_ip} +| | ... | ${tg_to_dut_if1_mac} +| | ${vxlan1}= | And Create VXLAN interface | ${dut_node} | ${101} +| | ... | ${dut_if1_ip} | ${tg_if1_ip} +| | ${vxlan2}= | And Create VXLAN interface | ${dut_node} | ${102} +| | ... | ${dut_if1_ip} | ${tg_if1_ip} +| | ${vxlan3}= | And Create VXLAN interface | ${dut_node} | ${103} +| | ... | ${dut_if1_ip} | ${tg_if1_ip} +| | ${vxlan4}= | And Create VXLAN interface | ${dut_node} | ${104} +| | ... | ${dut_if1_ip} | ${tg_if1_ip} +| | And Set Interface State | ${dut_node} | ${vxlan1} | up +| | And Set Interface State | ${dut_node} | ${vxlan2} | up +| | And Set Interface State | ${dut_node} | ${vxlan3} | up +| | And Set Interface State | ${dut_node} | ${vxlan4} | up +| | ${vhost_if1}= | And Vpp Create Vhost User Interface | ${dut_node} +| | ... | ${sock_vm1_1} +| | ${vhost_if2}= | And Vpp Create Vhost User Interface | ${dut_node} +| | ... | ${sock_vm1_2} +| | ${vhost_if3}= | And Vpp Create Vhost User Interface | ${dut_node} +| | ... | ${sock_vm2_1} +| | ${vhost_if4}= | And Vpp Create Vhost User Interface | ${dut_node} +| | ... | ${sock_vm2_2} +| | And Set Interface State | ${dut_node} | ${vhost_if1} | up +| | And Set Interface State | ${dut_node} | ${vhost_if2} | up +| | And Set Interface State | ${dut_node} | ${vhost_if3} | up +| | And Set Interface State | ${dut_node} | ${vhost_if4} | up +| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${101} | ${vxlan1} +| | ... | ${vhost_if1} +| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${102} | ${vxlan2} +| | ... | ${vhost_if2} +| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${103} | ${vxlan3} +| | ... | ${vhost_if3} +| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${104} | ${vxlan4} +| | ... | ${vhost_if4} +| | And Configure QEMU vhost and run it VM | ${dut_node} | ${sock_vm1_1} +| | ... | ${sock_vm1_2} | ${1} +| | And Configure QEMU vhost and run it VM | ${dut_node} | ${sock_vm2_1} +| | ... | ${sock_vm2_2} | ${2} +| | And Check traffic through VM +| | And Verify VPP PID in Teardown +| | When Setup All Duts | ${nodes} +| | And Save VPP PIDs +| | And Set interfaces in 2-node circular topology up +| | And Set Interface Address | ${dut_node} | ${dut_to_tg_if1} | ${dut_if1_ip} +| | ... | ${prefix_length} +| | And Add IP Neighbor | ${dut_node} | ${dut_to_tg_if1} | ${tg_if1_ip} +| | ... | ${tg_to_dut_if1_mac} +| | ${vxlan1}= | And Create VXLAN interface | ${dut_node} | ${101} +| | ... | ${dut_if1_ip} | ${tg_if1_ip} +| | ${vxlan2}= | And Create VXLAN interface | ${dut_node} | ${102} +| | ... | ${dut_if1_ip} | ${tg_if1_ip} +| | ${vxlan3}= | And Create VXLAN interface | ${dut_node} | ${103} +| | ... | ${dut_if1_ip} | ${tg_if1_ip} +| | ${vxlan4}= | And Create VXLAN interface | ${dut_node} | ${104} +| | ... | ${dut_if1_ip} | ${tg_if1_ip} +| | And Set Interface State | ${dut_node} | ${vxlan1} | up +| | And Set Interface State | ${dut_node} | ${vxlan2} | up +| | And Set Interface State | ${dut_node} | ${vxlan3} | up +| | And Set Interface State | ${dut_node} | ${vxlan4} | up +| | ${vhost_if1}= | And Vpp Create Vhost User Interface | ${dut_node} +| | ... | ${sock_vm1_1} +| | ${vhost_if2}= | And Vpp Create Vhost User Interface | ${dut_node} +| | ... | ${sock_vm1_2} +| | ${vhost_if3}= | And Vpp Create Vhost User Interface | ${dut_node} +| | ... | ${sock_vm2_1} +| | ${vhost_if4}= | And Vpp Create Vhost User Interface | ${dut_node} +| | ... | ${sock_vm2_2} +| | And Set Interface State | ${dut_node} | ${vhost_if1} | up +| | And Set Interface State | ${dut_node} | ${vhost_if2} | up +| | And Set Interface State | ${dut_node} | ${vhost_if3} | up +| | And Set Interface State | ${dut_node} | ${vhost_if4} | up +| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${101} | ${vxlan1} +| | ... | ${vhost_if1} +| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${102} | ${vxlan2} +| | ... | ${vhost_if2} +| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${103} | ${vxlan3} +| | ... | ${vhost_if3} +| | And Vpp Add L2 Bridge Domain | ${dut_node} | ${104} | ${vxlan4} +| | ... | ${vhost_if4} +| | Then Check traffic through VM + + +*** Keywords *** +| Configure QEMU vhost and run it VM +| | [Arguments] | ${dut_node} | ${sock1} | ${sock2} | ${qemu_id} +| | Import Library | resources.libraries.python.QemuUtils | qemu_id=${qemu_id} +| | ... | WITH NAME | qemu-${qemu_id} +| | ${q_add_vhost}= | Replace Variables | qemu-${qemu_id}.Qemu Add Vhost User If +| | ${q_set_node}= | Replace Variables | qemu-${qemu_id}.Qemu Set Node +| | ${q_start}= | Replace Variables | qemu-${qemu_id}.Qemu Start +| | Run keyword | ${q_set_node} | ${dut_node} +| | Run keyword | ${q_add_vhost} | ${sock1} +| | Run keyword | ${q_add_vhost} | ${sock2} +| | ${vm}= | Run keyword | ${q_start} +| | ${vhost1}= | Get Vhost User If Name By Sock | ${vm} | ${sock1} +| | ${vhost2}= | Get Vhost User If Name By Sock | ${vm} | ${sock2} +| | Linux Add Bridge | ${vm} | br0 | ${vhost1} | ${vhost2} +| | Set Interface State | ${vm} | ${vhost1} | up | if_type=name +| | Set Interface State | ${vm} | ${vhost2} | up | if_type=name +| | Set Test Variable | ${qemu-${qemu_id}} | ${vm} + +| Check traffic through VM +| | [Documentation] | Send VXLAN traffic through both configured VMs. +| | Send VXLAN encapsulated packet and verify received packet | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} +| | ... | ${tg_if1_ip} | ${dut_if1_ip} | ${101} +| | ... | ${dut_if1_ip} | ${tg_if1_ip} | ${102} +| | Send VXLAN encapsulated packet and verify received packet | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1} +| | ... | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} +| | ... | ${tg_if1_ip} | ${dut_if1_ip} | ${103} +| | ... | ${dut_if1_ip} | ${tg_if1_ip} | ${104} diff --git a/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4vxlan-l2bdbasemaclrn--eth-4vhost-2vm-fds-tenant-nets-func.robot b/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4vxlan-l2bdbasemaclrn--eth-4vhost-2vm-fds-tenant-nets-func.robot new file mode 100644 index 0000000000..e58e6ed7c2 --- /dev/null +++ b/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4vxlan-l2bdbasemaclrn--eth-4vhost-2vm-fds-tenant-nets-func.robot @@ -0,0 +1,333 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/vm/double_qemu_setup.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/fds/default.robot +| Library | resources.libraries.python.Trace +| ... +| Force Tags | HW_ENV | VM_ENV | SKIP_PATCH +| ... +| Test Setup | Set up FDS functional test | ${nodes} +| ... +| Test Teardown | Tear down FDS functional test | ${nodes} +| ... | ${dut1_node} | ${qemu_node1} | ${dut2_node} | ${qemu_node2} +| ... +| Documentation | *Tenant network FDS related.* +| ... +| ... | Test suite uses 3-node topology TG - DUT1 - DUT2 - TG +| ... | with one link between nodes. Test packets are sent in both directions +| ... | between namespaces in DUT1 and DUT2 with both positive and negative +| ... | scenarios tested. + +*** Variables *** +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 +| ${shg1}= | 3 +| ${shg2}= | 4 +| ${sock1}= | /tmp/sock1 +| ${sock2}= | /tmp/sock2 +| ${sock3}= | /tmp/sock3 +| ${sock4}= | /tmp/sock4 + +| ${vni_blue}= | 23 +| ${vni_red}= | 24 + +| ${bid_b}= | 23 +| ${bid_r}= | 24 + +| ${dut1_if_ip}= | 16.0.0.1 +| ${dut2_if_ip}= | 16.0.0.2 + +| ${dut1_blue1}= | 16.0.10.1 +| ${dut1_blue2}= | 16.0.10.2 +| ${dut1_red1}= | 16.0.10.3 +| ${dut1_red2}= | 16.0.10.4 + +| ${dut2_blue1}= | 16.0.20.1 +| ${dut2_blue2}= | 16.0.20.2 +| ${dut2_red1}= | 16.0.20.3 +| ${dut2_red2}= | 16.0.20.4 + +| ${namespace1}= | nmspace1 +| ${namespace2}= | nmspace2 +| ${namespace3}= | nmspace3 +| ${namespace4}= | nmspace4 + +| ${prefix_length}= | 16 + +*** Test Cases *** +| L2 test cases with tenant networks (VXLAN) +| | [Documentation] | Ping among all ports inside the same network should pass. +| | ... | a) test l2 connectivity inside every network +| | ... | b) test l2 connectivity between networks +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO | VPP_VM_ENV +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set Interface Address +| | ... | ${dut1_node} | ${dut1_to_dut2} | ${dut1_if_ip} | ${prefix_length} +| | And Set Interface Address +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${dut2_if_ip} | ${prefix_length} +| | And Set Interface State | ${dut1_node} | ${dut1_to_dut2} | up +| | And Set Interface State | ${dut2_node} | ${dut2_to_dut1} | up +| | ${vhost_if1_DUT1}= | And Vpp Create Vhost User Interface +| | ... | ${dut1_node} | ${sock1} +| | ${vhost_if2_DUT1}= | And Vpp Create Vhost User Interface +| | ... | ${dut1_node} | ${sock2} +| | ${vhost_if3_DUT1}= | And Vpp Create Vhost User Interface +| | ... | ${dut1_node} | ${sock3} +| | ${vhost_if4_DUT1}= | And Vpp Create Vhost User Interface +| | ... | ${dut1_node} | ${sock4} +| | ${dut1_vhosts}= | And Create List | ${vhost_if1_DUT1} | ${vhost_if2_DUT1} +| | ... | ${vhost_if3_DUT1} | ${vhost_if4_DUT1} +| | ${vhost_if1_DUT2}= | And Vpp Create Vhost User Interface +| | ... | ${dut2_node} | ${sock1} +| | ${vhost_if2_DUT2}= | And Vpp Create Vhost User Interface +| | ... | ${dut2_node} | ${sock2} +| | ${vhost_if3_DUT2}= | And Vpp Create Vhost User Interface +| | ... | ${dut2_node} | ${sock3} +| | ${vhost_if4_DUT2}= | And Vpp Create Vhost User Interface +| | ... | ${dut2_node} | ${sock4} +| | ${dut2_vhosts}= | And Create List | ${vhost_if1_DUT2} | ${vhost_if2_DUT2} +| | ... | ${vhost_if3_DUT2} | ${vhost_if4_DUT2} +| | When Configure QEMU vhost and run it | ${dut1_node} +| | ... | ${sock1} +| | ... | ${sock2} +| | ... | ${sock3} +| | ... | ${sock4} +| | ... | ${dut1_blue1} +| | ... | ${dut1_blue2} +| | ... | ${dut1_red1} +| | ... | ${dut1_red2} +| | ... | ${prefix_length} +| | ... | qemu_node1 +| | ... | 04 +| | And Configure QEMU vhost and run it | ${dut2_node} +| | ... | ${sock1} +| | ... | ${sock2} +| | ... | ${sock3} +| | ... | ${sock4} +| | ... | ${dut2_blue1} +| | ... | ${dut2_blue2} +| | ... | ${dut2_red1} +| | ... | ${dut2_red2} +| | ... | ${prefix_length} +| | ... | qemu_node2 +| | ... | 06 +| | And Setup VXLAN and BD on Dut | ${dut1_node} | ${dut1_if_ip} | ${dut2_if_ip} +| | ... | @{dut1_vhosts} +| | And Setup VXLAN and BD on Dut | ${dut2_node} | ${dut2_if_ip} | ${dut1_if_ip} +| | ... | @{dut2_vhosts} +| | Then Positive Scenario Ping From DUT1 - Intra network +| | And Positive Scenario Ping From DUT1 - Inter network +| | And Positive Scenario Ping From DUT2 - Intra network +| | And Positive Scenario Ping From DUT2 - Inter network +| | And Negative Scenario Ping From DUT1 - Intra network +| | And Negative Scenario Ping From DUT1 - Inter network +| | And Negative Scenario Ping From DUT2 - Intra network +| | And Negative Scenario Ping From DUT2 - Inter network + +*** Keywords *** +| Setup VXLAN and BD on Dut +| | [Documentation] | Setup VXLAN and bridge domain on specific DUT and +| | ... | subsequently interconnect them properly. +| | ... +| | ... | *Arguments:* +| | ... | - dut_node - Node where to setup vxlan and BD. Type: dict +| | ... | - src_ip - Source IP for VXLAN. Type: string +| | ... | - dst_ip - Destination IP for vxlan. Type: string +| | ... | - vhosts - List containing vhost interfaces. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Setup VXLAN and BD on Dut \| ${dut_node} \| 16.0.0.1 \| 16.0.0.1 \ +| | ... | \| @{vhosts} \| +| | ... +| | [Arguments] | ${dut_node} | ${src_ip} | ${dst_ip} | @{vhosts} +| | Create bridge domain +| | ... | ${dut_node} | ${bid_b} | learn=${TRUE} +| | Create bridge domain +| | ... | ${dut_node} | ${bid_r} | learn=${TRUE} +| | ${vxlan1_if}= | Create VXLAN interface | ${dut_node} | ${vni_blue} +| | ... | ${src_ip} | ${dst_ip} +| | ${vxlan2_if}= | Create VXLAN interface | ${dut_node} | ${vni_red} +| | ... | ${src_ip} | ${dst_ip} +| | Add interface to bridge domain +| | ... | ${dut_node} | ${vxlan1_if} | ${bid_b} | 0 +| | Add interface to bridge domain +| | ... | ${dut_node} | @{vhosts}[0] | ${bid_b} | 0 +| | Add interface to bridge domain +| | ... | ${dut_node} | @{vhosts}[1] | ${bid_b} | 0 +| | Add interface to bridge domain +| | ... | ${dut_node} | ${vxlan2_if} | ${bid_r} | 0 +| | Add interface to bridge domain +| | ... | ${dut_node} | @{vhosts}[2] | ${bid_r} | 0 +| | Add interface to bridge domain +| | ... | ${dut_node} | @{vhosts}[3] | ${bid_r} | 0 + +| Positive Scenario Ping From DUT1 - Intra network +| | [Documentation] | Send ping packets from specified namespaces to other in +| | ... | order to test connectivity. +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue2} | ${namespace1} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue1} | ${namespace2} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red2} | ${namespace3} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red1} | ${namespace4} + +| Positive Scenario Ping From DUT1 - Inter network +| | [Documentation] | Send ping packets from specified namespaces to other in +| | ... | order to test connectivity. +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} | ${namespace1} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} | ${namespace1} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} | ${namespace2} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} | ${namespace2} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} | ${namespace3} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} | ${namespace3} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} | ${namespace4} +| | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} | ${namespace4} + +| Positive Scenario Ping From DUT2 - Intra network +| | [Documentation] | Send ping packets from specified namespaces to other in +| | ... | order to test connectivity. +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue2} | ${namespace1} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue1} | ${namespace2} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red2} | ${namespace3} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red1} | ${namespace4} + +| Positive Scenario Ping From DUT2 - Inter network +| | [Documentation] | Send ping packets from specified namespaces to other in +| | ... | order to test connectivity. +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} | ${namespace1} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} | ${namespace1} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} | ${namespace2} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} | ${namespace2} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} | ${namespace3} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} | ${namespace3} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} | ${namespace4} +| | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} | ${namespace4} + +| Negative Scenario Ping From DUT1 - Intra network +| | [Documentation] | Send ping packets from specified namespaces to other in +| | ... | order to test unreachability of namespaces. +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red1} +| | ... | ${namespace1} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red2} +| | ... | ${namespace1} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red1} +| | ... | ${namespace2} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_red2} +| | ... | ${namespace2} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue1} +| | ... | ${namespace3} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue2} +| | ... | ${namespace3} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue1} +| | ... | ${namespace4} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut1_blue2} +| | ... | ${namespace4} + +| Negative Scenario Ping From DUT1 - Inter network +| | [Documentation] | Send ping packets from specified namespaces to other in +| | ... | order to test unreachability of namespaces. +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} +| | ... | ${namespace1} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} +| | ... | ${namespace1} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red1} +| | ... | ${namespace2} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_red2} +| | ... | ${namespace2} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} +| | ... | ${namespace3} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} +| | ... | ${namespace3} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue1} +| | ... | ${namespace4} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node1} | ${dut2_blue2} +| | ... | ${namespace4} + +| Negative Scenario Ping From DUT2 - Intra network +| | [Documentation] | Send ping packets from specified namespaces to other in +| | ... | order to test unreachability of namespaces. +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red1} +| | ... | ${namespace1} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red2} +| | ... | ${namespace1} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red1} +| | ... | ${namespace2} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_red2} +| | ... | ${namespace2} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue1} +| | ... | ${namespace3} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue2} +| | ... | ${namespace3} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue1} +| | ... | ${namespace4} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut2_blue2} +| | ... | ${namespace4} + +| Negative Scenario Ping From DUT2 - Inter network +| | [Documentation] | Send ping packets from specified namespaces to other in +| | ... | order to test unreachability of namespaces. +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} +| | ... | ${namespace1} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} +| | ... | ${namespace1} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red1} +| | ... | ${namespace2} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_red2} +| | ... | ${namespace2} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} +| | ... | ${namespace3} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} +| | ... | ${namespace3} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue1} +| | ... | ${namespace4} +| | Run keyword and expect error | Ping Not Successful +| | ... | Send Ping From Node To Dst | ${qemu_node2} | ${dut1_blue2} +| | ... | ${namespace4} diff --git a/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot new file mode 100644 index 0000000000..d6f4e57143 --- /dev/null +++ b/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot @@ -0,0 +1,116 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/overlay/vxlan.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/vm/double_qemu_setup.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV | VPP_VM_ENV +| Test Setup | Set up functional test +| Test Teardown | Run Keywords | Tear down functional test +| ... | AND | Run keyword | Tear down QEMU | ${dut1_node} +| ... | ${${qemu1}} | ${qemu1} +| ... | AND | Run keyword | Tear down QEMU | ${dut2_node} +| ... | ${${qemu2}} | ${qemu2} +| Documentation | *L2BD with VM combined with VXLAN test cases - IPv4* +| ... +| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on +| ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | bridge-domain (L2BD) switching combined with MAC learning enabled; +| ... | VXLAN tunnels are configured between L2BDs on DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent +| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG +| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC7348. + +*** Variables *** +| ${vni_1}= | 23 + +| ${bd_id1}= | 10 +| ${bd_id2}= | 20 + +| ${ip4_addr1}= | 172.16.0.1 +| ${ip4_addr2}= | 172.16.0.2 +| ${ip4_prefix}= | 24 + +| ${sock1}= | /tmp/sock1 +| ${sock2}= | /tmp/sock2 + +| ${qemu1}= | qemu_instance_1 +| ${qemu2}= | qemu_instance_2 + +| ${dut1_vhost1}= | dut1_vhost_if1 +| ${dut1_vhost2}= | dut1_vhost_if2 +| ${dut2_vhost1}= | dut2_vhost_if1 +| ${dut2_vhost2}= | dut2_vhost_if2 + +*** Test Cases *** +| TC01:DUT1 and DUT2 with two L2BDs and VXLANoIPv4 tunnel switch ICMPv4 between TG links and VM links +| | [Documentation] +| | ... | [Top] TG-DUT1-VM-DUT1-DUT2-VM-DUT2-TG. +| | ... | [Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on DUT1-DUT2; Eth-IPv4-ICMPv4 +| | ... | on TG-DUTn and DUTn=VM. +| | ... | [Cfg] On both DUTs configure two L2BDs (MAC learning enabled); first +| | ... | L2BD with untagged interface to TG and vhost-user interface to local +| | ... | VM, second one with vhost-user interface to local VM and VXLAN +| | ... | interface towards the other DUT. Configure linux bridge on both VMs +| | ... | to pass traffic between both vhost-user interfaces. +| | ... | [Ver] Make TG send ICMPv4 Echo Req between two of its interfaces to +| | ... | be switched by DUT1 and DUT2; verify packets are switched between +| | ... | these TG interfaces. +| | ... | [Ref] RFC7348. +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | When Configure vhost interfaces for L2BD forwarding | ${dut1_node} +| | ... | ${sock1} +| | ... | ${sock2} +| | ... | ${dut1_vhost1} +| | ... | ${dut1_vhost2} +| | And Configure vhost interfaces for L2BD forwarding | ${dut2_node} +| | ... | ${sock1} +| | ... | ${sock2} +| | ... | ${dut2_vhost1} +| | ... | ${dut2_vhost2} +| | And Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} +| | ... | ${sock2} | ${qemu1} +| | And Configure VM for vhost L2BD forwarding | ${dut2_node} | ${sock1} +| | ... | ${sock2} | ${qemu2} +| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr1} +| | ... | ${ip4_prefix} +| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr2} +| | ... | ${ip4_prefix} +| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr2} +| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr1} +| | ${dut1s_vxlan}= | And Create VXLAN interface | ${dut1_node} | ${vni_1} +| | | ... | ${ip4_addr1} | ${ip4_addr2} +| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${vni_1} +| | | ... | ${ip4_addr2} | ${ip4_addr1} +| | And Add interfaces to L2BD | ${dut1_node} | ${bd_id1} +| | ... | ${dut1_to_tg} | ${${dut1_vhost1}} +| | And Add interfaces to L2BD | ${dut1_node} | ${bd_id2} +| | ... | ${dut1s_vxlan} | ${${dut1_vhost2}} +| | And Add interfaces to L2BD | ${dut2_node} | ${bd_id1} +| | ... | ${dut2_to_tg} | ${${dut2_vhost1}} +| | And Add interfaces to L2BD | ${dut2_node} | ${bd_id2} +| | ... | ${dut2s_vxlan} | ${${dut2_vhost2}} +| | Then Send ICMPv4 bidirectionally and verify received packets +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot new file mode 100644 index 0000000000..cde7bd8aff --- /dev/null +++ b/tests/vpp/func/vm_vhost/l2bd/eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot @@ -0,0 +1,119 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/overlay/vxlan.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/vm/double_qemu_setup.robot +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPv6Setup +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV +| Test Setup | Set up functional test +| Test Teardown | Run Keywords | Tear down functional test +| ... | AND | Run keyword | Tear down QEMU | ${dut1_node} +| ... | ${${qemu1}} | ${qemu1} +| ... | AND | Run keyword | Tear down QEMU | ${dut2_node} +| ... | ${${qemu2}} | ${qemu2} +| Documentation | *L2BD with VM combined with VXLAN test cases - IPv6* +| ... +| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on +| ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUTn for L2 switching of IPv6. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | bridge-domain (L2BD) switching combined with MAC learning enabled; +| ... | VXLAN tunnels are configured between L2BDs on DUT1 and DUT2. +| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent +| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG +| ... | verifies packets for correctness and their IPv6 src-addr, dst-addr +| ... | and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC7348. + +*** Variables *** +| ${vni_1}= | 23 + +| ${bd_id1}= | 10 +| ${bd_id2}= | 20 + +| ${ip6_addr1}= | 3ffe:64::1 +| ${ip6_addr2}= | 3ffe:64::2 +| ${ip6_prefix}= | 64 + +| ${sock1}= | /tmp/sock1 +| ${sock2}= | /tmp/sock2 + +| ${qemu1}= | qemu_instance_1 +| ${qemu2}= | qemu_instance_2 + +| ${dut1_vhost1}= | dut1_vhost_if1 +| ${dut1_vhost2}= | dut1_vhost_if2 +| ${dut2_vhost1}= | dut2_vhost_if1 +| ${dut2_vhost2}= | dut2_vhost_if2 + +*** Test Cases *** +| TC01:DUT1 and DUT2 with two L2BDs and VXLANoIPv6 tunnel switch ICMPv6 between TG links and VM links +| | [Documentation] +| | ... | [Top] TG-DUT1-VM-DUT1-DUT2-VM-DUT2-TG. +| | ... | [Enc] Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on DUT1-DUT2; Eth-IPv4-ICMPv4 +| | ... | on TG-DUTn and DUTn=VM. +| | ... | [Cfg] On both DUTs configure two L2BDs (MAC learning enabled); first +| | ... | L2BD with untagged interface to TG and vhost-user interface to local +| | ... | VM, second one with vhost-user interface to local VM and VXLAN +| | ... | interface towards the other DUT. Configure linux bridge on both VMs +| | ... | to pass traffic between both vhost-user interfaces. +| | ... | [Ver] Make TG send ICMPv6 Echo Req between two of its interfaces to +| | ... | be switched by DUT1 and DUT2; verify packets are switched between +| | ... | these TG interfaces. +| | ... | [Ref] RFC7348. +| | [Tags] | VPP_VM_ENV +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | When Configure vhost interfaces for L2BD forwarding | ${dut1_node} +| | ... | ${sock1} +| | ... | ${sock2} +| | ... | ${dut1_vhost1} +| | ... | ${dut1_vhost2} +| | And Configure vhost interfaces for L2BD forwarding | ${dut2_node} +| | ... | ${sock1} +| | ... | ${sock2} +| | ... | ${dut2_vhost1} +| | ... | ${dut2_vhost2} +| | And Configure VM for vhost L2BD forwarding | ${dut1_node} | ${sock1} +| | ... | ${sock2} | ${qemu1} +| | And Configure VM for vhost L2BD forwarding | ${dut2_node} | ${sock1} +| | ... | ${sock2} | ${qemu2} +| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr1} +| | ... | ${ip6_prefix} +| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr2} +| | ... | ${ip6_prefix} +| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr2} +| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr1} +| | And Vpp All RA Suppress Link Layer | ${nodes} +| | ${dut1s_vxlan}= | And Create VXLAN interface | ${dut1_node} | ${vni_1} +| | | ... | ${ip6_addr1} | ${ip6_addr2} +| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${vni_1} +| | | ... | ${ip6_addr2} | ${ip6_addr1} +| | And Add interfaces to L2BD | ${dut1_node} | ${bd_id1} +| | ... | ${dut1_to_tg} | ${${dut1_vhost1}} +| | And Add interfaces to L2BD | ${dut1_node} | ${bd_id2} +| | ... | ${dut1s_vxlan} | ${${dut1_vhost2}} +| | And Add interfaces to L2BD | ${dut2_node} | ${bd_id1} +| | ... | ${dut2_to_tg} | ${${dut2_vhost1}} +| | And Add interfaces to L2BD | ${dut2_node} | ${bd_id2} +| | ... | ${dut2s_vxlan} | ${${dut2_vhost2}} +| | Then Send ICMPv6 bidirectionally and verify received packets +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/vpp/func/vm_vhost/l2xc/eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot b/tests/vpp/func/vm_vhost/l2xc/eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot new file mode 100644 index 0000000000..759d7cba23 --- /dev/null +++ b/tests/vpp/func/vm_vhost/l2xc/eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot @@ -0,0 +1,93 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_xconnect.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.NodePath +| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | HW_ENV | VM_ENV | VPP_VM_ENV +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2 cross-connect test cases* +| ... +| ... | *[Top] Network Topologies:* TG=DUT=VM 3-node topology with VM and +| ... | double parallel links. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of IPv4; +| ... | Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply to all links. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect +| ... | (L2XC) switching. +| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets are +| ... | sent in both directions by TG on links to DUT1 via VM; on receive TG +| ... | verifies packets for correctness and their IPv4 (IPv6) src-addr, +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| ${sock1}= | /tmp/sock1 +| ${sock2}= | /tmp/sock2 + +*** Test Cases *** +| TC01: DUT with two L2XCs switches ICMPv4 between TG and local VM links +| | [Documentation] +| | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT configure \ +| | ... | two L2 cross-connects (L2XC), each with one untagged interface +| | ... | to TG and untagged i/f to local VM over vhost-user. [Ver] Make +| | ... | TG send ICMPv4 Echo Reqs in both directions between two of its +| | ... | i/fs to be switched by DUT to and from VM; verify all packets +| | ... | are received. [Ref] +| | ... +| | [Teardown] | Run Keywords | Stop and clear QEMU | ${dut_node} | ${vm_node} +| | ... | AND | Tear down functional test +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | When Configure vhost interfaces for L2BD forwarding | ${dut_node} +| | ... | ${sock1} | ${sock2} +| | And Configure L2XC | ${dut_node} | ${dut_to_tg_if1} | ${vhost_if1} +| | And Configure L2XC | ${dut_node} | ${dut_to_tg_if2} | ${vhost_if2} +| | And Configure VM for vhost L2BD forwarding | ${dut_node} | ${sock1} +| | ... | ${sock2} +| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2} + +| TC02: DUT with two L2XCs switches ICMPv6 between TG and local VM links +| | [Documentation] +| | ... | [Top] TG=DUT=VM. [Enc] Eth-IPv6-ICMPv6. [Cfg] On DUT configure \ +| | ... | two L2 cross-connects (L2XC), each with one untagged i/f to TG +| | ... | and untagged i/f to local VM over vhost-user. [Ver] Make TG send +| | ... | ICMPv6 Echo Reqs in both directions between two of its i/fs to +| | ... | be switched by DUT to and from VM; verify all packets are +| | ... | received. [Ref] +| | ... +| | [Teardown] | Run Keywords | Stop and clear QEMU | ${dut_node} | ${vm_node} +| | ... | AND | Tear down functional test +| | ... +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | When Configure vhost interfaces for L2BD forwarding | ${dut_node} +| | ... | ${sock1} | ${sock2} +| | And Configure L2XC | ${dut_node} | ${dut_to_tg_if1} | ${vhost_if1} +| | And Configure L2XC | ${dut_node} | ${dut_to_tg_if2} | ${vhost_if2} +| | And Configure VM for vhost L2BD forwarding | ${dut_node} | ${sock1} +| | ... | ${sock2} +| | Then Send ICMPv6 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2} + diff --git a/tests/vpp/perf/__init__.robot b/tests/vpp/perf/__init__.robot new file mode 100644 index 0000000000..0dfc31f07e --- /dev/null +++ b/tests/vpp/perf/__init__.robot @@ -0,0 +1,45 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Library | resources.libraries.python.SetupFramework +| Library | resources.libraries.python.CpuUtils +| Suite Setup | Run Keywords | Setup performance global Variables +| ... | AND | Setup Framework | ${nodes} +| ... | AND | Setup All DUTs | ${nodes} +| ... | AND | Get CPU Layout from all nodes | ${nodes} +| ... | AND | Update All Interface Data On All Nodes +| ... | ${nodes} | skip_tg=${True} | numa_node=${True} + +*** Keywords *** +| Setup performance global Variables +| | [Documentation] +| | ... | Setup suite Variables. Variables are used across performance testing. +| | ... +| | ... | _NOTE:_ This KW sets following suite variables: +| | ... | - perf_trial_duration - Duration of traffic run [s] +| | ... | - perf_pdr_loss_acceptance - Loss acceptance treshold +| | ... | - perf_pdr_loss_acceptance_type - Loss acceptance treshold type +| | ... | - perf_vm_image - Guest VM disk image +| | ... | - perf_qemu_bin - Path to QEMU binary +| | ... | - perf_qemu_qsz - QEMU virtio queue size +| | ... +| | Set Global Variable | ${perf_trial_duration} | 10 +| | Set Global Variable | ${perf_pdr_loss_acceptance} | 0.5 +| | Set Global Variable | ${perf_pdr_loss_acceptance_type} | percentage +| | Set Global Variable | ${perf_vm_image} | /var/lib/vm/csit-nested-1.6.img +| | Set Global Variable | ${perf_qemu_bin} +| | ... | /opt/qemu-2.5.0/bin/qemu-system-x86_64 +| | Set Global Variable | ${perf_qemu_qsz} | 1024 diff --git a/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot new file mode 100644 index 0000000000..86670fecc6 --- /dev/null +++ b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot @@ -0,0 +1,337 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/crypto/ipsec.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE +| ... +| Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710 +| ... +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *IPv4 IPsec tunnel mode performance test suite.* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number +| ... | of packets transmitted. NDR is discovered for different +| ... | number of IPsec tunnels using binary search algorithms with configured +| ... | starting rate and final step that determines throughput measurement +| ... | resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G} | ${24500000000} +# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps} | ${18750000} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 172.168.1.1 +| ${dut2_if1_ip4}= | 172.168.1.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${32} +| ${ipsec_overhead_gcm}= | ${54} +| ${n_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} +| | ... | ${framesize + ${ipsec_overhead_gcm}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} +| | ... | ${framesize + ${ipsec_overhead_gcm}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${imix_size}= | Get Frame Size | ${framesize} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} +| | ... | ${imix_size} + ${ipsec_overhead_gcm} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${imix_size}= | Get Frame Size | ${framesize} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} +| | ... | ${imix_size} + ${ipsec_overhead_gcm} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ +| | ... | with 2 thread, 2 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${2} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4ipsecbasetnl-ip4base-int-aes-gcm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ +| | ... | with 2 thread, 2 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${2} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot new file mode 100644 index 0000000000..c78d3ca67d --- /dev/null +++ b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot @@ -0,0 +1,333 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/crypto/ipsec.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE +| ... +| Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710 +| ... +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *IPv4 IPsec tunnel mode performance test suite.* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number +| ... | of packets transmitted. NDR is discovered for different +| ... | number of IPsec tunnels using binary search algorithms with configured +| ... | starting rate and final step that determines throughput measurement +| ... | resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G} | ${24500000000} +# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps} | ${18750000} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 172.168.1.1 +| ${dut2_if1_ip4}= | 172.168.1.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${32} +| ${ipsec_overhead}= | ${58} +| ${n_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${imix_size}= | Get Frame Size | ${framesize} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${imix_size}= | Get Frame Size | ${framesize} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ +| | ... | with 2 thread, 2 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${2} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ +| | ... | with 2 thread, 2 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${2} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot new file mode 100644 index 0000000000..85ddc9f663 --- /dev/null +++ b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot @@ -0,0 +1,361 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/crypto/ipsec.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE +| ... +| Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710 +| ... +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *IPv4 IPsec tunnel mode performance test suite.* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number +| ... | of packets transmitted. NDR is discovered for different +| ... | number of IPsec tunnels using binary search algorithms with configured +| ... | starting rate and final step that determines throughput measurement +| ... | resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G} | ${24500000000} +# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps} | ${18750000} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 172.168.1.1 +| ${dut2_if1_ip4}= | 172.168.1.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${32} +| ${ipsec_overhead_gcm}= | ${54} +| ${n_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} +| | ... | ${framesize + ${ipsec_overhead_gcm}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} +| | ... | ${framesize + ${ipsec_overhead_gcm}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${imix_size}= | Get Frame Size | ${framesize} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} +| | ... | ${imix_size} + ${ipsec_overhead_gcm} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${imix_size}= | Get Frame Size | ${framesize} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} +| | ... | ${imix_size} + ${ipsec_overhead_gcm} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ +| | ... | with 2 thread, 2 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${2} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel AES GCM in each direction, configured\ +| | ... | with 2 thread, 2 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${2} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot new file mode 100644 index 0000000000..1002f53e5d --- /dev/null +++ b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot @@ -0,0 +1,357 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/crypto/ipsec.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | BASE +| ... +| Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710 +| ... +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *IPv4 IPsec tunnel mode performance test suite.* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number +| ... | of packets transmitted. NDR is discovered for different +| ... | number of IPsec tunnels using binary search algorithms with configured +| ... | starting rate and final step that determines throughput measurement +| ... | resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G} | ${24500000000} +# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps} | ${18750000} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 172.168.1.1 +| ${dut2_if1_ip4}= | 172.168.1.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${32} +| ${ipsec_overhead}= | ${58} +| ${n_tunnels}= | ${1} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${imix_size}= | Get Frame Size | ${framesize} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ +| | ... | with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${imix_size}= | Get Frame Size | ${framesize} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ +| | ... | with 2 thread, 2 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${2} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1 IPsec tunnel CBC-SHA1 in each direction, configured\ +| | ... | with 2 thread, 2 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${2} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot new file mode 100644 index 0000000000..ac8f8603b9 --- /dev/null +++ b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot @@ -0,0 +1,337 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/crypto/ipsec.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | SCALE | NDRPDRDISC +| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000 +| ... +| Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710 +| ... +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *IPv4 IPsec tunnel mode performance test suite.* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number +| ... | of packets transmitted. NDR is discovered for different +| ... | number of IPsec tunnels using binary search algorithms with configured +| ... | starting rate and final step that determines throughput measurement +| ... | resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G} | ${24500000000} +# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps} | ${18750000} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 172.168.1.1 +| ${dut2_if1_ip4}= | 172.168.1.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${32} +| ${ipsec_overhead_gcm}= | ${54} +| ${n_tunnels}= | ${1000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} +| | ... | ${framesize + ${ipsec_overhead_gcm}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnel AES GCM in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} +| | ... | ${framesize + ${ipsec_overhead_gcm}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${imix_size}= | Get Frame Size | ${framesize} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} +| | ... | ${imix_size} + ${ipsec_overhead_gcm} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${imix_size}= | Get Frame Size | ${framesize} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} +| | ... | ${imix_size} + ${ipsec_overhead_gcm} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ +| | ... | configured with 2 thread, 2 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${2} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ +| | ... | configured with 2 thread, 2 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${2} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot new file mode 100644 index 0000000000..c46da5a82d --- /dev/null +++ b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot @@ -0,0 +1,333 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/crypto/ipsec.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | SCALE | NDRPDRDISC +| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000 +| ... +| Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710 +| ... +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *IPv4 IPsec tunnel mode performance test suite.* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number +| ... | of packets transmitted. NDR is discovered for different +| ... | number of IPsec tunnels using binary search algorithms with configured +| ... | starting rate and final step that determines throughput measurement +| ... | resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G} | ${24500000000} +# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps} | ${18750000} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 172.168.1.1 +| ${dut2_if1_ip4}= | 172.168.1.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${32} +| ${ipsec_overhead}= | ${58} +| ${n_tunnels}= | ${1000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnel CBC-SHA1 in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${imix_size}= | Get Frame Size | ${framesize} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${imix_size}= | Get Frame Size | ${framesize} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ +| | ... | configured with 2 thread, 2 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${2} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ +| | ... | configured with 2 thread, 2 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${2} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | And VPP IPsec Create Tunnel Interfaces +| | ... | ${dut1} | ${dut2} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${laddr_ip4} +| | ... | ${raddr_ip4} | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot new file mode 100644 index 0000000000..6e5a7dfbd9 --- /dev/null +++ b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot @@ -0,0 +1,361 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/crypto/ipsec.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | SCALE | NDRPDRDISC +| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000 +| ... +| Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710 +| ... +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *IPv4 IPsec tunnel mode performance test suite.* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number +| ... | of packets transmitted. NDR is discovered for different +| ... | number of IPsec tunnels using binary search algorithms with configured +| ... | starting rate and final step that determines throughput measurement +| ... | resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G} | ${24500000000} +# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps} | ${18750000} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 172.168.1.1 +| ${dut2_if1_ip4}= | 172.168.1.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${32} +| ${ipsec_overhead_gcm}= | ${54} +| ${n_tunnels}= | ${1000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} +| | ... | ${framesize + ${ipsec_overhead_gcm}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnel AES GCM in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} +| | ... | ${framesize + ${ipsec_overhead_gcm}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${imix_size}= | Get Frame Size | ${framesize} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} +| | ... | ${imix_size} + ${ipsec_overhead_gcm} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${imix_size}= | Get Frame Size | ${framesize} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} +| | ... | ${imix_size} + ${ipsec_overhead_gcm} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ +| | ... | configured with 2 thread, 2 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${2} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels AES GCM in each direction,\ +| | ... | configured with 2 thread, 2 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES GCM 128 +| | ${auth_alg}= | Integ Alg AES GCM 128 +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${2} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot new file mode 100644 index 0000000000..cceaaf846a --- /dev/null +++ b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot @@ -0,0 +1,357 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/crypto/ipsec.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | SCALE | NDRPDRDISC +| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000 +| ... +| Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710 +| ... +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *IPv4 IPsec tunnel mode performance test suite.* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn, +| ... | Eth-IPv4-IPSec on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple +| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it +| ... | and send to another DUT, where packets are decrypted and sent back to TG +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number +| ... | of packets transmitted. NDR is discovered for different +| ... | number of IPsec tunnels using binary search algorithms with configured +| ... | starting rate and final step that determines throughput measurement +| ... | resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, number of flows per flow-group equals to +| ... | number of IPSec tunnels) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544. + +*** Variables *** +# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G} | ${24500000000} +# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps} | ${18750000} +| ${tg_if1_ip4}= | 192.168.10.2 +| ${dut1_if1_ip4}= | 192.168.10.1 +| ${dut1_if2_ip4}= | 172.168.1.1 +| ${dut2_if1_ip4}= | 172.168.1.2 +| ${dut2_if2_ip4}= | 192.168.20.1 +| ${tg_if2_ip4}= | 192.168.20.2 +| ${raddr_ip4}= | 20.0.0.0 +| ${laddr_ip4}= | 10.0.0.0 +| ${addr_range}= | ${32} +| ${ipsec_overhead}= | ${58} +| ${n_tunnels}= | ${1000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${n_tunnels} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnel CBC-SHA1 in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${imix_size}= | Get Frame Size | ${framesize} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ +| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${imix_size}= | Get Frame Size | ${framesize} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ +| | ... | configured with 2 thread, 2 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${2} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find NDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\ +| | ... | configured with 2 thread, 2 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps and loss tolerance of 0.5%. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${2} +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPSec in 3-node circular topology +| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2} +| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1} +| | And VPP IPsec Add Multiple Tunnels +| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels} +| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} +| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4} +| | ... | ${addr_range} +| | Then Find PDR using binary search and pps | ${framesize} +| | ... | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot new file mode 100644 index 0000000000..141d3f7ce1 --- /dev/null +++ b/tests/vpp/perf/crypto/40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot @@ -0,0 +1,374 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/crypto/ipsec.robot +| Resource | resources/libraries/robot/overlay/lispgpe.robot +| ... +| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC | IP4FWD +| ... | LISPGPE | IPSEC | IPSECHW | IPSECTRAN | ENCAP | IP4UNRLAY | IP4OVRLAY +| ... | NIC_Intel-XL710 +| ... +| Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710 +| ... +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *IPv4 IPsec transport mode performance test suite.* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn,\ +| ... | Eth-IPv4-IPSec-LISPGPE-IPv4 on DUT1-DUT2 +| ... | *[Cfg] DUT configuration:* Each DUT is configured with LISP and IPsec\ +| ... | in each direction. IPsec is in transport mode. DUTs get IPv4 traffic\ +| ... | from TG, encrypt it and send to another DUT, where packets are\ +| ... | decrypted and sent back to TG. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in number\ +| ... | of packets transmitted. NDR is discovered for different\ +| ... | number of IPsec tunnels using binary search algorithms with configured\ +| ... | starting rate and final step that determines throughput measurement\ +| ... | resolution. Test packets are generated by TG on\ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\ +| ... | (flow-group per direction, number of flows per flow-group equals to\ +| ... | number of IPSec tunnels) with all packets\ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and\ +| ... | static payload. MAC addresses are matching MAC addresses of the TG\ +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address)\ +| ... | field is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC6830, RFC4303 and\ +| ... | RFC2544. + +*** Variables *** +# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G} | ${24500000000} +# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps} | ${18750000} +| ${dut2_spi}= | ${1000} +| ${dut1_spi}= | ${1001} +| ${ESP_PROTO}= | ${50} +| ${ipsec_overhead}= | ${54} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ +| | ... | IPsec is in transport mode. DUTs are configured with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology +| | ... | ${encr_alg} | ${auth_alg} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ +| | ... | IPsec is in transport mode. DUTs are configured with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology +| | ... | ${encr_alg} | ${auth_alg} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ +| | ... | IPsec is in transport mode. DUTs are configured with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology +| | ... | ${encr_alg} | ${auth_alg} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ +| | ... | IPsec is in transport mode. DUTs are configured with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology +| | ... | ${encr_alg} | ${auth_alg} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ +| | ... | IPsec is in transport mode. DUTs are configured with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${imix_size}= | Get Frame Size | ${framesize} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology +| | ... | ${encr_alg} | ${auth_alg} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ +| | ... | IPsec is in transport mode. DUTs are configured with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${imix_size}= | Get Frame Size | ${framesize} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add cryptodev to all DUTs | ${1} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology +| | ... | ${encr_alg} | ${auth_alg} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ +| | ... | IPsec is in transport mode. DUTs are configured with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${2} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology +| | ... | ${encr_alg} | ${auth_alg} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ +| | ... | IPsec is in transport mode. DUTs are configured with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${2} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology +| | ... | ${encr_alg} | ${auth_alg} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrdisc +| | [Documentation] +| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ +| | ... | IPsec is in transport mode. DUTs are configured with 4 threads, 4 phy\ +| | ... | cores, 2 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${4} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology +| | ... | ${encr_alg} | ${auth_alg} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-ethip4ipsectptlispgpe-ip4base-cbc-sha1-pdrdisc +| | [Documentation] +| | ... | [Cfg] Each DUT is configured with LISP and IPsec in each direction.\ +| | ... | IPsec is in transport mode. DUTs are configured with 4 threads, 4 phy\ +| | ... | cores, 2 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 40GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${encr_alg}= | Crypto Alg AES CBC 128 +| | ${auth_alg}= | Integ Alg SHA1 96 +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg} +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add cryptodev to all DUTs | ${4} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP GPE IPv4 over IPsec in 3-node circular topology +| | ... | ${encr_alg} | ${auth_alg} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrchk.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrchk.robot new file mode 100644 index 0000000000..5dc941725f --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrchk.robot @@ -0,0 +1,260 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.Cop +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} +| ... | WITH NAME | dut1_v4 +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} +| ... | WITH NAME | dut2_v4 +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | COPWHLIST +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput IPv4 whitelist verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing, two static IPv4 /24 routes and IPv4 COP security whitelist +| ... | ingress /24 filter entries applied on links TG - DUT1 and DUT2 - TG. +| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-NDR value is periodically updated acording to +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and static payload. MAC addresses are matching MAC addresses of the +| ... | TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4base-copwhtlistbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 64 Byte frames using single trial throughput test +| | ... | at 2x 4.1mpps. +| | [Tags] | 64B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 4.1mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc02-1518B-1t1c-ethip4-ip4base-copwhtlistbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 1518 Byte frames using single trial throughput test +| | ... | at 2x 812743pps. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc03-9000B-1t1c-ethip4-ip4base-copwhtlistbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 9000 Byte frames using single trial throughput test +| | ... | at 2x 138580pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc04-64B-2t2c-ethip4-ip4base-copwhtlistbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 64 Byte frames using single trial throughput test +| | ... | at 2x 7.2mpps. +| | [Tags] | 64B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 7.2mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc05-1518B-2t2c-ethip4-ip4base-copwhtlistbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 1518 Byte frames using single trial throughput test +| | ... | at 2x 812743pps. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc06-9000B-2t2c-ethip4-ip4base-copwhtlistbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 9000 Byte frames using single trial throughput test +| | ... | at 2x 138580pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc07-64B-4t4c-ethip4-ip4base-copwhtlistbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 4 thread, 4 phy core, 2 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 64 Byte frames using single trial throughput test +| | ... | at 2x 10.4mpps. +| | [Tags] | 64B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 10.4mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-1518B-4t4c-ethip4-ip4base-copwhtlistbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 4 thread, 4 phy core, 2 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 1518 Byte frames using single trial throughput test +| | ... | at 2x 812743pps. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc09-9000B-4t4c-ethip4-ip4base-copwhtlistbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 4 thread, 4 phy core, 2 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 9000 Byte frames using single trial throughput test +| | ... | at 2x 138580pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot new file mode 100644 index 0000000000..2afbb093c8 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot @@ -0,0 +1,569 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.Cop +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} +| ... | WITH NAME | dut1_v4 +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} +| ... | WITH NAME | dut2_v4 +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | COPWHLIST +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput IPv4 whitelist test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing, two static IPv4 /24 routes and IPv4 COP security whitelist +| ... | ingress /24 filter entries applied on links TG - DUT1 and DUT2 - TG. +| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4base-copwhtlistbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 64 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4-ip4base-copwhtlistbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 64 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4-ip4base-copwhtlistbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4-ip4base-copwhtlistbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip4-ip4base-copwhtlistbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-ethip4-ip4base-copwhtlistbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4-ip4base-copwhtlistbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 64 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4-ip4base-copwhtlistbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 64 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps, LT=0.5%. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-ethip4-ip4base-copwhtlistbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-ethip4-ip4base-copwhtlistbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip4-ip4base-copwhtlistbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-ethip4-ip4base-copwhtlistbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-ethip4-ip4base-copwhtlistbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR +| | ... | for 64 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-ethip4-ip4base-copwhtlistbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR +| | ... | for 64 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-ethip4-ip4base-copwhtlistbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-ethip4-ip4base-copwhtlistbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip4-ip4base-copwhtlistbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-ethip4-ip4base-copwhtlistbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 10.10.10.0 | 24 | 1 | local +| | And Add fib table | ${dut2} | 20.20.20.0 | 24 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip4 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip4 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrchk.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrchk.robot new file mode 100644 index 0000000000..3a070f8eaf --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrchk.robot @@ -0,0 +1,332 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.Classify.Classify +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} +| ... | WITH NAME | dut1_v4 +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} +| ... | WITH NAME | dut2_v4 +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | IACLDST +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput IPv4 whitelist verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing, two static IPv4 /24 routes and IPv4 iAcl security whitelist +| ... | ingress /24 filter entries applied on links TG - DUT1 and DUT2 - TG. +| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-NDR value is periodically updated acording to +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and static payload. MAC addresses are matching MAC addresses of the +| ... | TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4base-iacldstbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 64 Byte frames using single trial throughput test +| | ... | at 2x 3.6mpps. +| | [Tags] | 64B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 3.6mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc02-1518B-1t1c-ethip4-ip4base-iacldstbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 1518 Byte frames using single trial throughput test +| | ... | at 2x 812743pps. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc03-9000B-1t1c-ethip4-ip4base-iacldstbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 9000 Byte frames using single trial throughput test +| | ... | at 2x 138580pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc04-64B-2t2c-ethip4-ip4base-iacldstbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 64 Byte frames using single trial throughput test +| | ... | at 2x 6.3mpps. +| | [Tags] | 64B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 6.3mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc05-1518B-2t2c-ethip4-ip4base-iacldstbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 1518 Byte frames using single trial throughput test +| | ... | at 2x 812743pps. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc06-9000B-2t2c-ethip4-ip4base-iacldstbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 9000 Byte frames using single trial throughput test +| | ... | at 2x 138580pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc07-64B-4t4c-ethip4-ip4base-iacldstbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 4 thread, 4 phy core, 2 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 64 Byte frames using single trial throughput test +| | ... | at 2x 9.7mpps. +| | [Tags] | 64B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 9.7mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-1518B-4t4c-ethip4-ip4base-iacldstbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 4 thread, 4 phy core, 2 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 1518 Byte frames using single trial throughput test +| | ... | at 2x 812743pps. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc09-9000B-4t4c-ethip4-ip4base-iacldstbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 4 thread, 4 phy core, 2 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 9000 Byte frames using single trial throughput test +| | ... | at 2x 138580pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot new file mode 100644 index 0000000000..5d63633383 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot @@ -0,0 +1,713 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.Classify.Classify +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} +| ... | WITH NAME | dut1_v4 +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} +| ... | WITH NAME | dut2_v4 +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | IACLDST +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput IPv4 iAcl whitelist test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing, two static IPv4 /24 routes and IPv4 iAcl security whitelist +| ... | ingress /24 filter entries applied on links TG - DUT1 and DUT2 - TG. +| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4base-iacldstbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 64 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4-ip4base-iacldstbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 64 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4-ip4base-iacldstbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4-ip4base-iacldstbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip4-ip4base-iacldstbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-ethip4-ip4base-iacldstbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4-ip4base-iacldstbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 64 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4-ip4base-iacldstbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 64 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps, LT=0.5%. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-ethip4-ip4base-iacldstbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-ethip4-ip4base-iacldstbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip4-ip4base-iacldstbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-ethip4-ip4base-iacldstbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-ethip4-ip4base-iacldstbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR +| | ... | for 64 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-ethip4-ip4base-iacldstbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR +| | ... | for 64 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-ethip4-ip4base-iacldstbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-ethip4-ip4base-iacldstbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip4-ip4base-iacldstbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-ethip4-ip4base-iacldstbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut1} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut1} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 20.20.20.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut1} | ${dut1_if1} | ip4 | ${table_idx} +| | ${table_idx} | ${skip_n} | ${match_n}= | And Vpp Creates Classify Table L3 +| | ... | ${dut2} | ip4 | dst +| | And Vpp Configures Classify Session L3 +| | ... | ${dut2} | permit | ${table_idx} | ${skip_n} | ${match_n} +| | ... | ip4 | dst | 10.10.10.2 +| | And Vpp Enable Input Acl Interface +| | ... | ${dut2} | ${dut2_if2} | ip4 | ${table_idx} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrchk.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrchk.robot new file mode 100644 index 0000000000..69c0f60cfc --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrchk.robot @@ -0,0 +1,226 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.Policer +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} +| ... | WITH NAME | dut1_v4 +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} +| ... | WITH NAME | dut2_v4 +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | IP4FWD | BASE | DOT1Q +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput IPv4 policer verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and two static IPv4 /24 route entries and policer with 2R3C +| ... | color-aware configuration. Policer is applied on links TG - DUT1 and +| ... | DUT2 - TG. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-NDR value is periodically updated acording to +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and static payload. MAC addresses are matching MAC addresses of the +| ... | TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC2698. + +*** Variables *** +| ${cir}= | ${100} +| ${eir}= | ${150} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4base-ipolicemarkbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 1 thread, 1 phy \ +| | ... | core, 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 \ +| | ... | Byte frames using single trial throughput test at 2x 3.6mpps. +| | [Tags] | 64B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 3.6mpps +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc02-1518B-1t1c-ethip4-ip4base-ipolicemarkbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 1 thread, 1 phy \ +| | ... | core, 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 \ +| | ... | Byte frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc03-9000B-1t1c-ethip4-ip4base-ipolicemarkbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 1 thread, 1 phy \ +| | ... | core, 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 \ +| | ... | Byte frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc04-64B-2t2c-ethip4-ip4base-ipolicemarkbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 2 threads, 2 \ +| | ... | phy cores, 1 receive queue per NIC port. [Ver] Verify ref-NDR for \ +| | ... | 64 Byte frames using single trial throughput test at 2x 6.2mpps. +| | [Tags] | 64B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 6.2mpps +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc05-1518B-2t2c-ethip4-ip4base-ipolicemarkbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 2 threads, 2 \ +| | ... | phy cores, 1 receive queue per NIC port. [Ver] Verify ref-NDR for \ +| | ... | 1518 Byte frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc06-9000B-2t2c-ethip4-ip4base-ipolicemarkbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 2 threads, 2 \ +| | ... | phy cores, 1 receive queue per NIC port. [Ver] Verify ref-NDR for \ +| | ... | 9000 Byte frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc07-64B-4t4c-ethip4-ip4base-ipolicemarkbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 4 thread, 4 \ +| | ... | phy core, 2 receive queue per NIC port. [Ver] Verify ref-NDR for 64 \ +| | ... | Byte frames using single trial throughput test at 2x 10.4mpps. +| | [Tags] | 64B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 10.4mpps +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-1518B-4t4c-ethip4-ip4base-ipolicemarkbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 4 thread, 4 \ +| | ... | phy core, 2 receive queue per NIC port. [Ver] Verify ref-NDR for \ +| | ... | 1518 Byte frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc09-9000B-4t4c-ethip4-ip4base-ipolicemarkbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 4 thread, 4 \ +| | ... | phy core, 2 receive queue per NIC port. [Ver] Verify ref-NDR for \ +| | ... | 9000 Byte frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot new file mode 100644 index 0000000000..2400a58d12 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot @@ -0,0 +1,517 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.Policer +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} +| ... | WITH NAME | dut1_v4 +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} +| ... | WITH NAME | dut2_v4 +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | IP4FWD | BASE | DOT1Q +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput IPv4 policer test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and two static IPv4 /24 route entries and policer with 2R3C +| ... | color-aware configuration. Policer is applied on links TG - DUT1 and +| ... | DUT2 - TG. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | generated payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC2698. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +| ${cir}= | ${100} +| ${eir}= | ${150} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4base-ipolicemarkbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 1 thread, 1 \ +| | ... | phy core, 1 receive queue per NIC port. [Ver] Find NDR for 64 \ +| | ... | Byte frames using binary search start at 10GE linerate, step \ +| | ... | 100kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4-ip4base-ipolicemarkbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 1 thread, 1 \ +| | ... | phy core, 1 receive queue per NIC port. [Ver] Find PDR for 64 \ +| | ... | Byte frames using binary search start at 10GE linerate, step \ +| | ... | 100kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4-ip4base-ipolicemarkbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 1 thread, 1 \ +| | ... | phy core, 1 receive queue per NIC port. [Ver] Find NDR for 1518 \ +| | ... | Byte frames using binary search start at 10GE linerate, step \ +| | ... | 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4-ip4base-ipolicemarkbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 1 thread, 1 \ +| | ... | phy core, 1 receive queue per NIC port. [Ver] Find PDR for 1518 \ +| | ... | Byte frames using binary search start at 10GE linerate, step \ +| | ... | 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip4-ip4base-ipolicemarkbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 1 thread, 1 \ +| | ... | phy core, 1 receive queue per NIC port. [Ver] Find NDR for 9000 \ +| | ... | Byte frames using binary search start at 10GE linerate, step \ +| | ... | 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-ethip4-ip4base-ipolicemarkbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 1 thread, 1 \ +| | ... | phy core, 1 receive queue per NIC port. [Ver] Find PDR for 9000 \ +| | ... | Byte frames using binary search start at 10GE linerate, step 5kpps, \ +| | ... | LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4-ip4base-ipolicemarkbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 2 threads, 2 \ +| | ... | phy cores, 1 receive queue per NIC port. [Ver] Find NDR for 64 \ +| | ... | Byte frames using binary search start at 10GE linerate, step \ +| | ... | 100kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4-ip4base-ipolicemarkbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 2 threads, 2 \ +| | ... | phy cores, 1 receive queue per NIC port. [Ver] Find PDR for 64 \ +| | ... | Byte frames using binary search start at 10GE linerate, step \ +| | ... | 100kpps, LT=0.5%. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-ethip4-ip4base-ipolicemarkbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 2 threads, 2 \ +| | ... | phy cores, 1 receive queue per NIC port. [Ver] Find NDR for 1518 \ +| | ... | Byte frames using binary search start at 10GE linerate, step \ +| | ... | 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-ethip4-ip4base-ipolicemarkbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 2 threads, 2 \ +| | ... | phy cores, 1 receive queue per NIC port. [Ver] Find PDR for 1518 \ +| | ... | Byte frames using binary search start at 10GE linerate, step \ +| | ... | 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip4-ip4base-ipolicemarkbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 2 threads, 2 \ +| | ... | phy cores, 1 receive queue per NIC port. [Ver] Find NDR for 9000 \ +| | ... | Byte frames using binary search start at 10GE linerate, step \ +| | ... | 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-ethip4-ip4base-ipolicemarkbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 2 threads, 2 \ +| | ... | phy cores, 1 receive queue per NIC port. [Ver] Find PDR for 9000 \ +| | ... | Byte frames using binary search start at 10GE linerate, step 5kpps, \ +| | ... | LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-ethip4-ip4base-ipolicemarkbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 4 threads, 4 \ +| | ... | phy cores, 2 receive queue per NIC port. [Ver] Find NDR for 64 \ +| | ... | Byte frames using binary search start at 10GE linerate, step \ +| | ... | 100kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-ethip4-ip4base-ipolicemarkbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 4 threads, 4 \ +| | ... | phy cores, 2 receive queue per NIC port. [Ver] Find PDR for 64 \ +| | ... | Byte frames using binary search start at 10GE linerate, step \ +| | ... | 100kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-ethip4-ip4base-ipolicemarkbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 4 threads, 4 \ +| | ... | phy cores, 2 receive queue per NIC port. [Ver] Find NDR for 1518 \ +| | ... | Byte frames using binary search start at 10GE linerate, step \ +| | ... | 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-ethip4-ip4base-ipolicemarkbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 4 threads, 4 \ +| | ... | phy cores, 2 receive queue per NIC port. [Ver] Find PDR for 1518 \ +| | ... | Byte frames using binary search start at 10GE linerate, step \ +| | ... | 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip4-ip4base-ipolicemarkbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 4 threads, 4 \ +| | ... | phy cores, 2 receive queue per NIC port. [Ver] Find NDR for 9000 \ +| | ... | Byte frames using binary search start at 10GE linerate, step \ +| | ... | 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-ethip4-ip4base-ipolicemarkbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and policer config with 4 threads, 4 \ +| | ... | phy cores, 2 receive queue per NIC port. [Ver] Find PDR for 9000 \ +| | ... | Byte frames using binary search start at 10GE linerate, step 5kpps, \ +| | ... | LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Variable | ${cb} | ${framesize} +| | Set Test Variable | ${eb} | ${framesize} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding in 3-node circular topology +| | And Initialize IPv4 policer 2r3c-'ca' in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ndrchk.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ndrchk.robot new file mode 100644 index 0000000000..01dcedb4b8 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ndrchk.robot @@ -0,0 +1,198 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} +| ... | WITH NAME | dut1_v4 +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} +| ... | WITH NAME | dut2_v4 +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | BASE | IP4BASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput IPv4 routing verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and two static IPv4 /24 route entries. DUT1 and DUT2 tested with +| ... | 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-NDR value is periodically updated acording to +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and static payload. MAC addresses are matching MAC addresses of the +| ... | TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 4.6mpps. +| | [Tags] | 64B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 4.6mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc02-1518B-1t1c-ethip4-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc03-9000B-1t1c-ethip4-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc04-64B-2t2c-ethip4-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 10.4mpps. +| | [Tags] | 64B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 10.4mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc05-1518B-2t2c-ethip4-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc06-9000B-2t2c-ethip4-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc07-64B-4t4c-ethip4-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 10.4mpps. +| | [Tags] | 64B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 10.4mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-1518B-4t4c-ethip4-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-9000B-4t4c-ethip4-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot new file mode 100644 index 0000000000..edf5ca0691 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot @@ -0,0 +1,489 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} +| ... | WITH NAME | dut1_v4 +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} +| ... | WITH NAME | dut2_v4 +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | BASE | IP4BASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and two static IPv4 /24 route entries. DUT1 and DUT2 tested with +| ... | 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-ethip4-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-ethip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-ethip4-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-ethip4-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-ethip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-ethip4-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-ethip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-ethip4-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-ethip4-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc19-IMIX-1t1c-ethip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame size +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc20-IMIX-1t1c-ethip4-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame size +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-pdrchk.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-pdrchk.robot new file mode 100644 index 0000000000..3c49d6ba72 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-pdrchk.robot @@ -0,0 +1,190 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} +| ... | WITH NAME | dut1_v4 +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} +| ... | WITH NAME | dut2_v4 +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | BASE | IP4BASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance pdrchk test +| ... +| Documentation | *Reference PDR throughput IPv4 routing verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and two static IPv4 /24 route entries. DUT1 and DUT2 tested with +| ... | 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-PDR value is periodically updated acording to +| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and static payload. MAC addresses are matching MAC addresses of the +| ... | TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Keywords *** +| Check PDR for IPv4 routing +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with ${wt} thread(s), ${wt}\ +| | ... | phy core(s), ${rxq} receive queue(s) per NIC port. +| | ... | [Ver] Verify ref-PDR for ${framesize} frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Traffic should pass with partial loss | ${perf_trial_duration} +| | ... | ${rate} | ${framesize} | ${traffic_profile} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte\ +| | ... | frames using single trial throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing +| | framesize=${64} | rate=4.7mpps | wt=1 | rxq=1 + +| tc02-1518B-1t1c-ethip4-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing +| | framesize=${1518} | rate=400000pps | wt=1 | rxq=1 + +| tc03-9000B-1t1c-ethip4-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing +| | framesize=${9000} | rate=60000pps | wt=1 | rxq=1 + +| tc04-64B-2t2c-ethip4-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 thread, 2 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 2T2C | STHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing +| | framesize=${64} | rate=7.4mpps | wt=2 | rxq=1 + +| tc05-1518B-2t2c-ethip4-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 thread, 2 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing +| | framesize=${1518} | rate=400000pps | wt=2 | rxq=1 + +| tc06-9000B-2t2c-ethip4-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 thread, 2 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing +| | framesize=${9000} | rate=60000pps | wt=2 | rxq=1 + +| tc07-64B-4t4c-ethip4-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 thread, 4 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing +| | framesize=${64} | rate=7.4mpps | wt=4 | rxq=2 + +| tc08-1518B-4t4c-ethip4-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 thread, 4 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing +| | framesize=${1518} | rate=400000pps | wt=4 | rxq=2 + +| tc08-9000B-4t4c-ethip4-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 thread, 4 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing +| | framesize=${9000} | rate=60000pps | wt=4 | rxq=2 diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot new file mode 100644 index 0000000000..89aa2788ef --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot @@ -0,0 +1,227 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/ip/snat.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | BASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test with SNAT +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... +| Documentation | *SNAT performance test cases* +| ... +| ... | *High level description* +| ... +| ... | - NDR and PDR tests +| ... | - 3-node topology, TG-DUT1-DUT2-TG, SNAT is enabled between DUTs. +| ... | - Cores / threads: 1t1c and 2t2c +| ... | - Framesize: 64B, 1518B, IMIX +| ... | - Packet: ETH / IP(src, dst) / UDP(src_port, dst_port) / payload +| ... +| ... | *Low level description* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and two static IPv4 /24 and IPv4/20 route entries. DUT1 and DUT2 +| ... | tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, one flow per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with UDP header and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4udp-1u1p + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4base-snat-1u-1p-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 1 user and 1 port (session) per user. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4-ip4base-snat-1u-1p-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 1 user and 1 port (session) per user. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4-ip4base-snat-1u-1p-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 1 user and 1 port (session) per user. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4-ip4base-snat-1u-1p-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 1 user and 1 port (session) per user. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-ethip4-ip4base-snat-1u-1p-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 1 user and 1 port (session) per user. +| | ... | [Ver] Find NDR for IMIX frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-ethip4-ip4base-snat-1u-1p-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 1 user and 1 port (session) per user. +| | ... | [Ver] Find PDR for IMIX frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale200k-ndrchk.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale200k-ndrchk.robot new file mode 100644 index 0000000000..abb34c2794 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale200k-ndrchk.robot @@ -0,0 +1,201 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_200K +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput IPv4 routing verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and 2x100k static IPv4 /32 route entries. DUT1 and DUT2 tested +| ... | with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-NDR value is periodically updated acording to +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long +| ... | performance tests for the same DUT confiiguration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 100k flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and static payload. Incrementing of IP.dst (IPv4 destination address) +| ... | field is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${rts_per_flow}= | ${100000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${rts_per_flow} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4scale200k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 4.3mpps. +| | [Tags] | 64B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 4.3mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc02-1518B-1t1c-ethip4-ip4scale200k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc03-9000B-1t1c-ethip4-ip4scale200k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc04-64B-2t2c-ethip4-ip4scale200k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 9.1mpps. +| | [Tags] | 64B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 9.1mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc05-1518B-2t2c-ethip4-ip4scale200k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc06-9000B-2t2c-ethip4-ip4scale200k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc07-64B-4t4c-ethip4-ip4scale200k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 10.4mpps. +| | [Tags] | 64B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 10.4mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-1518B-4t4c-ethip4-ip4scale200k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc09-9000B-4t4c-ethip4-ip4scale200k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot new file mode 100644 index 0000000000..6d0034338f --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot @@ -0,0 +1,457 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_200K +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and 2x100k static IPv4 /32 route entries. DUT1 and DUT2 tested +| ... | with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 100k flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +| ${rts_per_flow}= | 100000 +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${rts_per_flow} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4scale200k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4-ip4scale200k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4-ip4scale200k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4-ip4scale200k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip4-ip4scale200k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-ethip4-ip4scale200k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4-ip4scale200k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4-ip4scale200k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-ethip4-ip4scale200k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-ethip4-ip4scale200k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip4-ip4scale200k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-ethip4-ip4scale200k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-ethip4-ip4scale200k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-ethip4-ip4scale200k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-ethip4-ip4scale200k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-ethip4-ip4scale200k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip4-ip4scale200k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-ethip4-ip4scale200k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale20k-ndrchk.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale20k-ndrchk.robot new file mode 100644 index 0000000000..8303a4e139 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale20k-ndrchk.robot @@ -0,0 +1,210 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_20K +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput IPv4 routing verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and 2x10k static IPv4 /32 route entries. DUT1 and DUT2 tested +| ... | with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-NDR value is periodically updated acording to +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long +| ... | performance tests for the same DUT confiiguration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 10k flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and static payload. Incrementing of IP.dst (IPv4 destination address) +| ... | field is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${rts_per_flow}= | ${10000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${rts_per_flow} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4scale20k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 4.3mpps. +| | [Tags] | 64B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 4.3mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc02-1518B-1t1c-ethip4-ip4scale20k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc03-9000B-1t1c-ethip4-ip4scale20k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc04-64B-2t2c-ethip4-ip4scale20k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 9.0mpps. +| | [Tags] | 64B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 9.0mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc05-1518B-2t2c-ethip4-ip4scale20k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc06-9000B-2t2c-ethip4-ip4scale20k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc07-64B-4t4c-ethip4-ip4scale20k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 10.4mpps. +| | [Tags] | 64B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 10.4mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc08-1518B-4t4c-ethip4-ip4scale20k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc09-9000B-4t4c-ethip4-ip4scale20k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot new file mode 100644 index 0000000000..a4c5b31bd7 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot @@ -0,0 +1,457 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_20K +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and 2x10k static IPv4 /32 route entries. DUT1 and DUT2 tested +| ... | with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 10k flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +| ${rts_per_flow}= | ${10000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${rts_per_flow} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4scale20k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4-ip4scale20k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4-ip4scale20k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4-ip4scale20k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip4-ip4scale20k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-ethip4-ip4scale20k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4-ip4scale20k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4-ip4scale20k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-ethip4-ip4scale20k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-ethip4-ip4scale20k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip4-ip4scale20k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-ethip4-ip4scale20k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-ethip4-ip4scale20k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-ethip4-ip4scale20k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-ethip4-ip4scale20k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-ethip4-ip4scale20k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip4-ip4scale20k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-ethip4-ip4scale20k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-ndrchk.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-ndrchk.robot new file mode 100644 index 0000000000..84fc806d23 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-ndrchk.robot @@ -0,0 +1,210 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_2M +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput IPv4 routing verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and 2x1M static IPv4 /32 route entries. DUT1 and DUT2 tested +| ... | with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-NDR value is periodically updated acording to +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long +| ... | performance tests for the same DUT confiiguration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 1M flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and static payload. Incrementing of IP.dst (IPv4 destination address) +| ... | field is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${rts_per_flow}= | ${1000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${rts_per_flow} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4scale2m-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 3.7mpps. +| | [Tags] | 64B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 3.7mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc02-1518B-1t1c-ethip4-ip4scale2m-ndrchk +| | [Documentation] +| | ... | Verify ref-NDR for 1518 Byte frames using single trial throughput +| | ... | test. DUT runs IPv4 routing config with 1 thread, 1 phy core, 1 +| | ... | receive queue per NIC port at 2x 812743pps. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc03-9000B-1t1c-ethip4-ip4scale2m-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc04-64B-2t2c-ethip4-ip4scale2m-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 7.6mpps. +| | [Tags] | 64B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 7.6mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc05-1518B-2t2c-ethip4-ip4scale2m-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc06-9000B-2t2c-ethip4-ip4scale2m-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc07-64B-4t4c-ethip4-ip4scale2m-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 10.4mpps. +| | [Tags] | 64B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 10.4mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc08-1518B-4t4c-ethip4-ip4scale2m-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc09-9000B-4t4c-ethip4-ip4scale2m-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot new file mode 100644 index 0000000000..920bb8f42d --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot @@ -0,0 +1,457 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_2M +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and 2x1M static IPv4 /32 route entries. DUT1 and DUT2 tested +| ... | with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 1M flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. Incrementing of IP.dst (IPv4 destination address) field +| ... | is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +| ${rts_per_flow}= | ${1000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${rts_per_flow} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4scale2m-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4-ip4scale2m-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4-ip4scale2m-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4-ip4scale2m-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip4-ip4scale2m-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-ethip4-ip4scale2m-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4-ip4scale2m-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4-ip4scale2m-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-ethip4-ip4scale2m-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-ethip4-ip4scale2m-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip4-ip4scale2m-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-ethip4-ip4scale2m-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-ethip4-ip4scale2m-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-ethip4-ip4scale2m-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-ethip4-ip4scale2m-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-ethip4-ip4scale2m-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip4-ip4scale2m-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-ethip4-ip4scale2m-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-pdrchk.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-pdrchk.robot new file mode 100644 index 0000000000..0a5133aff1 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4scale2m-pdrchk.robot @@ -0,0 +1,185 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | SCALE | FIB_2M +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance pdrchk test +| ... +| Documentation | *Reference PDR throughput IPv4 routing verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and 2x1M static IPv4 /32 route entries. DUT1 and DUT2 tested +| ... | with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG verifies throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. Ref-PDR value is periodically updated acording +| ... | to formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 1M flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and static payload. Incrementing of IP.dst (IPv4 destination address) +| ... | field is applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${rts_per_flow}= | ${1000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${rts_per_flow} + +*** Keywords *** +| Check PDR for IPv4 routing +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with ${wt} thread, ${wt} phy\ +| | ... | core, ${rxq} receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for ${framesize} Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with partial loss | ${perf_trial_duration} +| | ... | ${rate} | ${framesize} | ${traffic_profile} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4scale2m-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing +| | framesize=${64} | rate=3.0mpps | wt=1 | rxq=1 + +| tc02-1518B-1t1c-ethip4-ip4scale2m-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | trial throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing +| | framesize=${1518} | rate=600000pps | wt=1 | rxq=1 + +| tc03-9000B-1t1c-ethip4-ip4scale2m-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing +| | framesize=${9000} | rate=100000pps | wt=1 | rxq=1 + +| tc04-64B-2t2c-ethip4-ip4scale2m-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing +| | framesize=${64} | rate=7.0mpps | wt=2 | rxq=1 + +| tc05-1518B-2t2c-ethip4-ip4scale2m-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing +| | framesize=${1518} | rate=500000pps | wt=2 | rxq=1 + +| tc06-9000B-2t2c-ethip4-ip4scale2m-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing +| | framesize=${9000} | rate=100000pps | wt=2 | rxq=1 + +| tc07-64B-4t4c-ethip4-ip4scale2m-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing +| | framesize=${64} | rate=10.0mpps | wt=4 | rxq=2 + +| tc08-1518B-4t4c-ethip4-ip4scale2m-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing +| | framesize=${1518} | rate=500000pps | wt=4 | rxq=2 + +| tc09-9000B-4t4c-ethip4-ip4scale2m-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-PDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing +| | framesize=${9000} | rate=100000pps | wt=4 | rxq=2 diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot new file mode 100644 index 0000000000..4eb3862e0f --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot @@ -0,0 +1,229 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/ip/snat.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | BASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test with SNAT +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... +| Documentation | *SNAT performance test cases* +| ... +| ... | *High level description* +| ... +| ... | - NDR and PDR tests +| ... | - 3-node topology, TG-DUT1-DUT2-TG, SNAT is enabled between DUTs. +| ... | - Cores / threads: 1t1c and 2t2c +| ... | - Framesize: 64B, 1518B, IMIX +| ... | - Packet: ETH / IP(src, dst) / UDP(src_port, dst_port) / payload +| ... | - scale: src: 1 user, 10 users, 100 users, ..., 4000 up to the memory +| ... | limit; 15 ports per user +| ... +| ... | *Low level description* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and two static IPv4 /24 and IPv4/20 route entries. DUT1 and DUT2 +| ... | tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, one flow per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with UDP header and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4udp-1u15p + +*** Test Cases *** +| tc01-64B-1t1c-ethip4udp-ip4base-udpsrcscale15-snat-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 1 user and 15 ports (sessions) per user. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4udp-ip4base-udpsrcscale15-snat-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 1 user and 15 ports (sessions) per user. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4udp-ip4base-udpsrcscale15-snat-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 1 user and 15 ports (sessions) per user. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4udp-ip4base-udpsrcscale15-snat-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 1 user and 15 ports (sessions) per user. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-ethip4udp-ip4base-udpsrcscale15-snat-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 1 user and 15 ports (sessions) per user. +| | ... | [Ver] Find NDR for IMIX frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-ethip4udp-ip4base-udpsrcscale15-snat-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 1 user and 15 ports (sessions) per user. +| | ... | [Ver] Find PDR for IMIX frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot new file mode 100644 index 0000000000..28b44ebfc6 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot @@ -0,0 +1,230 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/ip/snat.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | SRC_USER_10 +| ... | SCALE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test with SNAT +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... +| Documentation | *SNAT performance test cases* +| ... +| ... | *High level description* +| ... +| ... | - NDR and PDR tests +| ... | - 3-node topology, TG-DUT1-DUT2-TG, SNAT is enabled between DUTs. +| ... | - Cores / threads: 1t1c and 2t2c +| ... | - Framesize: 64B, 1518B, IMIX +| ... | - Packet: ETH / IP(src, dst) / UDP(src_port, dst_port) / payload +| ... | - scale: src: 1 user, 10 users, 100 users, ..., 4000 up to the memory +| ... | limit; 15 ports per user +| ... +| ... | *Low level description* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and two static IPv4 /24 and IPv4/20 route entries. DUT1 and DUT2 +| ... | tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, one flow per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with UDP header and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4udp-10u15p + +*** Test Cases *** +| tc01-64B-1t1c-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 10 users and 15 ports (sessions) per user. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4udp-ip4scale10-udpsrcscale15-snat-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 10 users and 15 ports (sessions) per user. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 10 users and 15 ports (sessions) per user. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4udp-ip4scale10-udpsrcscale15-snat-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 10 users and 15 ports (sessions) per user. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 10 users and 15 ports (sessions) per user. +| | ... | [Ver] Find NDR for IMIX frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-ethip4udp-ip4scale10-udpsrcscale15-snat-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 10 users and 15 ports (sessions) per user. +| | ... | [Ver] Find PDR for IMIX frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot new file mode 100644 index 0000000000..9f683679e2 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot @@ -0,0 +1,230 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/ip/snat.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | SRC_USER_100 +| ... | SCALE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test with SNAT +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... +| Documentation | *SNAT performance test cases* +| ... +| ... | *High level description* +| ... +| ... | - NDR and PDR tests +| ... | - 3-node topology, TG-DUT1-DUT2-TG, SNAT is enabled between DUTs. +| ... | - Cores / threads: 1t1c and 2t2c +| ... | - Framesize: 64B, 1518B, IMIX +| ... | - Packet: ETH / IP(src, dst) / UDP(src_port, dst_port) / payload +| ... | - scale: src: 1 user, 10 users, 100 users, ..., 4000 up to the memory +| ... | limit; 15 ports per user +| ... +| ... | *Low level description* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and two static IPv4 /24 and IPv4/20 route entries. DUT1 and DUT2 +| ... | tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, one flow per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with UDP header and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4udp-100u15p + +*** Test Cases *** +| tc01-64B-1t1c-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 100 users and 15 ports (sessions) per user. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4udp-ip4scale100-udpsrcscale15-snat-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 100 users and 15 ports (sessions) per user. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 100 users and 15 ports (sessions) per user. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4udp-ip4scale100-udpsrcscale15-snat-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 100 users and 15 ports (sessions) per user. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 100 users and 15 ports (sessions) per user. +| | ... | [Ver] Find NDR for IMIX frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-ethip4udp-ip4scale100-udpsrcscale15-snat-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 100 users and 15 ports (sessions) per user. +| | ... | [Ver] Find PDR for IMIX frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot new file mode 100644 index 0000000000..73ede552b2 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot @@ -0,0 +1,230 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/ip/snat.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | SRC_USER_1000 +| ... | SCALE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test with SNAT +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... +| Documentation | *SNAT performance test cases* +| ... +| ... | *High level description* +| ... +| ... | - NDR and PDR tests +| ... | - 3-node topology, TG-DUT1-DUT2-TG, SNAT is enabled between DUTs. +| ... | - Cores / threads: 1t1c and 2t2c +| ... | - Framesize: 64B, 1518B, IMIX +| ... | - Packet: ETH / IP(src, dst) / UDP(src_port, dst_port) / payload +| ... | - scale: src: 1 user, 10 users, 100 users, ..., 4000 up to the memory +| ... | limit; 15 ports per user +| ... +| ... | *Low level description* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and two static IPv4 /24 and IPv4/20 route entries. DUT1 and DUT2 +| ... | tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, one flow per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with UDP header and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4udp-1000u15p + +*** Test Cases *** +| tc01-64B-1t1c-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 1000 users and 15 ports (sessions) per user. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4udp-ip4scale1000-udpsrcscale15-snat-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 1000 users and 15 ports (sessions) per user. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 1000 users and 15 ports (sessions) per user. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4udp-ip4scale1000-udpsrcscale15-snat-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 1000 users and 15 ports (sessions) per user. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 1000 users and 15 ports (sessions) per user. +| | ... | [Ver] Find NDR for IMIX frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-ethip4udp-ip4scale1000-udpsrcscale15-snat-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 1000 users and 15 ports (sessions) per user. +| | ... | [Ver] Find PDR for IMIX frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot new file mode 100644 index 0000000000..bce900f0ec --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot @@ -0,0 +1,124 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/ip/snat.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | SRC_USER_2000 +| ... | SCALE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test with SNAT +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... +| Documentation | *SNAT performance test cases* +| ... +| ... | *High level description* +| ... +| ... | - NDR and PDR tests +| ... | - 3-node topology, TG-DUT1-DUT2-TG, SNAT is enabled between DUTs. +| ... | - Cores / threads: 1t1c and 2t2c +| ... | - Framesize: 64B, 1518B, IMIX +| ... | - Packet: ETH / IP(src, dst) / UDP(src_port, dst_port) / payload +| ... | - scale: src: 1 user, 10 users, 100 users, ..., 4000 up to the memory +| ... | limit; 15 ports per user +| ... +| ... | *Low level description* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and two static IPv4 /24 and IPv4/20 route entries. DUT1 and DUT2 +| ... | tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, one flow per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with UDP header and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4udp-2000u15p + +*** Test Cases *** +| tc01-64B-1t1c-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 2000 users and 15 ports (sessions) per user. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4udp-ip4scale2000-udpsrcscale15-snat-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 2000 users and 15 ports (sessions) per user. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot new file mode 100644 index 0000000000..2b91618470 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot @@ -0,0 +1,124 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/ip/snat.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | FEATURE | SNAT | SRC_USER_4000 +| ... | SCALE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test with SNAT +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... +| Documentation | *SNAT performance test cases* +| ... +| ... | *High level description* +| ... +| ... | - NDR and PDR tests +| ... | - 3-node topology, TG-DUT1-DUT2-TG, SNAT is enabled between DUTs. +| ... | - Cores / threads: 1t1c and 2t2c +| ... | - Framesize: 64B, 1518B, IMIX +| ... | - Packet: ETH / IP(src, dst) / UDP(src_port, dst_port) / payload +| ... | - scale: src: 1 user, 10 users, 100 users, ..., 4000 up to the memory +| ... | limit; 15 ports per user +| ... +| ... | *Low level description* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and two static IPv4 /24 and IPv4/20 route entries. DUT1 and DUT2 +| ... | tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, one flow per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with UDP header and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4udp-4000u15p + +*** Test Cases *** +| tc01-64B-1t1c-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 4000 users and 15 ports (sessions) per user. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4udp-ip4scale4000-udpsrcscale15-snat-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. SNAT is configured between DUTs -\ +| | ... | 4000 users and 15 ports (sessions) per user. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Add SNAT to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize SNAT in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip4/40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot b/tests/vpp/perf/ip4/40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot new file mode 100644 index 0000000000..1dbda15832 --- /dev/null +++ b/tests/vpp/perf/ip4/40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot @@ -0,0 +1,257 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.topology.Topology +| Library | resources.libraries.python.NodePath +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT1']} +| ... | WITH NAME | dut1_v4 +| Library | resources.libraries.python.IPv4Setup.Dut | ${nodes['DUT2']} +| ... | WITH NAME | dut2_v4 +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-XL710 | ETH | IP4FWD | BASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-XL710 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput IPv4 routing test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and two static IPv4 /24 route entries. DUT1 and DUT2 tested with +| ... | 2p40GE NIC XL710 by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G} | ${24500000000} +# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps} | ${18750000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 18.75Mpps rate, step 100kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc03-1518B-1t1c-ethip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 24.5G rate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc07-64B-2t2c-ethip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 18.75Mpps rate, step 100kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc09-1518B-2t2c-ethip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 24.5G rate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc13-64B-4t4c-ethip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 18.75Mpps rate, step 100kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc15-1518B-4t4c-ethip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 24.5G rate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc19-IMIX-1t1c-ethip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame size +| | ... | using binary search start at 24.5G rate, step 100kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc20-IMIX-2t2c-ethip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 thread, 2 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame size +| | ... | using binary search start at 24.5G rate, step 100kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc21-IMIX-4t4c-ethip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 thread, 4 phy core, \ +| | ... | 2 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame size +| | ... | using binary search start at 24.5G rate, step 100kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-ndrchk.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-ndrchk.robot new file mode 100644 index 0000000000..79f0bbc772 --- /dev/null +++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-ndrchk.robot @@ -0,0 +1,266 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot +| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | IP4FWD | ENCAP | LISP | IP4UNRLAY | IP4OVRLAY +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput Lisp tunnel verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv4 on DUT1-DUT2\ +| ... | Eth-IPv4 on TG-DUTn for IPv4 routing over LISPoIPv4 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ +| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ +| ... | DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520\ +| ... | Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies\ +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet\ +| ... | loss tolerance. Ref-NDR value is periodically updated acording to\ +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long\ +| ... | performance tests for the same DUT confiiguration. Test packets are\ +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3\ +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ +| ... | all packets containing Ethernet header, IPv4 header with\ +| ... | IP protocol=61 and generated payload. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4lispip4-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial throughput\ +| | ... | test at 2x 1.9mpps. +| | [Tags] | 64B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 1.9mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc02-1480B-1t1c-ethip4lispip4-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1480 Byte frames using single trial\ +| | ... | throughput test at 2x 740000pps. +| | [Tags] | 1480B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1480} +| | ${rate}= | Set Variable | 740000pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc03-9000B-1t1c-ethip4lispip4-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x 120000pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 120000pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc04-64B-2t2c-ethip4lispip4-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x 3.6mpps. +| | [Tags] | 64B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 3.6mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc05-1480B-2t2c-ethip4lispip4-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1480 Byte frames using single trial\ +| | ... | throughput test at 2x 740000pps. +| | [Tags] | 1480B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1480} +| | ${rate}= | Set Variable | 740000pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc06-9000B-2t2c-ethip4lispip4-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x 120000pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 120000pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc07-64B-4t4c-ethip4lispip4-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x 3.5mpps. +| | [Tags] | 64B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 3.5mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-1480B-4t4c-ethip4lispip4-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 1480 Byte frames using single trial\ +| | ... | throughput test at 2x 740000pps. +| | [Tags] | 1480B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1480} +| | ${rate}= | Set Variable | 740000pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc09-9000B-4t4c-ethip4lispip4-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x 120000pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 120000pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot new file mode 100644 index 0000000000..2dc5be4981 --- /dev/null +++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot @@ -0,0 +1,595 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot +| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | IP4FWD | ENCAP | LISP | IP4UNRLAY | IP4OVRLAY +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC6830: Pkt throughput Lisp test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv4 on DUT1-DUT2,\ +| ... | Eth-IPv4 on TG-DUTn for IPv4 routing over LISPoIPv4 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ +| ... | routing and static routes. LISPoIPv4 tunnel is configured between DUT1\ +| ... | and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ +| ... | of packets transmitted. NDR and PDR are discovered for different\ +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4lispip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4lispip4-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1480B-1t1c-ethip4lispip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 1480 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps. +| | [Tags] | 1480B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1480} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1480B-1t1c-ethip4lispip4-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 1480 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1480B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1480} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip4lispip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-ethip4lispip4-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4lispip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4lispip4-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1480B-2t2c-ethip4lispip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 1480 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps. +| | [Tags] | 1480B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1480} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1480B-2t2c-ethip4lispip4-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 1480 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1480B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1480} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip4lispip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-ethip4lispip4-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-ethip4lispip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-ethip4lispip4-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1480B-4t4c-ethip4lispip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 1480 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps. +| | [Tags] | 1480B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1480} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1480B-4t4c-ethip4lispip4-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 1480 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1480B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1480} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip4lispip4-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-ethip4lispip4-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-pdrchk.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-pdrchk.robot new file mode 100644 index 0000000000..bebbfbc938 --- /dev/null +++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip4-ip4base-pdrchk.robot @@ -0,0 +1,193 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot +| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK +| ... | NIC_Intel-X520-DA2 | IP4FWD | ENCAP | LISP | IP4UNRLAY | IP4OVRLAY +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance pdrchk test +| ... +| Documentation | *Reference PDR throughput Lisp tunnel verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv4 on DUT1-DUT2\ +| ... | Eth-IPv4 on TG-DUTn for IPv4 routing over LISPoIPv4 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ +| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ +| ... | DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520\ +| ... | Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies\ +| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet\ +| ... | loss tolerance. Ref-PDR value is periodically updated acording to\ +| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long\ +| ... | performance tests for the same DUT confiiguration. Test packets are\ +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3\ +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ +| ... | all packets containing Ethernet header, IPv4 header with\ +| ... | IP protocol=61 and generated payload. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Keywords *** +| Check PDR for Lisp IPv4 over IPv4 forwarding +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with ${wt} thread, ${wt} phy core,\ +| | ... | ${rxq} receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for ${framesize} Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4} | ${dut1_to_tg_ip4} | ${dut2_to_dut1_ip4} +| | ... | ${dut2_to_tg_ip4} | ${prefix4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4_eid} | ${dut2_ip4_eid} +| | ... | ${dut1_ip4_static_adjacency} | ${dut2_ip4_static_adjacency} +| | Then Traffic should pass with partial loss | ${perf_trial_duration} +| | ... | ${rate} | ${framesize} | ${traffic_profile} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4lispip4-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv4 over IPv4 forwarding +| | framesize=${64} | rate=1.9mpps | wt=1 | rxq=1 + +| tc02-1480B-1t1c-ethip4lispip4-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1480 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1480B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv4 over IPv4 forwarding +| | framesize=${1480} | rate=370000pps | wt=1 | rxq=1 + +| tc03-9000B-1t1c-ethip4lispip4-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv4 over IPv4 forwarding +| | framesize=${9000} | rate=60000pps | wt=1 | rxq=1 + +| tc04-64B-2t2c-ethip4lispip4-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv4 over IPv4 forwarding +| | framesize=${64} | rate=3.6mpps | wt=2 | rxq=1 + +| tc05-1480B-2t2c-ethip4lispip4-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1480 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1480B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv4 over IPv4 forwarding +| | framesize=${1480} | rate=370000pps | wt=2 | rxq=1 + +| tc06-9000B-2t2c-ethip4lispip4-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv4 over IPv4 forwarding +| | framesize=${9000} | rate=60000pps | wt=2 | rxq=1 + +| tc07-64B-4t4c-ethip4lispip4-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv4 over IPv4 forwarding +| | framesize=${64} | rate=3.5mpps | wt=4 | rxq=2 + +| tc08-1480B-4t4c-ethip4lispip4-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 1480 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1480B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv4 over IPv4 forwarding +| | framesize=${1480} | rate=370000pps | wt=4 | rxq=2 + +| tc09-9000B-4t4c-ethip4lispip4-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv4 over IPv4 forwarding +| | framesize=${9000} | rate=60000pps | wt=4 | rxq=2 diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-ndrchk.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-ndrchk.robot new file mode 100644 index 0000000000..cdcc200b55 --- /dev/null +++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-ndrchk.robot @@ -0,0 +1,266 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot +| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | IP4FWD | ENCAP | LISP | IP6UNRLAY | IP4OVRLAY +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput Lisp tunnel verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv6 on DUT1-DUT2,\ +| ... | Eth-IPv4 on TG-DUTn for IPv4 routing over LISPoIPv6 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ +| ... | routing and static routes. LISPoIPv6 tunnel is configured between\ +| ... | DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic\ +| ... | by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies\ +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet\ +| ... | loss tolerance. Ref-NDR value is periodically updated acording to\ +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long +| ... | performance tests for the same DUT confiiguration. Test packets are\ +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3\ +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ +| ... | all packets containing Ethernet header, IPv4 header or IPv6 header with\ +| ... | IP protocol=61 and generated payload. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4lispip6-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x 1.53mpps. +| | [Tags] | 64B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 1.53mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc02-1460B-1t1c-ethip4lispip6-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ +| | ... | throughput test at 2x 720000pps. +| | [Tags] | 1460B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1460} +| | ${rate}= | Set Variable | 720000pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc03-9000B-1t1c-ethip4lispip6-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x 120000pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 120000pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc04-64B-2t2c-ethip4lispip6-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x 3.25mpps. +| | [Tags] | 64B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 3.25mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc05-1460B-2t2c-ethip4lispip6-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ +| | ... | throughput test at 2x 720000pps. +| | [Tags] | 1460B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1460} +| | ${rate}= | Set Variable | 720000pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc06-9000B-2t2c-ethip4lispip6-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x 120000pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 120000pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc07-64B-4t4c-ethip4lispip6-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x 3.12mpps. +| | [Tags] | 64B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 3.12mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-1460B-4t4c-ethip4lispip6-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ +| | ... | throughput test at 2x 720000pps. +| | [Tags] | 1460B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1460} +| | ${rate}= | Set Variable | 720000pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc09-9000B-4t4c-ethip4lispip6-ip4base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x 120000pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 120000pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot new file mode 100644 index 0000000000..a7f730ac40 --- /dev/null +++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot @@ -0,0 +1,596 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot +| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | IP4FWD | ENCAP | LISP | IP6UNRLAY | IP4OVRLAY +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC6830: Pkt throughput Lisp test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv6 on DUT1-DUT2 and\ +| ... | Eth-IPv4 on TG-DUTn for IPv4 routing over LISPoIPv6 tunnel.\ +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ +| ... | routing and static routes. LISPoIPv6 tunnel is configured\ +| ... | between DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520\ +| ... | Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ +| ... | of packets transmitted. NDR and PDR are discovered for different\ +| ... | Ethernet L2 frame sizes using either binary search or linear search\ +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4lispip6-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4lispip6-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1460B-1t1c-ethip4lispip6-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 1460 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps. +| | [Tags] | 1460B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1460} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1460B-1t1c-ethip4lispip6-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 1460 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1460B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1460} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip4lispip6-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-ethip4lispip6-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4lispip6-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4lispip6-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1460B-2t2c-ethip4lispip6-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 1460 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps. +| | [Tags] | 1460B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1460} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1460B-2t2c-ethip4lispip6-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 1460 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1460B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1460} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip4lispip6-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-ethip4lispip6-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-ethip4lispip6-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-ethip4lispip6-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1460B-4t4c-ethip4lispip6-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 1460 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps. +| | [Tags] | 1460B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1460} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1460B-4t4c-ethip4lispip6-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 1460 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1460B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1460} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip4lispip6-ip4base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-ethip4lispip6-ip4base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-pdrchk.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-pdrchk.robot new file mode 100644 index 0000000000..f8190674a7 --- /dev/null +++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4lispip6-ip4base-pdrchk.robot @@ -0,0 +1,193 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot +| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK +| ... | NIC_Intel-X520-DA2 | IP4FWD | ENCAP | LISP | IP6UNRLAY | IP4OVRLAY +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance pdrchk test +| ... +| Documentation | *Reference PDR throughput Lisp tunnel verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-LISP-IPv6 on DUT1-DUT2,\ +| ... | Eth-IPv4 on TG-DUTn for IPv4 routing over LISPoIPv6 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4\ +| ... | routing and static routes. LISPoIPv6 tunnel is configured between\ +| ... | DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic\ +| ... | by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies\ +| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet\ +| ... | loss tolerance. Ref-PDR value is periodically updated acording to\ +| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long +| ... | performance tests for the same DUT confiiguration. Test packets are\ +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3\ +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ +| ... | all packets containing Ethernet header, IPv4 header or IPv6 header with\ +| ... | IP protocol=61 and generated payload. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Keywords *** +| Check PDR for Lisp IPv4 over IPv6 forwarding +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with ${wt} thread, ${wt} phy core,\ +| | ... | ${rxq} receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for ${framesize} Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv4 over IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip4o6} | ${dut1_to_tg_ip4o6} | ${dut2_to_dut1_ip4o6} +| | ... | ${dut2_to_tg_ip4o6} | ${tg_prefix4o6} | ${dut_prefix4o6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip4o6_eid} | ${dut2_ip4o6_eid} +| | ... | ${dut1_ip4o6_static_adjacency} | ${dut2_ip4o6_static_adjacency} +| | Then Traffic should pass with partial loss | ${perf_trial_duration} +| | ... | ${rate} | ${framesize} | ${traffic_profile} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4lispip6-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv4 over IPv6 forwarding +| | framesize=${64} | rate=1.53mpps | wt=1 | rxq=1 + +| tc02-1460B-1t1c-ethip4lispip6-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1460B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv4 over IPv6 forwarding +| | framesize=${1460} | rate=360000pps | wt=1 | rxq=1 + +| tc03-9000B-1t1c-ethip4lispip6-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv4 over IPv6 forwarding +| | framesize=${9000} | rate=60000pps | wt=1 | rxq=1 + +| tc04-64B-2t2c-ethip4lispip6-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv4 over IPv6 forwarding +| | framesize=${64} | rate=3.25mpps | wt=2 | rxq=1 + +| tc05-1460B-2t2c-ethip4lispip6-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1460B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv4 over IPv6 forwarding +| | framesize=${1460} | rate=360000pps | wt=2 | rxq=1 + +| tc06-9000B-2t2c-ethip4lispip6-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv4 over IPv6 forwarding +| | framesize=${9000} | rate=60000pps | wt=2 | rxq=1 + +| tc07-64B-4t4c-ethip4lispip6-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv4 over IPv6 forwarding +| | framesize=${64} | rate=3.12mpps | wt=4 | rxq=2 + +| tc08-1460B-4t4c-ethip4lispip6-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1460B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv4 over IPv6 forwarding +| | framesize=${1460} | rate=360000pps | wt=4 | rxq=2 + +| tc09-9000B-4t4c-ethip4lispip6-ip4base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv4 over IPv6 forwarding +| | framesize=${9000} | rate=60000pps | wt=4 | rxq=2 diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot new file mode 100644 index 0000000000..f41f619375 --- /dev/null +++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot @@ -0,0 +1,487 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Packet throughput L2BD with VXLANoIPv4 test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain on TG-DUTn. +| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge +| ... | domain. VXLAN tunnels are configured between L2BDs on DUT1 and DUT2. +| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | generated payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +| ${vxlan_overhead} | ${50} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4vxlan-l2bdbasemaclrn-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4vxlan-l2bdbasemaclrn-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4vxlan-l2bdbasemaclrn-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4vxlan-l2bdbasemaclrn-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip4vxlan-l2bdbasemaclrn-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 5kpps. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-ethip4vxlan-l2bdbasemaclrn-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD forwarding config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 5kpps, LT=0.5%. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4vxlan-l2bdbasemaclrn-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD forwarding config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4vxlan-l2bdbasemaclrn-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD forwarding config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-ethip4vxlan-l2bdbasemaclrn-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD forwarding config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-ethip4vxlan-l2bdbasemaclrn-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD forwarding config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip4vxlan-l2bdbasemaclrn-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD forwarding config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 5kpps. +| | ... +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-ethip4vxlan-l2bdbasemaclrn-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD forwarding config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 5kpps, LT=0.5%. +| | ... +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-ethip4vxlan-l2bdbasemaclrn-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD forwarding config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-ethip4vxlan-l2bdbasemaclrn-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD forwarding config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-ethip4vxlan-l2bdbasemaclrn-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD forwarding config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-ethip4vxlan-l2bdbasemaclrn-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD forwarding config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip4vxlan-l2bdbasemaclrn-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD forwarding config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 5kpps. +| | ... +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-ethip4vxlan-l2bdbasemaclrn-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD forwarding config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 5kpps, LT=0.5%. +| | ... +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-pdrchk.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-pdrchk.robot new file mode 100644 index 0000000000..dee56213c7 --- /dev/null +++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-pdrchk.robot @@ -0,0 +1,186 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK +| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance pdrchk test +| ... +| Documentation | *RFC2544: Packet throughput L2BD with VXLANoIPv4 test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain on TG-DUTn. +| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge +| ... | domain. VXLAN tunnels are configured between L2BDs on DUT1 and DUT2. +| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG verifies throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. Ref-PDR value is periodically updated acording +| ... | to formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and generated payload. MAC addresses are matching MAC addresses of the +| ... | TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348. + +*** Variables *** +| ${vxlan_overhead} | ${50} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| Check PDR for L2BD forwarding with VXLAN over IPv4 +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config config with ${wt} thread, ${wt} phy\ +| | ... | core, ${rxq} receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for ${framesize} Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology +| | Then Traffic should pass with partial loss | ${perf_trial_duration} +| | ... | ${rate} | ${framesize} | ${traffic_profile} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4vxlan-l2bdbasemaclrn-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2BD forwarding with VXLAN over IPv4 +| | framesize=${64 + ${vxlan_overhead}} | rate=2.4mpps | wt=1 | rxq=1 + +| tc02-1518B-1t1c-ethip4vxlan-l2bdbasemaclrn-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2BD forwarding with VXLAN over IPv4 +| | framesize=${1518 + ${vxlan_overhead}} | rate=700000pps | wt=1 | rxq=1 + +| tc03-9000B-1t1c-ethip4vxlan-l2bdbasemaclrn-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2BD forwarding with VXLAN over IPv4 +| | framesize=${9000 + ${vxlan_overhead}} | rate=100000pps | wt=1 | rxq=1 + +| tc04-64B-2t2c-ethip4vxlan-l2bdbasemaclrn-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2BD forwarding with VXLAN over IPv4 +| | framesize=${64 + ${vxlan_overhead}} | rate=5.2mpps | wt=2 | rxq=1 + +| tc05-1518B-2t2c-ethip4vxlan-l2bdbasemaclrn-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2BD forwarding with VXLAN over IPv4 +| | framesize=${1518 + ${vxlan_overhead}} | rate=650000pps | wt=2 | rxq=1 + +| tc06-9000B-2t2c-ethip4vxlan-l2bdbasemaclrn-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2BD forwarding with VXLAN over IPv4 +| | framesize=${9000 + ${vxlan_overhead}} | rate=100000pps | wt=2 | rxq=1 + +| tc07-64B-4t4c-ethip4vxlan-l2bdbasemaclrn-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2BD forwarding with VXLAN over IPv4 +| | framesize=${64 + ${vxlan_overhead}} | rate=6.5mpps | wt=4 | rxq=2 + +| tc08-1518B-4t4c-ethip4vxlan-l2bdbasemaclrn-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2BD forwarding with VXLAN over IPv4 +| | framesize=${1518 + ${vxlan_overhead}} | rate=700000pps | wt=4 | rxq=2 + +| tc09-9000B-4t4c-ethip4vxlan-l2bdbasemaclrn-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2BD forwarding with VXLAN over IPv4 +| | framesize=${9000 + ${vxlan_overhead}} | rate=100000pps | wt=4 | rxq=2 diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-ndrchk.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-ndrchk.robot new file mode 100644 index 0000000000..1a07df20a3 --- /dev/null +++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-ndrchk.robot @@ -0,0 +1,190 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | L2XCFWD | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput L2XC with VXLANoIPv4 verify test\ +| ... | cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross-connect on TG-DUTn. +| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- +| ... | connect. VXLAN tunnels are configured between L2XCs on DUT1 and DUT2. +| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-NDR value is periodically updated acording to +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and generated payload. MAC addresses are matching MAC addresses of the +| ... | TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4vxlan-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 2.4mpps. +| | [Tags] | 64B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 2.4mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc02-1518B-1t1c-ethip4vxlan-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 787153pps. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 787153pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc03-9000B-1t1c-ethip4vxlan-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 137816pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 137816pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc04-64B-2t2c-ethip4vxlan-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 5.2mpps. +| | [Tags] | 64B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 5.2mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc05-1518B-2t2c-ethip4vxlan-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 787153pps. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 787153pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc06-9000B-2t2c-ethip4vxlan-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 137816pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 137816pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc07-64B-4t4c-ethip4vxlan-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 8.4mpps. +| | [Tags] | 64B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 8.4mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-1518B-4t4c-ethip4vxlan-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 787153pps. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 787153pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc09-9000B-4t4c-ethip4vxlan-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 137816pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 137816pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot new file mode 100644 index 0000000000..8a4d7422b6 --- /dev/null +++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot @@ -0,0 +1,432 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | L2XCFWD | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput L2XC with VXLANoIPv4 test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross-connect on TG-DUTn. +| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- +| ... | connect. VXLAN tunnels are configured between L2XCs on DUT1 and DUT2. +| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | generated payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4vxlan-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4vxlan-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4vxlan-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4vxlan-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip4vxlan-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-ethip4vxlan-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4vxlan-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4vxlan-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-ethip4vxlan-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-ethip4vxlan-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip4vxlan-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-ethip4vxlan-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-ethip4vxlan-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-ethip4vxlan-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-ethip4vxlan-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-ethip4vxlan-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip4vxlan-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-ethip4vxlan-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 50} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-pdrchk.robot b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-pdrchk.robot new file mode 100644 index 0000000000..cfd119b300 --- /dev/null +++ b/tests/vpp/perf/ip4_tunnels/10ge2p1x520-ethip4vxlan-l2xcbase-pdrchk.robot @@ -0,0 +1,186 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK +| ... | NIC_Intel-X520-DA2 | L2XCFWD | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance pdrchk test +| ... +| Documentation | *Reference PDR throughput L2XC with VXLANoIPv4 verify test\ +| ... | cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross-connect on TG-DUTn. +| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- +| ... | connect. VXLAN tunnels are configured between L2XCs on DUT1 and DUT2. +| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-PDR value is periodically updated acording to +| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 254 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and generated payload. MAC addresses are matching MAC addresses of the +| ... | TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348. + +*** Variables *** +| ${vxlan_overhead} | ${50} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| Check PDR for L2 xconnect with VXLAN over IPv4 +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with ${wt} thread, ${wt} phy core,\ +| | ... | ${rxq} receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for ${framesize} Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect with VXLANoIPv4 in 3-node circular topology +| | Then Traffic should pass with partial loss | ${perf_trial_duration} +| | ... | ${rate} | ${framesize} | ${traffic_profile} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4vxlan-l2xcbase-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2 xconnect with VXLAN over IPv4 +| | framesize=${64 + ${vxlan_overhead}} | rate=2.0mpps | wt=1 | rxq=1 + +| tc02-1518B-1t1c-ethip4vxlan-l2xcbase-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2 xconnect with VXLAN over IPv4 +| | framesize=${1518 + ${vxlan_overhead}} | rate=500000pps | wt=1 | rxq=1 + +| tc03-9000B-1t1c-ethip4vxlan-l2xcbase-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2 xconnect with VXLAN over IPv4 +| | framesize=${9000 + ${vxlan_overhead}} | rate=100000pps | wt=1 | rxq=1 + +| tc04-64B-2t2c-ethip4vxlan-l2xcbase-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 xconnect with VXLAN over IPv4 +| | framesize=${64 + ${vxlan_overhead}} | rate=5.0mpps | wt=2 | rxq=1 + +| tc05-1518B-2t2c-ethip4vxlan-l2xcbase-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 xconnect with VXLAN over IPv4 +| | framesize=${1518 + ${vxlan_overhead}} | rate=500000pps | wt=2 | rxq=1 + +| tc06-9000B-2t2c-ethip4vxlan-l2xcbase-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 xconnect with VXLAN over IPv4 +| | framesize=${9000 + ${vxlan_overhead}} | rate=100000pps | wt=2 | rxq=1 + +| tc07-64B-4t4c-ethip4vxlan-l2xcbase-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 xconnect with VXLAN over IPv4 +| | framesize=${64 + ${vxlan_overhead}} | rate=6.5mpps | wt=4 | rxq=2 + +| tc08-1518B-4t4c-ethip4vxlan-l2xcbase-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 xconnect with VXLAN over IPv4 +| | framesize=${1518 + ${vxlan_overhead}} | rate=500000pps | wt=4 | rxq=2 + +| tc09-9000B-4t4c-ethip4vxlan-l2xcbase-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 xconnect with VXLAN over IPv4 +| | framesize=${9000 + ${vxlan_overhead}} | rate=100000pps | wt=4 | rxq=2 diff --git a/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrchk.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrchk.robot new file mode 100644 index 0000000000..c619b6530b --- /dev/null +++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrchk.robot @@ -0,0 +1,256 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.Cop +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | FEATURE | COPWHLIST +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput IPv6 whitelist verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 +| ... | routing, two static IPv6 /64 routes and IPv6 COP security whitelist +| ... | ingress /24 filter entries applied on links TG - DUT1 and DUT2 - TG. +| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-NDR value is periodically updated acording to +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv6 header and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 + +*** Test Cases *** +| tc01-78B-1t1c-ethip6-ip6base-copwhtlistbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 78 Byte frames using single trial throughput test +| | ... | at 2x 3.1mpps. +| | [Tags] | 78B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 3.1mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc02-1518B-1t1c-ethip6-ip6base-copwhtlistbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 1518 Byte frames using single trial throughput test +| | ... | at 2x 812743pps. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc03-9000B-1t1c-ethip6-ip6base-copwhtlistbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 9000 Byte frames using single trial throughput test +| | ... | at 2x 138580pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc04-78B-2t2c-ethip6-ip6base-copwhtlistbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 78 Byte frames using single trial throughput test +| | ... | at 2x 5.9mpps. +| | [Tags] | 78B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 5.9mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc05-1518B-2t2c-ethip6-ip6base-copwhtlistbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 1518 Byte frames using single trial throughput test +| | ... | at 2x 812743pps. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc06-9000B-2t2c-ethip6-ip6base-copwhtlistbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 9000 Byte frames using single trial throughput test +| | ... | at 2x 138580pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc07-78B-4t4c-ethip6-ip6base-copwhtlistbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 78 Byte frames using single trial throughput test +| | ... | at 2x 9.4mpps. +| | [Tags] | 78B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 9.4mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-1518B-4t4c-ethip6-ip6base-copwhtlistbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 1518 Byte frames using single trial throughput test +| | ... | at 2x 812743pps. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc09-9000B-4t4c-ethip6-ip6base-copwhtlistbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 9000 Byte frames using single trial throughput test +| | ... | at 2x 138580pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot new file mode 100644 index 0000000000..6808603262 --- /dev/null +++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot @@ -0,0 +1,565 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.Cop +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | FEATURE | COPWHLIST +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput IPv6 whitelist test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 +| ... | routing, two static IPv6 /64 routes and IPv6 COP security whitelist +| ... | ingress /64 filter entries applied on links TG - DUT1 and DUT2 - TG. +| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv6 header and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 + +*** Test Cases *** +| tc01-78B-1t1c-ethip6-ip6base-copwhtlistbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 78 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps. +| | [Tags] | 78B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-78B-1t1c-ethip6-ip6base-copwhtlistbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 78 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps, LT=0.5%. +| | [Tags] | 78B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip6-ip6base-copwhtlistbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip6-ip6base-copwhtlistbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip6-ip6base-copwhtlistbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-ethip6-ip6base-copwhtlistbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-78B-2t2c-ethip6-ip6base-copwhtlistbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 78 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps. +| | [Tags] | 78B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-78B-2t2c-ethip6-ip6base-copwhtlistbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 78 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps, LT=0.5%. +| | [Tags] | 78B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-ethip6-ip6base-copwhtlistbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-ethip6-ip6base-copwhtlistbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip6-ip6base-copwhtlistbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-ethip6-ip6base-copwhtlistbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-78B-4t4c-ethip6-ip6base-copwhtlistbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR +| | ... | for 78 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps. +| | [Tags] | 78B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-78B-4t4c-ethip6-ip6base-copwhtlistbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR +| | ... | for 78 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps, LT=0.5%. +| | [Tags] | 78B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-ethip6-ip6base-copwhtlistbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-ethip6-ip6base-copwhtlistbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip6-ip6base-copwhtlistbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-ethip6-ip6base-copwhtlistbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding in 3-node circular topology +| | And Add fib table | ${dut1} | 2001:1:: | 64 | 1 | local +| | And Add fib table | ${dut2} | 2001:2:: | 64 | 1 | local +| | And COP Add whitelist Entry | ${dut1} | ${dut1_if1} | ip6 | 1 +| | And COP Add whitelist Entry | ${dut2} | ${dut2_if2} | ip6 | 1 +| | And COP interface enable or disable | ${dut1} | ${dut1_if1} | enable +| | And COP interface enable or disable | ${dut2} | ${dut2_if2} | enable +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrchk.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrchk.robot new file mode 100644 index 0000000000..b82a356f1b --- /dev/null +++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrchk.robot @@ -0,0 +1,210 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.Classify.Classify +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | FEATURE | IACLDST +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput IPv6 whitelist verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 +| ... | routing, two static IPv6 /64 routes and IPv6 iAcl security whitelist +| ... | ingress /64 filter entries applied on links TG - DUT1 and DUT2 - TG. +| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-NDR value is periodically updated acording to +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long +| ... | performance tests for the same DUT confiiguration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv6 header and generated +| ... | payload. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 + +*** Test Cases *** +| tc01-78B-1t1c-ethip6-ip6base-iacldstbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 78 Byte frames using single trial throughput test +| | ... | at 2x 3.2mpps. +| | [Tags] | 78B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 3.2mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc02-1518B-1t1c-ethip6-ip6base-iacldstbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 1518 Byte frames using single trial throughput test +| | ... | at 2x 812743pps. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc03-9000B-1t1c-ethip6-ip6base-iacldstbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 9000 Byte frames using single trial throughput test +| | ... | at 2x 138580pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc04-78B-2t2c-ethip6-ip6base-iacldstbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 78 Byte frames using single trial throughput test +| | ... | at 2x 5.7mpps. +| | [Tags] | 78B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 5.7mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc05-1518B-2t2c-ethip6-ip6base-iacldstbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 1518 Byte frames using single trial throughput test +| | ... | at 2x 812743pps. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc06-9000B-2t2c-ethip6-ip6base-iacldstbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 9000 Byte frames using single trial throughput test +| | ... | at 2x 138580pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc07-78B-4t4c-ethip6-ip6base-iacldstbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 4 thread, 4 phy core, 2 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 78 Byte frames using single trial throughput test +| | ... | at 2x 9.2mpps. +| | [Tags] | 78B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 9.2mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-1518B-4t4c-ethip6-ip6base-iacldstbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 4 thread, 4 phy core, 2 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 1518 Byte frames using single trial throughput test +| | ... | at 2x 812743pps. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc09-9000B-4t4c-ethip6-ip6base-iacldstbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 4 thread, 4 phy core, 2 receive queue per NIC port. [Ver] Verify +| | ... | ref-NDR for 9000 Byte frames using single trial throughput test +| | ... | at 2x 138580pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot new file mode 100644 index 0000000000..6ee98fbcc4 --- /dev/null +++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot @@ -0,0 +1,474 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.Classify.Classify +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | FEATURE | IACLDST +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput IPv6 iAcl whitelist test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 +| ... | routing, two static IPv6 /64 routes and IPv6 iAcl security whitelist +| ... | ingress /64 filter entries applied on links TG - DUT1 and DUT2 - TG. +| ... | DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv6 header and generated payload. MAC +| ... | addresses are matching MAC addresses of the TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 + +*** Test Cases *** +| tc01-78B-1t1c-ethip6-ip6base-iacldstbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 78 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps. +| | [Tags] | 78B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-78B-1t1c-ethip6-ip6base-iacldstbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 78 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps, LT=0.5%. +| | [Tags] | 78B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip6-ip6base-iacldstbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip6-ip6base-iacldstbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip6-ip6base-iacldstbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-ethip6-ip6base-iacldstbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-78B-2t2c-ethip6-ip6base-iacldstbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 78 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps. +| | [Tags] | 78B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-78B-2t2c-ethip6-ip6base-iacldstbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 78 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps, LT=0.5%. +| | [Tags] | 78B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-ethip6-ip6base-iacldstbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-ethip6-ip6base-iacldstbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip6-ip6base-iacldstbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find NDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-ethip6-ip6base-iacldstbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. [Ver] Find PDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-78B-4t4c-ethip6-ip6base-iacldstbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR +| | ... | for 78 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps. +| | [Tags] | 78B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-78B-4t4c-ethip6-ip6base-iacldstbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR +| | ... | for 78 Byte frames using binary search start at 10GE linerate, +| | ... | step 100kpps, LT=0.5%. +| | [Tags] | 78B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-ethip6-ip6base-iacldstbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-ethip6-ip6base-iacldstbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR +| | ... | for 1518 Byte frames using binary search start at 10GE linerate, +| | ... | step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip6-ip6base-iacldstbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find NDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-ethip6-ip6base-iacldstbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing and whitelist filters config with \ +| | ... | 4 threads, 4 phy cores, 2 receive queue per NIC port. [Ver] Find PDR +| | ... | for 9000 Byte frames using binary search start at 10GE linerate, +| | ... | step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | And Initialize IPv6 iAcl whitelist in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-ndrchk.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-ndrchk.robot new file mode 100644 index 0000000000..8011baf632 --- /dev/null +++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-ndrchk.robot @@ -0,0 +1,191 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | BASE | IP6BASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput IPv6 routing verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 +| ... | routing and two static IPv6 /64 route entries. DUT1 and DUT2 tested with +| ... | 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-NDR value is periodically updated acording to +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv6 header and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 + +*** Test Cases *** +| tc01-78B-1t1c-ethip6-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte +| | ... | frames using single trial throughput test at 2x 3.9mpps. +| | [Tags] | 78B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 3.9mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc02-1518B-1t1c-ethip6-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc03-9000B-1t1c-ethip6-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc04-78B-2t2c-ethip6-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte +| | ... | frames using single trial throughput test at 2x 8.1mpps. +| | [Tags] | 78B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 8.1mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc05-1518B-2t2c-ethip6-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc06-9000B-2t2c-ethip6-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc07-78B-4t4c-ethip6-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 78 Byte +| | ... | frames using single trial throughput test at 2x 9.4mpps. +| | [Tags] | 78B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 9.4mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-1518B-4t4c-ethip6-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc09-9000B-4t4c-ethip6-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot new file mode 100644 index 0000000000..3999677ffb --- /dev/null +++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot @@ -0,0 +1,436 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | BASE | IP6BASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput IPv6 routing test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 +| ... | routing and two static IPv6 /64 route entries. DUT1 and DUT2 tested with +| ... | 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv6 header and static payload. +| ... | MAC addresses are matching MAC addresses of the TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 + +*** Test Cases *** +| tc01-78B-1t1c-ethip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 78B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-78B-1t1c-ethip6-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 78B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip6-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-ethip6-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-78B-2t2c-ethip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 78B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-78B-2t2c-ethip6-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 78B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-ethip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-ethip6-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-ethip6-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-78B-4t4c-ethip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 78B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-78B-4t4c-ethip6-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 78B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-ethip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-ethip6-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-ethip6-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-pdrchk.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-pdrchk.robot new file mode 100644 index 0000000000..5ca64f5790 --- /dev/null +++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-pdrchk.robot @@ -0,0 +1,183 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | BASE | IP6BASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance pdrchk test +| ... +| Documentation | *Reference PDR throughput IPv6 routing verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 +| ... | routing and two static IPv6 /64 route entries. DUT1 and DUT2 tested with +| ... | 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-PDR value is periodically updated acording to +| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv6 header and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 + +*** Keywords *** +| Check PDR for IPv6 routing +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with ${wt} thread, ${wt} phy core,\ +| | ... | ${rxq} receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for ${framesize} Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Traffic should pass with partial loss | ${perf_trial_duration} +| | ... | ${rate} | ${framesize} | ${traffic_profile} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-78B-1t1c-ethip6-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 78B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for IPv6 routing +| | framesize=${78} | rate=3.9mpps | wt=1 | rxq=1 + +| tc02-1518B-1t1c-ethip6-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for IPv6 routing +| | framesize=${1518} | rate=400000pps | wt=1 | rxq=1 + +| tc03-9000B-1t1c-ethip6-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for IPv6 routing +| | framesize=${9000} | rate=60000pps | wt=1 | rxq=1 + +| tc04-78B-2t2c-ethip6-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 78B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv6 routing +| | framesize=${78} | rate=6.0mpps | wt=2 | rxq=1 + +| tc05-1518B-2t2c-ethip6-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv6 routing +| | framesize=${1518} | rate=400000pps | wt=2 | rxq=1 + +| tc06-9000B-2t2c-ethip6-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv6 routing +| | framesize=${9000} | rate=60000pps | wt=2 | rxq=1 + +| tc07-78B-4t4c-ethip6-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 78B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv6 routing +| | framesize=${78} | rate=6.1mpps | wt=4 | rxq=2 + +| tc08-1518B-4t4c-ethip6-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv6 routing +| | framesize=${1518} | rate=400000pps | wt=4 | rxq=2 + +| tc09-9000B-4t4c-ethip6-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv6 routing +| | framesize=${9000} | rate=60000pps | wt=4 | rxq=2 diff --git a/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale200k-ndrchk.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale200k-ndrchk.robot new file mode 100644 index 0000000000..a6f8c980e1 --- /dev/null +++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale200k-ndrchk.robot @@ -0,0 +1,201 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_200K +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput IPv6 routing verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 +| ... | routing and 2x100k static IPv6 /64 route entries. DUT1 and DUT2 tested +| ... | with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-NDR value is periodically updated acording to +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long +| ... | performance tests for the same DUT confiiguration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 100k flows per flow-group) with +| ... | all packets containing Ethernet header, IPv6 header and static +| ... | payload. Incrementing of IP.dst (IPv6 destination address) field is +| ... | applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${rts_per_flow}= | ${100000} + +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6dst${rts_per_flow} +*** Test Cases *** +| tc01-78B-1t1c-ethip6-ip6scale200k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte +| | ... | frames using single trial throughput test at 2x 2.3mpps. +| | [Tags] | 78B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 2.3mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc02-1518B-1t1c-ethip6-ip6scale200k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc03-9000B-1t1c-ethip6-ip6scale200k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc04-78B-2t2c-ethip6-ip6scale200k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte +| | ... | frames using single trial throughput test at 2x 5.0mpps. +| | [Tags] | 78B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 5.0mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc05-1518B-2t2c-ethip6-ip6scale200k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc06-9000B-2t2c-ethip6-ip6scale200k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc07-78B-4t4c-ethip6-ip6scale200k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte +| | ... | frames using single trial throughput test at 2x 5.7mpps. +| | [Tags] | 78B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 5.7mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-1518B-4t4c-ethip6-ip6scale200k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc09-9000B-4t4c-ethip6-ip6scale200k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot new file mode 100644 index 0000000000..f64102384d --- /dev/null +++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot @@ -0,0 +1,457 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_200K +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput IPv6 routing test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 +| ... | routing and 2x100k static IPv6 /64 route entries. DUT1 and DUT2 tested +| ... | with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 100k flows per flow-group) with all packets +| ... | containing Ethernet header, IPv6 header withq IP and static payload. +| ... | MAC addresses are matching MAC addresses of the TG node interfaces. +| ... | Incrementing of IP.dst (IPv6 destination address) field is applied to +| ... | both streams. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +| ${rts_per_flow}= | ${100000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6dst${rts_per_flow} + +*** Test Cases *** +| tc01-78B-1t1c-ethip6-ip6scale200k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 78B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-78B-1t1c-ethip6-ip6scale200k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 78B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip6-ip6scale200k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip6-ip6scale200k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip6-ip6scale200k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-ethip6-ip6scale200k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-78B-2t2c-ethip6-ip6scale200k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 78B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-78B-2t2c-ethip6-ip6scale200k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 78B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-ethip6-ip6scale200k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-ethip6-ip6scale200k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip6-ip6scale200k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-ethip6-ip6scale200k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-78B-4t4c-ethip6-ip6scale200k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 78B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-78B-4t4c-ethip6-ip6scale200k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 78B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-ethip6-ip6scale200k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-ethip6-ip6scale200k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip6-ip6scale200k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-ethip6-ip6scale200k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale20k-ndrchk.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale20k-ndrchk.robot new file mode 100644 index 0000000000..ebf642f9b5 --- /dev/null +++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale20k-ndrchk.robot @@ -0,0 +1,201 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_20K +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput IPv6 routing verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 +| ... | routing and 2x10k static IPv6 /64 route entries. DUT1 and DUT2 tested +| ... | with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-NDR value is periodically updated acording to +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long +| ... | performance tests for the same DUT confiiguration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 10k flows per flow-group) with +| ... | all packets containing Ethernet header, IPv6 header and static +| ... | payload. Incrementing of IP.dst (IPv6 destination address) field is +| ... | applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${rts_per_flow}= | ${10000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6dst${rts_per_flow} + +*** Test Cases *** +| tc01-78B-1t1c-ethip6-ip6scale20k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte +| | ... | frames using single trial throughput test at 2x 2.9mpps. +| | [Tags] | 78B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 2.9mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc02-1518B-1t1c-ethip6-ip6scale20k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc03-9000B-1t1c-ethip6-ip6scale20k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc04-78B-2t2c-ethip6-ip6scale20k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte +| | ... | frames using single trial throughput test at 2x 7.0mpps. +| | [Tags] | 78B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 7.0mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc05-1518B-2t2c-ethip6-ip6scale20k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc06-9000B-2t2c-ethip6-ip6scale20k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc07-78B-4t4c-ethip6-ip6scale20k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte +| | ... | frames using single trial throughput test at 2x 9.6mpps. +| | [Tags] | 78B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 10.0mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-1518B-4t4c-ethip6-ip6scale20k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc09-9000B-4t4c-ethip6-ip6scale20k-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot new file mode 100644 index 0000000000..4337c0d6a3 --- /dev/null +++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot @@ -0,0 +1,457 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_20K +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput IPv6 routing test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 +| ... | routing and 2x10k static IPv6 /64 route entries. DUT1 and DUT2 tested +| ... | with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 10k flows per flow-group) with all packets +| ... | containing Ethernet header, IPv6 header withq IP and static payload. +| ... | MAC addresses are matching MAC addresses of the TG node interfaces. +| ... | Incrementing of IP.dst (IPv6 destination address) field is applied to +| ... | both streams. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +| ${rts_per_flow}= | ${10000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6dst${rts_per_flow} + +*** Test Cases *** +| tc01-78B-1t1c-ethip6-ip6scale20k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 78B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-78B-1t1c-ethip6-ip6scale20k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 78B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip6-ip6scale20k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip6-ip6scale20k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip6-ip6scale20k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-ethip6-ip6scale20k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-78B-2t2c-ethip6-ip6scale20k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 78B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-78B-2t2c-ethip6-ip6scale20k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 78B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-ethip6-ip6scale20k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-ethip6-ip6scale20k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip6-ip6scale20k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-ethip6-ip6scale20k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-78B-4t4c-ethip6-ip6scale20k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 78B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-78B-4t4c-ethip6-ip6scale20k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 78B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-ethip6-ip6scale20k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-ethip6-ip6scale20k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip6-ip6scale20k-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-ethip6-ip6scale20k-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-ndrchk.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-ndrchk.robot new file mode 100644 index 0000000000..c3411cebd8 --- /dev/null +++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-ndrchk.robot @@ -0,0 +1,210 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_2M +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput IPv6 routing verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 +| ... | routing and 2x1M static IPv6 /64 route entries. DUT1 and DUT2 tested +| ... | with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-NDR value is periodically updated acording to +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long +| ... | performance tests for the same DUT confiiguration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 1M flows per flow-group) with +| ... | all packets containing Ethernet header, IPv6 header and static +| ... | payload. Incrementing of IP.dst (IPv6 destination address) field is +| ... | applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${rts_per_flow}= | ${1000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6dst${rts_per_flow} + +*** Test Cases *** +| tc01-78B-1t1c-ethip6-ip6scale2m-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte +| | ... | frames using single trial throughput test at 2x 1.8mpps. +| | [Tags] | 78B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 1.8mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc02-1518B-1t1c-ethip6-ip6scale2m-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc03-9000B-1t1c-ethip6-ip6scale2m-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc04-78B-2t2c-ethip6-ip6scale2m-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte +| | ... | frames using single trial throughput test at 2x 4.0mpps. +| | [Tags] | 78B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 4.0mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc05-1518B-2t2c-ethip6-ip6scale2m-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc06-9000B-2t2c-ethip6-ip6scale2m-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc07-78B-4t4c-ethip6-ip6scale2m-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 78 Byte +| | ... | frames using single trial throughput test at 2x 6.8mpps. +| | [Tags] | 78B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 6.8mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc08-1518B-4t4c-ethip6-ip6scale2m-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} + +| tc09-9000B-4t4c-ethip6-ip6scale2m-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} +| | ... | ${traffic_profile} diff --git a/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot new file mode 100644 index 0000000000..1259fd9130 --- /dev/null +++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot @@ -0,0 +1,457 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_2M +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput IPv6 routing test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 +| ... | routing and 2x1M static IPv6 /64 route entries. DUT1 and DUT2 tested +| ... | with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 1M flows per flow-group) with all packets +| ... | containing Ethernet header, IPv6 header withq IP and static payload. +| ... | MAC addresses are matching MAC addresses of the TG node interfaces. +| ... | Incrementing of IP.dst (IPv6 destination address) field is applied to +| ... | both streams. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +| ${rts_per_flow}= | ${1000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6dst${rts_per_flow} + +*** Test Cases *** +| tc01-78B-1t1c-ethip6-ip6scale2m-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 78B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-78B-1t1c-ethip6-ip6scale2m-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 78B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip6-ip6scale2m-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip6-ip6scale2m-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip6-ip6scale2m-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-ethip6-ip6scale2m-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-78B-2t2c-ethip6-ip6scale2m-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 78B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-78B-2t2c-ethip6-ip6scale2m-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 78B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-ethip6-ip6scale2m-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-ethip6-ip6scale2m-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip6-ip6scale2m-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-ethip6-ip6scale2m-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-78B-4t4c-ethip6-ip6scale2m-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 78B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-78B-4t4c-ethip6-ip6scale2m-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 78 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 78B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-ethip6-ip6scale2m-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-ethip6-ip6scale2m-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip6-ip6scale2m-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-ethip6-ip6scale2m-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-pdrchk.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-pdrchk.robot new file mode 100644 index 0000000000..977e73ff2a --- /dev/null +++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6scale2m-pdrchk.robot @@ -0,0 +1,185 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | SCALE | FIB_2M +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance pdrchk test +| ... +| Documentation | *Reference PDR throughput IPv6 routing verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 +| ... | routing and 2x1M static IPv6 /64 route entries. DUT1 and DUT2 tested +| ... | with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-PDR value is periodically updated acording to +| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long +| ... | performance tests for the same DUT confiiguration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 1M flows per flow-group) with +| ... | all packets containing Ethernet header, IPv6 header and static +| ... | payload. Incrementing of IP.dst (IPv6 destination address) field is +| ... | applied to both streams. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${rts_per_flow}= | ${1000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6dst${rts_per_flow} + +*** Keywords *** +| Check PDR for IPv6 scaled routing +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with ${wt} thread, ${wt} phy core,\ +| | ... | ${rxq} receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for ${framesize} Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding with scaling in 3-node circular topology +| | ... | ${rts_per_flow} +| | Then Traffic should pass with partial loss | ${perf_trial_duration} +| | ... | ${rate} | ${framesize} | ${traffic_profile} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-78B-1t1c-ethip6-ip6scale2m-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 78B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for IPv6 scaled routing +| | framesize=${78} | rate=1.8mpps | wt=1 | rxq=1 + +| tc02-1518B-1t1c-ethip6-ip6scale2m-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for IPv6 scaled routing +| | framesize=${1518} | rate=400000pps | wt=1 | rxq=1 + +| tc03-9000B-1t1c-ethip6-ip6scale2m-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for IPv6 scaled routing +| | framesize=${9000} | rate=60000pps | wt=1 | rxq=1 + +| tc04-78B-2t2c-ethip6-ip6scale2m-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 78B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv6 scaled routing +| | framesize=${78} | rate=4.0mpps | wt=2 | rxq=1 + +| tc05-1518B-2t2c-ethip6-ip6scale2m-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv6 scaled routing +| | framesize=${1518} | rate=400000pps | wt=2 | rxq=1 + +| tc06-9000B-2t2c-ethip6-ip6scale2m-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv6 scaled routing +| | framesize=${900} | rate=138580pps | wt=2 | rxq=1 + +| tc07-78B-4t4c-ethip6-ip6scale2m-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 78B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv6 scaled routing +| | framesize=${78} | rate=6.4mpps | wt=4 | rxq=2 + +| tc08-1518B-4t4c-ethip6-ip6scale2m-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv6 scaled routing +| | framesize=${1518} | rate=400000pps | wt=4 | rxq=2 + +| tc09-9000B-4t4c-ethip6-ip6scale2m-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv6 scaled routing +| | framesize=${9000} | rate=60000pps | wt=4 | rxq=2 diff --git a/tests/vpp/perf/ip6/40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot b/tests/vpp/perf/ip6/40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot new file mode 100644 index 0000000000..4c45fdd266 --- /dev/null +++ b/tests/vpp/perf/ip6/40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot @@ -0,0 +1,183 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-XL710 | ETH | IP6FWD | BASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-XL710 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput IPv6 routing test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 +| ... | routing and two static IPv6 /64 route entries. DUT1 and DUT2 tested with +| ... | 2p40GE NIC XL710 by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv6 header and static payload. +| ... | MAC addresses are matching MAC addresses of the TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G} | ${24500000000} +# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps} | ${18750000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 + +*** Test Cases *** +| tc01-78B-1t1c-ethip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames +| | ... | using binary search start at 18.75Mpps rate, step 100kpps. +| | [Tags] | 78B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc03-1518B-1t1c-ethip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 24.5G rate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc07-78B-2t2c-ethip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 78 Byte frames +| | ... | using binary search start at 18.75Mpps rate, step 100kpps. +| | [Tags] | 78B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc09-1518B-2t2c-ethip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 24.5G rate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc13-78B-4t4c-ethip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 78 Byte frames +| | ... | using binary search start at 18.75Mpps rate, step 100kpps. +| | [Tags] | 78B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc15-1518B-4t4c-ethip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 24.5G rate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} diff --git a/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-ndrchk.robot b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-ndrchk.robot new file mode 100644 index 0000000000..6448d4390f --- /dev/null +++ b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-ndrchk.robot @@ -0,0 +1,266 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot +| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | IP6FWD | ENCAP | LISP | IP4UNRLAY | IP6OVRLAY +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput Lisp tunnel verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv4 on DUT1-DUT2,\ +| ... | Eth-IPv6 on TG-DUTn for IPv6 routing over LISPoIPv4 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ +| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ +| ... | DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic\ +| ... | by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies\ +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet\ +| ... | loss tolerance. Ref-NDR value is periodically updated acording to\ +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long\ +| ... | performance tests for the same DUT confiiguration. Test packets are\ +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3\ +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ +| ... | all packets containing Ethernet header, IPv4 header or IPv6 header with\ +| ... | IP protocol=61 and generated payload. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 + +*** Test Cases *** +| tc01-78B-1t1c-ethip6lispip4-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ +| | ... | throughput test at 2x 1.75mpps. +| | [Tags] | 78B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 1.75mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc02-1460B-1t1c-ethip6lispip4-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ +| | ... | throughput test at 2x 720000pps. +| | [Tags] | 1460B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1460} +| | ${rate}= | Set Variable | 720000pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc03-9000B-1t1c-ethip6lispip4-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x 120000pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 120000pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc04-78B-2t2c-ethip6lispip4-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ +| | ... | throughput test at 2x 3.42mpps. +| | [Tags] | 78B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 3.42mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc05-1460B-2t2c-ethip6lispip4-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ +| | ... | throughput test at 2x 720000pps. +| | [Tags] | 1460B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1460} +| | ${rate}= | Set Variable | 720000pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc06-9000B-2t2c-ethip6lispip4-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x 120000pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 120000pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc07-78B-4t4c-ethip6lispip4-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ +| | ... | throughput test at 2x 3.42mpps. +| | [Tags] | 78B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 3.42mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-1460B-4t4c-ethip6lispip4-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ +| | ... | throughput test at 2x 720000pps. +| | [Tags] | 1460B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1460} +| | ${rate}= | Set Variable | 720000pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc09-9000B-4t4c-ethip6lispip4-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x 120000pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 120000pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot new file mode 100644 index 0000000000..bcf0711c94 --- /dev/null +++ b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot @@ -0,0 +1,596 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot +| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | IP6FWD | ENCAP | LISP | IP4UNRLAY | IP6OVRLAY +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC6830: Pkt throughput Lisp test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv4 on DUT1-DUT2,\ +| ... | Eth-IPv6 on TG-DUTn for IPv6 routing over LISPoIPv4 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ +| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ +| ... | DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic\ +| ... | by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ +| ... | of packets transmitted. NDR and PDR are discovered for different\ +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 + +*** Test Cases *** +| tc01-78B-1t1c-ethip6lispip4-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 78 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps. +| | [Tags] | 78B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-78B-1t1c-ethip6lispip4-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 78 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 78B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1460B-1t1c-ethip6lispip4-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 1460 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps. +| | [Tags] | 1460B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1460} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1460B-1t1c-ethip6lispip4-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 1460 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1460B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1460} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip6lispip4-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-ethip6lispip4-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-78B-2t2c-ethip6lispip4-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 78 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps. +| | [Tags] | 78B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-78B-2t2c-ethip6lispip4-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 78 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 78B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1460B-2t2c-ethip6lispip4-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 1460 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps. +| | [Tags] | 1460B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1460} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1460B-2t2c-ethip6lispip4-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 1460 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1460B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1460} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip6lispip4-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-ethip6lispip4-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-78B-4t4c-ethip6lispip4-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 78 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps. +| | [Tags] | 78B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-78B-4t4c-ethip6lispip4-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 78 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 78B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1460B-4t4c-ethip6lispip4-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 1460 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps. +| | [Tags] | 1460B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1460} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1460B-4t4c-ethip6lispip4-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 1460 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1460B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1460} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip6lispip4-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-ethip6lispip4-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 48} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-pdrchk.robot b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-pdrchk.robot new file mode 100644 index 0000000000..55c5a19e70 --- /dev/null +++ b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip4-ip6base-pdrchk.robot @@ -0,0 +1,193 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot +| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK +| ... | NIC_Intel-X520-DA2 | IP6FWD | ENCAP | LISP | IP4UNRLAY | IP6OVRLAY +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance pdrchk test +| ... +| Documentation | *Reference PDR throughput Lisp tunnel verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv4 on DUT1-DUT2,\ +| ... | Eth-IPv6 on TG-DUTn for IPv6 routing over LISPoIPv4 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ +| ... | routing and static routes. LISPoIPv4 tunnel is configured between\ +| ... | DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic\ +| ... | by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies\ +| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet\ +| ... | loss tolerance. Ref-PDR value is periodically updated acording to\ +| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long\ +| ... | performance tests for the same DUT confiiguration. Test packets are\ +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3\ +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ +| ... | all packets containing Ethernet header, IPv4 header or IPv6 header with\ +| ... | IP protocol=61 and generated payload. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 + +*** Keywords *** +| Check PDR for Lisp IPv6 over IPv4 forwarding +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with ${wt} thread, ${wt} phy core,\ +| | ... | ${rxq} receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for ${framesize} Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 over IPv4 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6o4} | ${dut1_to_tg_ip6o4} | ${dut2_to_dut1_ip6o4} +| | ... | ${dut2_to_tg_ip6o4} | ${tg_prefix6o4} | ${dut_prefix6o4} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6o4_eid} | ${dut2_ip6o4_eid} +| | ... | ${dut1_ip6o4_static_adjacency} | ${dut2_ip6o4_static_adjacency} +| | Then Traffic should pass with partial loss | ${perf_trial_duration} +| | ... | ${rate} | ${framesize} | ${traffic_profile} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-78B-1t1c-ethip6lispip4-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 78B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv6 over IPv4 forwarding +| | framesize=${78} | rate=1.75mpps | wt=1 | rxq=1 + +| tc02-1460B-1t1c-ethip6lispip4-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1460B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv6 over IPv4 forwarding +| | framesize=${1460} | rate=37000pps | wt=1 | rxq=1 + +| tc03-9000B-1t1c-ethip6lispip4-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv6 over IPv4 forwarding +| | framesize=${9000} | rate=60000pps | wt=1 | rxq=1 + +| tc04-78B-2t2c-ethip6lispip4-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 78B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv6 over IPv4 forwarding +| | framesize=${78} | rate=3.42mpps | wt=2 | rxq=1 + +| tc05-1460B-2t2c-ethip6lispip4-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1460B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv6 over IPv4 forwarding +| | framesize=${1460} | rate=370000pps | wt=2 | rxq=1 + +| tc06-9000B-2t2c-ethip6lispip4-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv6 over IPv4 forwarding +| | framesize=${9000} | rate=60000pps | wt=2 | rxq=1 + +| tc07-78B-4t4c-ethip6lispip4-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 78B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv6 over IPv4 forwarding +| | framesize=${78} | rate=3.42mpps | wt=4 | rxq=2 + +| tc08-1460B-4t4c-ethip6lispip4-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1460B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv6 over IPv4 forwarding +| | framesize=${1460} | rate=370000pps | wt=4 | rxq=2 + +| tc09-9000B-4t4c-ethip6lispip4-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv6 over IPv4 forwarding +| | framesize=${9000} | rate=60000pps | wt=4 | rxq=2 diff --git a/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-ndrchk.robot b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-ndrchk.robot new file mode 100644 index 0000000000..2e44791318 --- /dev/null +++ b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-ndrchk.robot @@ -0,0 +1,266 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot +| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | IP6FWD | ENCAP | LISP | IP6UNRLAY | IP6OVRLAY +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput Lisp tunnel verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv6 on DUT1-DUT2,\ +| ... | Eth-IPv6-ICMPv6 on TG-DUTn for IPv6 routing over LISPoIPv6 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ +| ... | routing and static routes. LISPoIPv6 tunnel is configured\ +| ... | between DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520\ +| ... | Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies\ +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet\ +| ... | loss tolerance. Ref-NDR value is periodically updated acording to\ +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long\ +| ... | performance tests for the same DUT confiiguration. Test packets are\ +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3\ +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ +| ... | all packets containing Ethernet header, IPv6 header with\ +| ... | IP protocol=61 and generated payload. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 + +*** Test Cases *** +| tc01-78B-1t1c-ethip6lispip6-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ +| | ... | throughput test at 2x 1.56mpps. +| | [Tags] | 78B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 1.56mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc02-1460B-1t1c-ethip6lispip6-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ +| | ... | throughput test at 2x 740000pps. +| | [Tags] | 1460B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1460} +| | ${rate}= | Set Variable | 740000pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc03-9000B-1t1c-ethip6lispip6-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x 120000pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 120000pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc04-78B-2t2c-ethip6lispip6-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 thread, 2 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ +| | ... | throughput test at 2x 3.2mpps. +| | [Tags] | 78B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 3.2mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc05-1460B-2t2c-ethip6lispip6-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ +| | ... | throughput test at 2x 740000pps. +| | [Tags] | 1460B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1460} +| | ${rate}= | Set Variable | 740000pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc06-9000B-2t2c-ethip6lispip6-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x 120000pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 120000pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc07-78B-4t4c-ethip6lispip6-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ +| | ... | throughput test at 2x 3.2mpps. +| | [Tags] | 78B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${78} +| | ${rate}= | Set Variable | 3.2mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-1460B-4t4c-ethip6lispip6-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ +| | ... | throughput test at 2x 740000pps. +| | [Tags] | 1460B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1460} +| | ${rate}= | Set Variable | 740000pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc09-9000B-4t4c-ethip6lispip6-ip6base-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x 120000pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 120000pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot new file mode 100644 index 0000000000..f29f4e4626 --- /dev/null +++ b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot @@ -0,0 +1,596 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot +| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | IP6FWD | ENCAP | LISP | IP6UNRLAY | IP6OVRLAY +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC6830: Pkt throughput Lisp test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv6 on DUT1-DUT2,\ +| ... | Eth-IPv6 on TG-DUTn for IPv6 routing over LISPoIPv6 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ +| ... | routing and static routes. LISPoIPv6 tunnel is configured between\ +| ... | DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic\ +| ... | by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ +| ... | of packets transmitted. NDR and PDR are discovered for different\ +| ... | Ethernet L2 frame sizes using either binary search or linear search\ +| ... | *[Ref] Applicable standard specifications:* RFC6830. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 + +*** Test Cases *** +| tc01-78B-1t1c-ethip6lispip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 78 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps. +| | [Tags] | 78B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-78B-1t1c-ethip6lispip6-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 78 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 78B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1460B-1t1c-ethip6lispip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 1460 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps. +| | [Tags] | 1460B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1460} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1460B-1t1c-ethip6lispip6-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 1460 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1460B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1460} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-ethip6lispip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-ethip6lispip6-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 1 thread, 1 phy core, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-78B-2t2c-ethip6lispip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 78 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps. +| | [Tags] | 78B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-78B-2t2c-ethip6lispip6-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 78 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 78B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1460B-2t2c-ethip6lispip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 1460 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps. +| | [Tags] | 1460B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1460} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1460B-2t2c-ethip6lispip6-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 1460 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1460B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1460} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-ethip6lispip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-ethip6lispip6-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 2 threads, 2 phy cores, 1 receive queue per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-78B-4t4c-ethip6lispip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 78 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps. +| | [Tags] | 78B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-78B-4t4c-ethip6lispip6-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 78 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 78B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${78} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1460B-4t4c-ethip6lispip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 1460 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 100kpps. +| | [Tags] | 1460B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1460} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1460B-4t4c-ethip6lispip6-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 1460 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1460B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1460} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-ethip6lispip6-ip6base-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-ethip6lispip6-ip6base-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 LISP remote static mappings and whitelist\ +| | ... | filters config with 4 threads, 4 phy cores, 2 receive queues per NIC\ +| | ... | port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start\ +| | ... | at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-pdrchk.robot b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-pdrchk.robot new file mode 100644 index 0000000000..717efedf45 --- /dev/null +++ b/tests/vpp/perf/ip6_tunnels/10ge2p1x520-ethip6lispip6-ip6base-pdrchk.robot @@ -0,0 +1,193 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/overlay/lisp_static_adjacency.robot +| Variables | resources/test_data/lisp/performance/lisp_static_adjacency.py +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK +| ... | NIC_Intel-X520-DA2 | IP6FWD | ENCAP | LISP | IP6UNRLAY | IP6OVRLAY +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance pdrchk test +| ... +| Documentation | *Reference PDR throughput Lisp tunnel verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-LISP-IPv6 on DUT1-DUT2,\ +| ... | Eth-IPv6-ICMPv6 on TG-DUTn for IPv6 routing over LISPoIPv6 tunnel. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ +| ... | routing and static routes. LISPoIPv6 tunnel is configured\ +| ... | between DUT1 and DUT2. DUT1 and DUT2 tested with 2p10GE NIC X520\ +| ... | Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies\ +| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet\ +| ... | loss tolerance. Ref-PDR value is periodically updated acording to\ +| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long\ +| ... | performance tests for the same DUT confiiguration. Test packets are\ +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3\ +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ +| ... | all packets containing Ethernet header, IPv6 header with\ +| ... | IP protocol=61 and generated payload. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 + +*** Keywords *** +| Check PDR for Lisp IPv6 over IPv6 forwarding +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with ${wt} thread, ${wt} phy core,\ +| | ... | ${rxq} receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for ${framesize} Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize LISP IPv6 forwarding in 3-node circular topology +| | ... | ${dut1_to_dut2_ip6} | ${dut1_to_tg_ip6} | ${dut2_to_dut1_ip6} +| | ... | ${dut2_to_tg_ip6} | ${prefix6} +| | And Configure LISP topology in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${NONE} +| | ... | ${dut2} | ${dut2_if1} | ${NONE} +| | ... | ${duts_locator_set} | ${dut1_ip6_eid} | ${dut2_ip6_eid} +| | ... | ${dut1_ip6_static_adjacency} | ${dut2_ip6_static_adjacency} +| | Then Traffic should pass with partial loss | ${perf_trial_duration} +| | ... | ${rate} | ${framesize} | ${traffic_profile} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-78B-1t1c-ethip6lispip6-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 78B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv6 over IPv6 forwarding +| | framesize=${78} | rate=1.56mpps | wt=1 | rxq=1 + +| tc02-1460B-1t1c-ethip6lispip6-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1460B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv6 over IPv6 forwarding +| | framesize=${1460} | rate=370000pps | wt=1 | rxq=1 + +| tc03-9000B-1t1c-ethip6lispip6-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv6 over IPv6 forwarding +| | framesize=${9000} | rate=60000pps | wt=1 | rxq=1 + +| tc04-78B-2t2c-ethip6lispip6-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 thread, 2 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 78B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv6 over IPv6 forwarding +| | framesize=${78} | rate=3.2mpps | wt=2 | rxq=1 + +| tc05-1460B-2t2c-ethip6lispip6-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1460B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv6 over IPv6 forwarding +| | framesize=${1460} | rate=370000pps | wt=2 | rxq=1 + +| tc06-9000B-2t2c-ethip6lispip6-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv6 over IPv6 forwarding +| | framesize=${9000} | rate=60000pps | wt=2 | rxq=1 + +| tc07-78B-4t4c-ethip6lispip6-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 78 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 78B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv6 over IPv6 forwarding +| | framesize=${78} | rate=3.2mpps | wt=4 | rxq=2 + +| tc08-1460B-4t4c-ethip6lispip6-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 1460 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1460B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv6 over IPv6 forwarding +| | framesize=${1460} | rate=370000pps | wt=4 | rxq=2 + +| tc09-9000B-4t4c-ethip6lispip6-ip6base-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs LISP tunnel config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for Lisp IPv6 over IPv6 forwarding +| | framesize=${9000} | rate=60000pps | wt=4 | rxq=2 diff --git a/tests/vpp/perf/l2/10ge2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot b/tests/vpp/perf/l2/10ge2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot new file mode 100644 index 0000000000..51eb235f24 --- /dev/null +++ b/tests/vpp/perf/l2/10ge2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot @@ -0,0 +1,288 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Cisco-VIC-1227 | ETH | L2BDMACLRN | BASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Cisco-VIC-1227 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput L2BD test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge-\ +| ... | domain and MAC learning enabled. DUT1 and DUT2 tested with 2p10GE NIC +| ... | Cisco-VIC-1227. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ +| ... | of packets transmitted. NDR and PDR are discovered for different\ +| ... | Ethernet L2 frame sizes using either binary search or linear search\ +| ... | algorithms with configured starting rate and final step that determines\ +| ... | throughput measurement resolution. Test packets are generated by TG on\ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\ +| ... | (flow-group per direction, 253 flows per flow-group) with all packets\ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\ +| ... | payload. MAC addresses are matching MAC addresses of the TG node\ +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Cisco-VIC-1227 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| L2 Bridge Domain NDR Binary Search +| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} +| | # Test Variables required for test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${min_rate} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Documentation | [Cfg] DUT runs L2BD switching config with ${wt}\ +| | Set Test Documentation | thread, ${wt} phy core, ${rxq}\ | append=True +| | Set Test Documentation | receive queue per NIC port. | append=True +| | Set Test Documentation | [Ver] Find NDR for ${framesize} Byte\ | append=True +| | Set Test Documentation | frames using binary search start at\ | append=True +| | Set Test Documentation | 10GE linerate, step ${threshold}pps. | append=True +| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | Add PCI devices to DUTs in 3-node single link topology +| | Run Keyword If | ${framesize} < ${1522} | Add no multi seg to all DUTs +| | Apply startup configuration on all VPP DUTs +| | Initialize L2 bridge domain in 3-node circular topology +| | Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| L2 Bridge Domain PDR Binary Search +| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} +| | # Test Variables required for test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${min_rate} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Set Test Documentation | [Cfg] DUT runs L2BD switching config with ${wt}\ +| | Set Test Documentation | thread, ${wt} phy core, ${rxq}\ | append=True +| | Set Test Documentation | receive queue per NIC port. | append=True +| | Set Test Documentation | [Ver] Find PDR for ${framesize} Byte\ | append=True +| | Set Test Documentation | frames using binary search start at\ | append=True +| | Set Test Documentation | 10GE linerate, step ${threshold}pps, | append=True +| | Set Test Documentation | LT=${perf_pdr_loss_acceptance} | append=True +| | Set Test Documentation | ${perf_pdr_loss_acceptance_type}. | append=True +| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | Add PCI devices to DUTs in 3-node single link topology +| | Run Keyword If | ${framesize} < ${1522} | Add no multi seg to all DUTs +| | Apply startup configuration on all VPP DUTs +| | Initialize L2 bridge domain in 3-node circular topology +| | Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=1 | rxq=1 +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc02-64B-1t1c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=1 | rxq=1 +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc03-1518B-1t1c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=1 | rxq=1 +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc04-1518B-1t1c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=1 | rxq=1 +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc05-9000B-1t1c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${9000} | min_rate=${10000} | wt=1 | rxq=1 +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc06-9000B-1t1c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${9000} | min_rate=${10000} | wt=1 | rxq=1 +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc07-64B-2t2c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=2 | rxq=1 +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc08-64B-2t2c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=2 | rxq=1 +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc09-1518B-2t2c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=2 | rxq=1 +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc10-1518B-2t2c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=2 | rxq=1 +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc11-9000B-2t2c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${9000} | min_rate=${10000} | wt=2 | rxq=1 +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc12-9000B-2t2c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${9000} | min_rate=${10000} | wt=2 | rxq=1 +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc13-64B-4t4c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=4 | rxq=2 +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc14-64B-4t4c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=4 | rxq=2 +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc15-1518B-4t4c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=4 | rxq=2 +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc16-1518B-4t4c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=4 | rxq=2 +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc17-9000B-4t4c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${9000} | min_rate=${10000} | wt=4 | rxq=2 +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc18-9000B-4t4c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${9000} | min_rate=${10000} | wt=4 | rxq=2 +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | [Template] | L2 Bridge Domain PDR Binary Search diff --git a/tests/vpp/perf/l2/10ge2p1x520-dot1ad-l2xcbase-ndrchk.robot b/tests/vpp/perf/l2/10ge2p1x520-dot1ad-l2xcbase-ndrchk.robot new file mode 100644 index 0000000000..4b4162581a --- /dev/null +++ b/tests/vpp/perf/l2/10ge2p1x520-dot1ad-l2xcbase-ndrchk.robot @@ -0,0 +1,279 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | L2XCFWD | BASE | DOT1AD +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput L2XC with 802.1ad verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 xconnect. +| ... | 802.1ad tagging is applied on link between DUT1 and DUT2 with inner 4B +| ... | vlan tag (id=100) and outer 4B vlan tag (id=200). +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- +| ... | connect. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-NDR value is periodically updated acording to +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and static payload. MAC addresses are matching MAC addresses of the +| ... | TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${subid}= | 10 +| ${outer_vlan_id}= | 100 +| ${inner_vlan_id}= | 200 +| ${type_subif}= | two_tags +| ${tag_rewrite}= | pop-2 +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-dot1ad-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC with 802.1ad config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 4.0mpps. +| | [Tags] | 64B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 4.0mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc02-1514B-1t1c-dot1ad-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC with 802.1ad config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1514 Byte +| | ... | frames using single trial throughput test at 2x 810635pps. +| | [Tags] | 1514B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1514} +| | ${rate}= | Set Variable | 810635pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc03-9000B-1t1c-dot1ad-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC with 802.1ad config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138458pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138458pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc04-64B-2t2c-dot1ad-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC with 802.1ad config with 2 thread, 2 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 8.5mpps. +| | [Tags] | 64B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 8.5mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc05-1514B-2t2c-dot1ad-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC with 802.1ad config with 2 thread, 2 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1514 Byte +| | ... | frames using single trial throughput test at 2x 810635pps. +| | [Tags] | 1514B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1514} +| | ${rate}= | Set Variable | 810635pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc06-9000B-2t2c-dot1ad-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC with 802.1ad config with 2 thread, 2 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138458pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138458pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc07-64B-4t4c-dot1ad-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC with 802.1ad config with 4 thread, 4 phy core, \ +| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 8.6mpps. +| | [Tags] | 64B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 8.6mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-1514B-4t4c-dot1ad-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC with 802.1ad config with 4 thread, 4 phy core, \ +| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 1514 Byte +| | ... | frames using single trial throughput test at 2x 810635pps. +| | [Tags] | 1514B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1514} +| | ${rate}= | Set Variable | 810635pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc09-9000B-4t4c-dot1ad-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC with 802.1ad config with 4 thread, 4 phy core, \ +| | ... | 2 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138458pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138458pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/l2/10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot b/tests/vpp/perf/l2/10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot new file mode 100644 index 0000000000..17b907c91b --- /dev/null +++ b/tests/vpp/perf/l2/10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot @@ -0,0 +1,606 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | L2XCFWD | BASE | DOT1AD +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput L2XC with 802.1ad test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 xconnect. +| ... | 802.1ad tagging is applied on link between DUT1 and DUT2 with inner 4B +| ... | vlan tag (id=100) and outer 4B vlan tag (id=200). +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- +| ... | connect. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and +| ... | static payload. MAC addresses are matching MAC addresses of the TG +| ... | node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${subid}= | 10 +| ${outer_vlan_id}= | 100 +| ${inner_vlan_id}= | 200 +| ${type_subif}= | two_tags +| ${tag_rewrite}= | pop-2 +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-dot1ad-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-dot1ad-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1514B-1t1c-dot1ad-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1514 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1514B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1514} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1514B-1t1c-dot1ad-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1514 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1514B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1514} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-dot1ad-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-dot1ad-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-dot1ad-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-dot1ad-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1514B-2t2c-dot1ad-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1514 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1514B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1514} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1514B-2t2c-dot1ad-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1514 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1514B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1514} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-dot1ad-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-dot1ad-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-dot1ad-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-dot1ad-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1514B-4t4c-dot1ad-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1514 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1514B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1514} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1514B-4t4c-dot1ad-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1514 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1514B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1514} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-dot1ad-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-dot1ad-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC forwarding config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 8} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ${outer_vlan_id} | ${inner_vlan_id} | ${type_subif} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/l2/10ge2p1x520-dot1q-l2xcbase-ndrchk.robot b/tests/vpp/perf/l2/10ge2p1x520-dot1q-l2xcbase-ndrchk.robot new file mode 100644 index 0000000000..d3a67f3777 --- /dev/null +++ b/tests/vpp/perf/l2/10ge2p1x520-dot1q-l2xcbase-ndrchk.robot @@ -0,0 +1,266 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | L2XCFWD | BASE | DOT1Q +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput L2XC with 802.1q verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. 802.1q +| ... | tagging is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- +| ... | connect. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-NDR value is periodically updated acording to +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and static payload. MAC addresses are matching MAC addresses of the +| ... | TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-dot1q-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 4.0mpps. +| | [Tags] | 64B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 4.0mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc02-1518B-1t1c-dot1q-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 720000pps. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 720000pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc03-9000B-1t1c-dot1q-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 120000pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 120000pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc04-64B-2t2c-dot1q-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 8.7mpps. +| | [Tags] | 64B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 8.7mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc05-1518B-2t2c-dot1q-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 720000pps. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 720000pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc06-9000B-2t2c-dot1q-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 120000pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 120000pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc07-64B-4t4c-dot1q-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 10.3mpps. +| | [Tags] | 64B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 10.3mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-1518B-4t4c-dot1q-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 720000pps. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 720000pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc09-9000B-4t4c-dot1q-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 120000pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 120000pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/l2/10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot b/tests/vpp/perf/l2/10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot new file mode 100644 index 0000000000..a5a8580f29 --- /dev/null +++ b/tests/vpp/perf/l2/10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot @@ -0,0 +1,584 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | L2XCFWD | BASE | DOT1Q +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput L2XC with 802.1q test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. 802.1q +| ... | tagging is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- +| ... | connect. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-dot1q-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-dot1q-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-dot1q-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-dot1q-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-dot1q-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-dot1q-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-dot1q-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-dot1q-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-dot1q-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-dot1q-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-dot1q-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-dot1q-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-dot1q-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-dot1q-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-dot1q-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-dot1q-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-dot1q-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-dot1q-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + 4} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Set interfaces in path in 3-node circular topology up +| | When Initialize VLAN dot1q sub-interfaces in 3-node circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | And Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | ${dut2} | ${subif_index_2} +| | ... | ${tag_rewrite} +| | And Connect interfaces and VLAN sub-interfaces using L2XC +| | ... | ${dut1} | ${dut1_if1} | ${subif_index_1} +| | ... | ${dut2} | ${dut2_if2} | ${subif_index_2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-ndrchk.robot b/tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-ndrchk.robot new file mode 100644 index 0000000000..598d45f6b6 --- /dev/null +++ b/tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-ndrchk.robot @@ -0,0 +1,192 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.NodePath +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | L2BDMACLRN | BASE | L2BDBASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput L2BD verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- +| ... | domain and MAC learning enabled. DUT1 and DUT2 tested with 2p10GE NIC +| ... | X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-NDR value is periodically updated acording to +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and static payload. MAC addresses are matching MAC addresses of the +| ... | TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2bdbasemaclrn-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 4.9mpps. +| | [Tags] | 64B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 4.9mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc02-1518B-1t1c-eth-l2bdbasemaclrn-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc03-9000B-1t1c-eth-l2bdbasemaclrn-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc04-64B-2t2c-eth-l2bdbasemaclrn-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 10.4mpps. +| | [Tags] | 64B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 10.4mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc05-1518B-2t2c-eth-l2bdbasemaclrn-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc06-9000B-2t2c-eth-l2bdbasemaclrn-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc07-64B-4t4c-eth-l2bdbasemaclrn-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 10.4mpps. +| | [Tags] | 64B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 10.4mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-1518B-4t4c-eth-l2bdbasemaclrn-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc09-9000B-4t4c-eth-l2bdbasemaclrn-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot b/tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot new file mode 100644 index 0000000000..5234981c14 --- /dev/null +++ b/tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot @@ -0,0 +1,274 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | L2BDMACLRN | BASE | L2BDBASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput L2BD test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge-\ +| ... | domain and MAC learning enabled. DUT1 and DUT2 tested with 2p10GE NI +| ... | X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ +| ... | of packets transmitted. NDR and PDR are discovered for different\ +| ... | Ethernet L2 frame sizes using either binary search or linear search\ +| ... | algorithms with configured starting rate and final step that determines\ +| ... | throughput measurement resolution. Test packets are generated by TG on\ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\ +| ... | (flow-group per direction, 253 flows per flow-group) with all packets\ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\ +| ... | payload. MAC addresses are matching MAC addresses of the TG node\ +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| L2 Bridge Domain NDR Binary Search +| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${min_rate} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | Add PCI devices to DUTs in 3-node single link topology +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | Run Keyword If | ${get_framesize} < ${1522} | Add no multi seg to all DUTs +| | Apply startup configuration on all VPP DUTs +| | Initialize L2 bridge domain in 3-node circular topology +| | Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| L2 Bridge Domain PDR Binary Search +| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${min_rate} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | Add PCI devices to DUTs in 3-node single link topology +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | Run Keyword If | ${get_framesize} < ${1522} | Add no multi seg to all DUTs +| | Apply startup configuration on all VPP DUTs +| | Initialize L2 bridge domain in 3-node circular topology +| | Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=1 | rxq=1 +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc02-64B-1t1c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=1 | rxq=1 +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc03-1518B-1t1c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=1 | rxq=1 +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc04-1518B-1t1c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=1 | rxq=1 +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc05-9000B-1t1c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${9000} | min_rate=${10000} | wt=1 | rxq=1 +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc06-9000B-1t1c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${9000} | min_rate=${10000} | wt=1 | rxq=1 +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc07-64B-2t2c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=2 | rxq=1 +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc08-64B-2t2c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=2 | rxq=1 +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc09-1518B-2t2c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=2 | rxq=1 +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc10-1518B-2t2c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=2 | rxq=1 +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc11-9000B-2t2c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${9000} | min_rate=${10000} | wt=2 | rxq=1 +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc12-9000B-2t2c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${9000} | min_rate=${10000} | wt=2 | rxq=1 +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc13-64B-4t4c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=4 | rxq=2 +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc14-64B-4t4c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=4 | rxq=2 +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc15-1518B-4t4c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=4 | rxq=2 +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc16-1518B-4t4c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=4 | rxq=2 +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc17-9000B-4t4c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${9000} | min_rate=${10000} | wt=4 | rxq=2 +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc18-9000B-4t4c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${9000} | min_rate=${10000} | wt=4 | rxq=2 +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | [Template] | L2 Bridge Domain PDR Binary Search diff --git a/tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-pdrchk.robot b/tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-pdrchk.robot new file mode 100644 index 0000000000..58512392f7 --- /dev/null +++ b/tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-pdrchk.robot @@ -0,0 +1,184 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.NodePath +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | L2BDMACLRN | BASE | L2BDBASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance pdrchk test +| ... +| Documentation | *Reference PDR throughput L2BD verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- +| ... | domain and MAC learning enabled. DUT1 and DUT2 tested with 2p10GE NIC +| ... | X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-PDR value is periodically updated acording to +| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 254 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and static payload. MAC addresses are matching MAC addresses of the +| ... | TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| Check PDR for L2 bridge domain +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with ${wt} thread, ${wt} phy core,\ +| | ... | ${rxq} receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for ${framesize} Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Traffic should pass with partial loss | ${perf_trial_duration} +| | ... | ${rate} | ${framesize} | ${traffic_profile} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2bdbasemaclrn-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2 bridge domain +| | framesize=${64} | rate=4.9mpps | wt=1 | rxq=1 + +| tc02-1518B-1t1c-eth-l2bdbasemaclrn-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2 bridge domain +| | framesize=${1518} | rate=772105pps | wt=1 | rxq=1 + +| tc03-9000B-1t1c-eth-l2bdbasemaclrn-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2 bridge domain +| | framesize=${9000} | rate=110000pps | wt=1 | rxq=1 + +| tc04-64B-2t2c-eth-l2bdbasemaclrn-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 2 thread, 2 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 bridge domain +| | framesize=${64} | rate=10.4mpps | wt=2 | rxq=1 + +| tc05-1518B-2t2c-eth-l2bdbasemaclrn-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 2 thread, 2 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 bridge domain +| | framesize=${1518} | rate=812743pps | wt=2 | rxq=1 + +| tc06-9000B-2t2c-eth-l2bdbasemaclrn-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 2 thread, 2 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 bridge domain +| | framesize=${9000} | rate=100000pps | wt=2 | rxq=1 + +| tc07-64B-4t4c-eth-l2bdbasemaclrn-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 4 thread, 4 phy core,\ +| | ... | 2 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 bridge domain +| | framesize=${64} | rate=10.4mpps | wt=4 | rxq=2 + +| tc08-1518B-4t4c-eth-l2bdbasemaclrn-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 4 thread, 4 phy core,\ +| | ... | 2 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 bridge domain +| | framesize=${1518} | rate=812743pps | wt=4 | rxq=2 + +| tc09-9000B-4t4c-eth-l2bdbasemaclrn-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 4 thread, 4 phy core,\ +| | ... | 2 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 bridge domain +| | framesize=${9000} | rate=138580pps | wt=4 | rxq=2 diff --git a/tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-ndrchk.robot b/tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-ndrchk.robot new file mode 100644 index 0000000000..13a2b7577f --- /dev/null +++ b/tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-ndrchk.robot @@ -0,0 +1,192 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.NodePath +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | L2XCFWD | BASE | L2XCBASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance ndrchk test +| ... +| Documentation | *Reference NDR throughput L2XC verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- +| ... | connect. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-NDR value is periodically updated acording to +| ... | formula: ref-NDR = 0.9x NDR, where NDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and static payload. MAC addresses are matching MAC addresses of the +| ... | TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 5.9mpps. +| | [Tags] | 64B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 5.9mpps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc02-1518B-1t1c-eth-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc03-9000B-1t1c-eth-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc04-64B-2t2c-eth-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 10.4mpps. +| | [Tags] | 64B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 10.4mpps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc05-1518B-2t2c-eth-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc06-9000B-2t2c-eth-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc07-64B-4t4c-eth-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 64 Byte +| | ... | frames using single trial throughput test at 2x 10.4mpps. +| | [Tags] | 64B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${64} +| | ${rate}= | Set Variable | 10.4mpps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc08-1518B-4t4c-eth-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 1518 Byte +| | ... | frames using single trial throughput test at 2x 812743pps. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${1518} +| | ${rate}= | Set Variable | 812743pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} + +| tc09-9000B-4t4c-eth-l2xcbase-ndrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Verify ref-NDR for 9000 Byte +| | ... | frames using single trial throughput test at 2x 138580pps. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ${framesize}= | Set Variable | ${9000} +| | ${rate}= | Set Variable | 138580pps +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Traffic should pass with no loss | ${perf_trial_duration} | ${rate} +| | ... | ${framesize} | ${traffic_profile} diff --git a/tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot b/tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot new file mode 100644 index 0000000000..4c0e0a18b2 --- /dev/null +++ b/tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot @@ -0,0 +1,483 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.NodePath +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | L2XCFWD | BASE | L2XCBASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput L2XC test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- +| ... | connect. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-eth-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-eth-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-eth-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-9000B-1t1c-eth-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-9000B-1t1c-eth-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-eth-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-eth-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-eth-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-eth-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-9000B-2t2c-eth-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-9000B-2t2c-eth-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-eth-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-eth-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-eth-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-eth-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-9000B-4t4c-eth-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps. +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-9000B-4t4c-eth-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 9000 Byte frames +| | ... | using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc19-IMIX-1t1c-eth-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame size +| | ... | using binary search start at 10GE linerate, step 100kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc20-IMIX-1t1c-eth-l2xcbase-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame size +| | ... | using binary search start at 10GE linerate, step 100kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-pdrchk.robot b/tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-pdrchk.robot new file mode 100644 index 0000000000..72589f6ca1 --- /dev/null +++ b/tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-pdrchk.robot @@ -0,0 +1,184 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.NodePath +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | L2XCFWD | BASE | L2XCBASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance pdrchk test +| ... +| Documentation | *Reference PDR throughput L2XC verify test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- +| ... | connect. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In short performance tests, TG verifies +| ... | DUTs' throughput at ref-PDR (reference Non Drop Rate) with zero packet +| ... | loss tolerance. Ref-PDR value is periodically updated acording to +| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 254 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and static payload. MAC addresses are matching MAC addresses of the +| ... | TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| Check PDR for L2 xconnect +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with ${wt} thread, ${wt} phy core,\ +| | ... | ${rxq} receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for ${framesize} Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Traffic should pass with partial loss | ${perf_trial_duration} +| | ... | ${rate} | ${framesize} | ${traffic_profile} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2xcbase-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2 xconnect +| | framesize=${64} | rate=5.9mpps | wt=1 | rxq=1 + +| tc02-1518B-1t1c-eth-l2xcbase-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2 xconnect +| | framesize=${1518} | rate=812743pps | wt=1 | rxq=1 + +| tc03-9000B-1t1c-eth-l2xcbase-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2 xconnect +| | framesize=${9000} | rate=138580pps | wt=1 | rxq=1 + +| tc04-64B-2t2c-eth-l2xcbase-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 xconnect +| | framesize=${64} | rate=10.4mpps | wt=2 | rxq=1 + +| tc05-1518B-2t2c-eth-l2xcbase-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 xconnect +| | framesize=${1518} | rate=812743pps | wt=2 | rxq=1 + +| tc06-9000B-2t2c-eth-l2xcbase-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 xconnect +| | framesize=${9000} | rate=100000pps | wt=2 | rxq=1 + +| tc07-64B-4t4c-eth-l2xcbase-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 xconnect +| | framesize=${64} | rate=10.4mpps | wt=4 | rxq=2 + +| tc08-1518B-4t4c-eth-l2xcbase-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 xconnect +| | framesize=${1518} | rate=812743pps | wt=4 | rxq=2 + +| tc09-9000B-4t4c-eth-l2xcbase-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-NDR for 9000 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 xconnect +| | framesize=${9000} | rate=138580pps | wt=4 | rxq=2 diff --git a/tests/vpp/perf/l2/10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot b/tests/vpp/perf/l2/10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot new file mode 100644 index 0000000000..166e1c7a4f --- /dev/null +++ b/tests/vpp/perf/l2/10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot @@ -0,0 +1,274 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X710 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput L2BD test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge-\ +| ... | domain and MAC learning enabled. DUT1 and DUT2 tested with 2p10GE NIC +| ... | X710 by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ +| ... | of packets transmitted. NDR and PDR are discovered for different\ +| ... | Ethernet L2 frame sizes using either binary search or linear search\ +| ... | algorithms with configured starting rate and final step that determines\ +| ... | throughput measurement resolution. Test packets are generated by TG on\ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\ +| ... | (flow-group per direction, 253 flows per flow-group) with all packets\ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\ +| ... | payload. MAC addresses are matching MAC addresses of the TG node\ +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X710 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| L2 Bridge Domain NDR Binary Search +| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${min_rate} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | Add PCI devices to DUTs in 3-node single link topology +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | Run Keyword If | ${get_framesize} < ${1522} | Add no multi seg to all DUTs +| | Apply startup configuration on all VPP DUTs +| | Initialize L2 bridge domain in 3-node circular topology +| | Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| L2 Bridge Domain PDR Binary Search +| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${min_rate} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | Add PCI devices to DUTs in 3-node single link topology +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | Run Keyword If | ${get_framesize} < ${1522} | Add no multi seg to all DUTs +| | Apply startup configuration on all VPP DUTs +| | Initialize L2 bridge domain in 3-node circular topology +| | Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=1 | rxq=1 +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc02-64B-1t1c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=1 | rxq=1 +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc03-1518B-1t1c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=1 | rxq=1 +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc04-1518B-1t1c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=1 | rxq=1 +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc05-9000B-1t1c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${9000} | min_rate=${10000} | wt=1 | rxq=1 +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc06-9000B-1t1c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${9000} | min_rate=${10000} | wt=1 | rxq=1 +| | [Tags] | 9000B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc07-64B-2t2c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=2 | rxq=1 +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc08-64B-2t2c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=2 | rxq=1 +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc09-1518B-2t2c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=2 | rxq=1 +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc10-1518B-2t2c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=2 | rxq=1 +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc11-9000B-2t2c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${9000} | min_rate=${10000} | wt=2 | rxq=1 +| | [Tags] | 9000B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc12-9000B-2t2c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${9000} | min_rate=${10000} | wt=2 | rxq=1 +| | [Tags] | 9000B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc13-64B-4t4c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=4 | rxq=2 +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc14-64B-4t4c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=4 | rxq=2 +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 100kpps, LT=0.5%. +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc15-1518B-4t4c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=4 | rxq=2 +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc16-1518B-4t4c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=4 | rxq=2 +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | [Template] | L2 Bridge Domain PDR Binary Search + +| tc17-9000B-4t4c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${9000} | min_rate=${10000} | wt=4 | rxq=2 +| | [Tags] | 9000B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc18-9000B-4t4c-eth-l2bdbasemaclrn-pdrdisc +| | ... | framesize=${9000} | min_rate=${10000} | wt=4 | rxq=2 +| | [Tags] | 9000B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 9000 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | [Template] | L2 Bridge Domain PDR Binary Search diff --git a/tests/vpp/perf/l2/40ge2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot b/tests/vpp/perf/l2/40ge2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot new file mode 100644 index 0000000000..6d39fc169a --- /dev/null +++ b/tests/vpp/perf/l2/40ge2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot @@ -0,0 +1,352 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.NodePath +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Cisco-VIC-1385 | ETH | L2BDMACLRN | BASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Cisco-VIC-1385 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput L2BD test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- +| ... | domain and MAC learning enabled. DUT1 and DUT2 tested with 2p40GE NIC +| ... | NIC_Cisco-VIC-1385. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# XL710-DA2 (TG) bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G} | ${24500000000} +# XL710-DA2 Mpps (TG) limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps} | ${18750000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2bdbasemaclrn-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at\ +| | ... | 18.75Mpps rate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-eth-l2bdbasemaclrn-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at\ +| | ... | 18.75Mpps rate, step 100kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-eth-l2bdbasemaclrn-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at\ +| | ... | 24.5G rate, step 10kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc05-9000B-1t1c-eth-l2bdbasemaclrn-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at\ +| | ... | 24.5G rate, step 10kpps. +| | ... +| | [Tags] | 9000B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${9000} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc07-64B-2t2c-eth-l2bdbasemaclrn-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at\ +| | ... | 18.75Mpps rate, step 100kpps. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-eth-l2bdbasemaclrn-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at\ +| | ... | 18.75Mpps rate, step 100kpps. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | PDR | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-eth-l2bdbasemaclrn-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at\ +| | ... | 24.5G rate, step 10kpps. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc13-64B-4t4c-eth-l2bdbasemaclrn-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at\ +| | ... | 18.75Mpps rate, step 100kpps. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc15-1518B-4t4c-eth-l2bdbasemaclrn-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at\ +| | ... | 24.5G rate, step 10kpps. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc19-IMIX-1t1c-eth-l2bdbasemaclrn-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 frame size using binary search start at\ +| | ... | 24.5G rate, step 100kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc20-IMIX-2t2c-eth-l2bdbasemaclrn-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 thread, 2 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 frame size using binary search start at\ +| | ... | 24.5G rate, step 100kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc21-IMIX-4t4c-eth-l2bdbasemaclrn-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 thread, 4 phy core,\ +| | ... | 2 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 frame size using binary search start at\ +| | ... | 24.5G rate, step 100kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} diff --git a/tests/vpp/perf/l2/40ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot b/tests/vpp/perf/l2/40ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot new file mode 100644 index 0000000000..595bc029ce --- /dev/null +++ b/tests/vpp/perf/l2/40ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot @@ -0,0 +1,232 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.NodePath +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-XL710 | ETH | L2BDMACLRN | BASE +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-XL710 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput L2BD test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge-\ +| ... | domain and MAC learning enabled. DUT1 and DUT2 tested with 2p40GE NIC\ +| ... | XL710-DA2 by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ +| ... | of packets transmitted. NDR and PDR are discovered for different\ +| ... | Ethernet L2 frame sizes using either binary search or linear search\ +| ... | algorithms with configured starting rate and final step that determines\ +| ... | throughput measurement resolution. Test packets are generated by TG on\ +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\ +| ... | (flow-group per direction, 253 flows per flow-group) with all packets\ +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\ +| ... | payload. MAC addresses are matching MAC addresses of the TG node\ +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G} | ${24500000000} +# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps} | ${18750000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| L2 Bridge Domain NDR Binary Search BW limit +| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} | ${s_limit} +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${min_rate} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | Add PCI devices to DUTs in 3-node single link topology +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | Run Keyword If | ${get_framesize} < ${1522} | Add no multi seg to all DUTs +| | Apply startup configuration on all VPP DUTs +| | Initialize L2 bridge domain in 3-node circular topology +| | Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| L2 Bridge Domain NDR Binary Search +| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} | ${s_limit} +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${min_rate} +| | ${max_rate}= | Set Variable | ${s_limit} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | Add PCI devices to DUTs in 3-node single link topology +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | Run Keyword If | ${get_framesize} < ${1522} | Add no multi seg to all DUTs +| | Apply startup configuration on all VPP DUTs +| | Initialize L2 bridge domain in 3-node circular topology +| | Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| L2 Bridge Domain PDR Binary Search BW limit +| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} | ${s_limit} +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${min_rate} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | Add PCI devices to DUTs in 3-node single link topology +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | Run Keyword If | ${get_framesize} < ${1522} | Add no multi seg to all DUTs +| | Apply startup configuration on all VPP DUTs +| | Initialize L2 bridge domain in 3-node circular topology +| | Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| L2 Bridge Domain PDR Binary Search +| | [Arguments] | ${framesize} | ${min_rate} | ${wt} | ${rxq} | ${s_limit} +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${min_rate} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | Add PCI devices to DUTs in 3-node single link topology +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | Run Keyword If | ${get_framesize} < ${1522} | Add no multi seg to all DUTs +| | Apply startup configuration on all VPP DUTs +| | Initialize L2 bridge domain in 3-node circular topology +| | Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=1 | rxq=1 +| | ... | s_limit=${s_18.75Mpps} +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at\ +| | ... | 18.75Mpps rate, step 100kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc03-1518B-1t1c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=1 | rxq=1 +| | ... | s_limit=${s_24.5G} +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at\ +| | ... | 24.5G rate, step 10kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search BW limit + +| tc07-64B-2t2c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=2 | rxq=1 +| | ... | s_limit=${s_18.75Mpps} +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at\ +| | ... | 18.75Mpps rate, step 100kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc09-1518B-2t2c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=2 | rxq=1 +| | ... | s_limit=${s_24.5G} +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at\ +| | ... | 24.5G rate, step 10kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search BW limit + +| tc13-64B-4t4c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${64} | min_rate=${100000} | wt=4 | rxq=2 +| | ... | s_limit=${s_18.75Mpps} +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at\ +| | ... | 18.75Mpps rate, step 100kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search + +| tc15-1518B-4t4c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=${1518} | min_rate=${10000} | wt=4 | rxq=2 +| | ... | s_limit=${s_24.5G} +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at\ +| | ... | 24.5G rate, step 10kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search BW limit + +| tc19-IMIX-1t1c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=IMIX_v4_1 | min_rate=${100000} | wt=1 | rxq=1 +| | ... | s_limit=${s_24.5G} +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 1 thread, 1 phy core, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 frames using binary search start at\ +| | ... | 24.5G rate, step 100kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search BW limit + +| tc20-IMIX-2t2c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=IMIX_v4_1 | min_rate=${100000} | wt=2 | rxq=1 +| | ... | s_limit=${s_24.5G} +| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 2 threads, 2 phy cores, 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 frames using binary search start at\ +| | ... | 24.5G rate, step 100kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search BW limit + +| tc21-IMIX-4t4c-eth-l2bdbasemaclrn-ndrdisc +| | ... | framesize=IMIX_v4_1 | min_rate=${100000} | wt=4 | rxq=2 +| | ... | s_limit=${s_24.5G} +| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with with\ +| | ... | 4 threads, 4 phy cores, 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 frames using binary search start at\ +| | ... | 24.5G rate, step 100kpps. +| | [Template] | L2 Bridge Domain NDR Binary Search BW limit diff --git a/tests/vpp/perf/l2/40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot b/tests/vpp/perf/l2/40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot new file mode 100644 index 0000000000..4c6f279e8d --- /dev/null +++ b/tests/vpp/perf/l2/40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot @@ -0,0 +1,251 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.InterfaceUtil +| Library | resources.libraries.python.NodePath +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-XL710 | ETH | L2XCFWD | BASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-XL710 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| ... +| Test Teardown | Tear down performance discovery test | ${min_rate}pps +| ... | ${framesize} | ${traffic_profile} +| ... +| Documentation | *RFC2544: Pkt throughput L2XC test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- +| ... | connect. DUT1 and DUT2 tested with 2p40GE NIC XL710 by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G} | ${24500000000} +# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps} | ${18750000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 18.75Mpps rate, step 100kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | 64 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc03-1518B-1t1c-eth-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 24.5G rate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | 1518 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc07-64B-2t2c-eth-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 18.75Mpps rate, step 100kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | 64 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc09-1518B-2t2c-eth-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 24.5G rate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | 1518 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc13-64B-4t4c-eth-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames +| | ... | using binary search start at 18.75Mpps rate, step 100kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | 64 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc15-1518B-4t4c-eth-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames +| | ... | using binary search start at 24.5G rate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | 1518 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc19-IMIX-1t1c-eth-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame size +| | ... | using binary search start at 24.5G rate, step 100kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc20-IMIX-2t2c-eth-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 thread, 2 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame size +| | ... | using binary search start at 24.5G rate, step 100kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc21-IMIX-4t4c-eth-l2xcbase-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 thread, 4 phy core, \ +| | ... | 2 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame size +| | ... | using binary search start at 24.5G rate, step 100kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${100000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot new file mode 100644 index 0000000000..9b88f7f2d1 --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot @@ -0,0 +1,705 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.QemuUtils +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | DOT1Q | L2BDMACLRN | BASE | VHOST | VM +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Packet throughput L2BD test cases with vhost* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. 802.1q +| ... | tagging is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- +| ... | domain and MAC learning enabled. Qemu Guest is connected to VPP via +| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting +| ... | vhost-user interfaces using 5 cores pinned to cpus 5-9 and 2048M +| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores +| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to +| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520 +| ... | Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +| ${vlan_overhead}= | ${4} +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Socket names +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 +| ${sock1}= | /tmp/sock-1-${bd_id1} +| ${sock2}= | /tmp/sock-1-${bd_id2} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${avg_framesize}= | Set Variable | ${357.833} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${avg_framesize}= | Set Variable | ${357.833} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 2T2C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 2T2C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc11-IMIX-2t2c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${avg_framesize}= | Set Variable | ${357.833} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-IMIX-2t2c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${avg_framesize}= | Set Variable | ${357.833} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 4T4C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 4T4C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc17-IMIX-4t4c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${avg_framesize}= | Set Variable | ${357.833} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-IMIX-4t4c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${avg_framesize}= | Set Variable | ${357.833} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk.robot new file mode 100644 index 0000000000..bab866795a --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk.robot @@ -0,0 +1,212 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.QemuUtils +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK +| ... | NIC_Intel-X520-DA2 | DOT1Q | L2BDMACLRN | BASE | VHOST | VM +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance pdrchk test with vhost and VM with dpdk-testpmd +| ... | ${rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Packet throughput L2BD test cases with vhost* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. 802.1q +| ... | tagging is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- +| ... | domain and MAC learning enabled. Qemu Guest is connected to VPP via +| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting +| ... | vhost-user interfaces using 5 cores pinned to cpus 5-9 and 2048M +| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores +| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to +| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520 +| ... | Niantic by Intel. +| ... | *[Ver] TG verification:* TG verifies throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. Ref-PDR value is periodically updated acording to +| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and static payload. MAC addresses are matching MAC addresses of the +| ... | TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +# Socket names +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 +| ${sock1}= | /tmp/sock-1-${bd_id1} +| ${sock2}= | /tmp/sock-1-${bd_id2} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with ${wt} thread, ${wt} phy\ +| | ... | core, ${rxq} receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for ${framesize} Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VLAN in a 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid} +| | ... | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Traffic should pass with partial loss | ${perf_trial_duration} +| | ... | ${rate} | ${framesize} | ${traffic_profile} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-64B-1t1c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd +| | framesize=${64} | rate=1.2mpps | wt=1 | rxq=1 + +| tc02-1518B-1t1c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd +| | framesize=${1518} | rate=350000pps | wt=1 | rxq=1 + +| tc03-IMIX-1t1c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd +| | framesize=IMIX_v4_1 | rate=0.9mpps | wt=1 | rxq=1 + +| tc04-64B-2t2c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd +| | framesize=${64} | rate=2.2mpps | wt=2 | rxq=1 + +| tc05-1518B-2t2c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd +| | framesize=${1518} | rate=0.6mpps | wt=2 | rxq=1 + +| tc06-IMIX-2t2c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd +| | framesize=IMIX_v4_1 | rate=1.5pps | wt=2 | rxq=1 + +| tc07-64B-4t4c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd +| | framesize=${64} | rate=3.4mpps | wt=4 | rxq=2 + +| tc08-1518B-4t4c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd +| | framesize=${1518} | rate=0.7mpps | wt=4 | rxq=2 + +| tc09-IMIX-4t4c-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2 bridge domain with vhost and VM with dpdk-testpmd +| | framesize=IMIX_v4_1 | rate=2.2mpps | wt=4 | rxq=2 diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot new file mode 100644 index 0000000000..258ebbbe57 --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot @@ -0,0 +1,684 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.NodePath +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | DOT1Q | L2XCFWD | BASE | VHOST | VM +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Pkt throughput L2XC test cases with vhost* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. 802.1q +| ... | tagging is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- +| ... | connect. Qemu Guest is connected to VPP via vhost-user interfaces. +| ... | Guest is running DPDK testpmd interconnecting vhost-user interfaces +| ... | using 5 cores pinned to cpus 5-9 and 2048M memory. Testpmd is using +| ... | socket-mem=1024M (512x2M hugepages), 5 cores (1 main core and 4 cores +| ... | dedicated for io), forwarding mode is set to io, rxd/txd=256, +| ... | burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +| ${vlan_overhead}= | ${4} +# Socket names +| ${sock1}= | /tmp/sock-1 +| ${sock2}= | /tmp/sock-2 +# X520-DA2 bandwidth limit +| ${s_limit}= | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${avg_framesize}= | Set Variable | ${357.833} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${avg_framesize}= | Set Variable | ${357.833} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 2T2C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 2T2C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc11-IMIX-2t2c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${avg_framesize}= | Set Variable | ${357.833} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-IMIX-2t2c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${avg_framesize}= | Set Variable | ${357.833} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 4T4C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 4T4C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc17-IMIX-4t4c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | STHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${avg_framesize}= | Set Variable | ${357.833} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-IMIX-4t4c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${avg_framesize}= | Set Variable | ${357.833} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk.robot new file mode 100644 index 0000000000..68b11c8348 --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk.robot @@ -0,0 +1,209 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.QemuUtils +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK +| ... | NIC_Intel-X520-DA2 | DOT1Q | L2XCFWD | BASE | VHOST | VM +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance pdrchk test with vhost and VM with dpdk-testpmd +| ... | ${rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Packet throughput L2XC test cases with vhost* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. 802.1q +| ... | tagging is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- +| ... | connect. Qemu Guest is connected to VPP via +| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting +| ... | vhost-user interfaces using 5 cores pinned to cpus 5-9 and 2048M +| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores +| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to +| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520 +| ... | Niantic by Intel. +| ... | *[Ver] TG verification:* TG verifies throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. Ref-PDR value is periodically updated acording to +| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and static payload. MAC addresses are matching MAC addresses of the +| ... | TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +# Socket names +| ${sock1}= | /tmp/sock-1 +| ${sock2}= | /tmp/sock-2 +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with ${wt} thread, ${wt} phy\ +| | ... | core, ${rxq} receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for ${framesize} Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology +| | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Traffic should pass with partial loss | ${perf_trial_duration} +| | ... | ${rate} | ${framesize} | ${traffic_profile} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-64B-1t1c-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | framesize=${64} | rate=1.4mpps | wt=1 | rxq=1 + +| tc02-1518B-1t1c-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | framesize=${1518} | rate=330000pps | wt=1 | rxq=1 + +| tc03-IMIX-1t1c-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | framesize=IMIX_v4_1 | rate=1.0mpps | wt=1 | rxq=1 + +| tc04-64B-2t2c-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | framesize=${64} | rate=1.4mpps | wt=2 | rxq=1 + +| tc05-1518B-2t2c-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | framesize=${1518} | rate=0.7mpps | wt=2 | rxq=1 + +| tc06-IMIX-2t2c-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | framesize=IMIX_v4_1 | rate=1.6mpps | wt=2 | rxq=1 + +| tc07-64B-4t4c-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | framesize=${64} | rate=4.0mpps | wt=4 | rxq=2 + +| tc08-1518B-4t4c-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | framesize=${1518} | rate=0.7mpps | wt=4 | rxq=2 + +| tc09-IMIX-4t4c-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | framesize=IMIX_v4_1 | rate=2.4mpps | wt=4 | rxq=2 diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot new file mode 100644 index 0000000000..6bb145325a --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot @@ -0,0 +1,623 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.QemuUtils +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | L2BDMACLRN | BASE | VHOST | VM +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Pkt throughput L2BD test cases with vhost* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- +| ... | domain and MAC learning enabled. Qemu Guest is connected to VPP via +| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting +| ... | vhost-user interfaces using 5 cores pinned to cpus 5-9 and 2048M +| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores +| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to +| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520 +| ... | Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Socket names +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 +| ${sock1}= | /tmp/sock-1-${bd_id1} +| ${sock2}= | /tmp/sock-1-${bd_id2} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 5kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-IMIX-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-IMIX-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-IMIX-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-IMIX-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot new file mode 100644 index 0000000000..ade616825a --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot @@ -0,0 +1,548 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.QemuUtils +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | L2BDMACLRN | BASE | VHOST | VM +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| Test Setup | Set up performance test +| Test Teardown | Run Keywords +| ... | Show Bridge Domain Data On All DUTs +| ... | AND | Tear down performance test with vhost and VM with dpdk-testpmd +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| Documentation | *RFC2544: Pkt throughput L2BD test cases with vhost* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- +| ... | domains and MAC learning enabled. Qemu Guests are connected to VPP via +| ... | vhost-user interfaces. Guests are running DPDK testpmd interconnecting +| ... | vhost-user interfaces using 5 cores pinned to cpus 6-10 and 11-15 and +| ... | 2048M memory. Testpmd is using socket-mem=1024M (512x2M hugepages), +| ... | 5 cores (1 main core and 4 cores dedicated for io), forwarding mode is +| ... | set to io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE NIC +| ... | X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit}= | ${10000000000} +# CPU settings +| ${system_cpus}= | ${1} +| ${vpp_cpus}= | ${5} +| ${vm_cpus}= | ${5} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-IMIX-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-IMIX-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-IMIX-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-IMIX-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot new file mode 100644 index 0000000000..d231afffb7 --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot @@ -0,0 +1,621 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.NodePath +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | L2XCFWD | BASE | VHOST | VM +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Pkt throughput L2XC test cases with vhost* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- +| ... | connect. Qemu Guest is connected to VPP via vhost-user interfaces. +| ... | Guest is running DPDK testpmd interconnecting vhost-user interfaces +| ... | using 5 cores pinned to cpus 5-9 and 2048M memory. Testpmd is using +| ... | socket-mem=1024M (512x2M hugepages), 5 cores (1 main core and 4 cores +| ... | dedicated for io), forwarding mode is set to io, rxd/txd=256, +| ... | burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 +| ${sock1}= | /tmp/sock-1-${bd_id1} +| ${sock2}= | /tmp/sock-1-${bd_id2} +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-IMIX-2t2c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-IMIX-2t2c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-IMIX-4t4c-eth-l2xcbase-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-IMIX-4t4c-eth-l2xcbase-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-pdrchk.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-pdrchk.robot new file mode 100644 index 0000000000..4fb03188bb --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-pdrchk.robot @@ -0,0 +1,208 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.QemuUtils +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | L2XCFWD | BASE | VHOST | VM +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance pdrchk test with vhost and VM with dpdk-testpmd +| ... | ${rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Packet throughput L2XC test cases with vhost* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. 802.1q +| ... | tagging is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- +| ... | connect. Qemu Guest is connected to VPP via +| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting +| ... | vhost-user interfaces using 5 cores pinned to cpus 5-9 and 2048M +| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores +| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to +| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520 +| ... | Niantic by Intel. +| ... | *[Ver] TG verification:* TG verifies throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. Ref-PDR value is periodically updated acording to +| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and static payload. MAC addresses are matching MAC addresses of the +| ... | TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 +| ${sock1}= | /tmp/sock-1-${bd_id1} +| ${sock2}= | /tmp/sock-1-${bd_id2} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with ${wt} thread, ${wt} phy\ +| | ... | core, ${rxq} receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for ${framesize} Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Traffic should pass with partial loss | ${perf_trial_duration} +| | ... | ${rate} | ${framesize} | ${traffic_profile} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2xcbase-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | framesize=${64} | rate=1.6mpps | wt=1 | rxq=1 + +| tc02-1518B-1t1c-eth-l2xcbase-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | framesize=${1518} | rate=400000pps | wt=1 | rxq=1 + +| tc03-IMIX-1t1c-eth-l2xcbase-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | framesize=IMIX_v4_1 | rate=1.0mpps | wt=1 | rxq=1 + +| tc04-64B-2t2c-eth-l2xcbase-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | framesize=${64} | rate=3.0mpps | wt=2 | rxq=1 + +| tc05-1518B-2t2c-eth-l2xcbase-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | framesize=${1518} | rate=0.7mpps | wt=2 | rxq=1 + +| tc06-IMIX-2t2c-eth-l2xcbase-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | framesize=IMIX_v4_1 | rate=2.0mpps | wt=2 | rxq=1 + +| tc07-64B-4t4c-eth-l2xcbase-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | framesize=${64} | rate=4.2mpps | wt=4 | rxq=2 + +| tc08-1518B-4t4c-eth-l2xcbase-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | framesize=${1518} | rate=0.7mpps | wt=4 | rxq=2 + +| tc09-IMIX-4t4c-eth-l2xcbase-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for L2XC with vhost and VM with dpdk-testpmd +| | framesize=IMIX_v4_1 | rate=3.0mpps | wt=4 | rxq=2 diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot new file mode 100644 index 0000000000..ed2635ae02 --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot @@ -0,0 +1,549 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.NodePath +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | L2XCFWD | BASE | VHOST | VM +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Pkt throughput L2XC test cases with vhost* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- +| ... | connects. Qemu Guests are connected to VPP via vhost-user interfaces. +| ... | Guests are running DPDK testpmd interconnecting vhost-user interfaces +| ... | using 5 cores pinned to cpus 6-10 and 11-15 and 2048M memory. Testpmd is +| ... | using socket-mem=1024M (512x2M hugepages), 5 cores (1 main core and 4 +| ... | cores dedicated for io), forwarding mode is set to io, rxd/txd=256, +| ... | burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +#CPU settings +| ${system_cpus}= | ${1} +| ${vpp_cpus}= | ${5} +| ${vm_cpus}= | ${5} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-IMIX-2t2c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-IMIX-2t2c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-IMIX-4t4c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-IMIX-4t4c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-ndrpdrdisc.robot new file mode 100644 index 0000000000..0b19414fb5 --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-ndrpdrdisc.robot @@ -0,0 +1,658 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.QemuUtils +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | BASE | VHOST | VM +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Pkt throughput IPv4 test cases with vhost* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and two static IPv4 /24 route entries. Qemu Guest is connected +| ... | to VPP via vhost-user interfaces. Guest is running DPDK testpmd +| ... | interconnecting vhost-user interfaces using 5 cores pinned to cpus 5-9 +| ... | and 2048M memory. Testpmd is using socket-mem=1024M (512x2M hugepages), +| ... | 5 cores (1 main core and 4 cores dedicated for io), forwarding mode is +| ... | set to mac, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE +| ... | NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +| ${sock1}= | /tmp/sock-1 +| ${sock2}= | /tmp/sock-2 +| ${fib_table_1}= | 100 +| ${fib_table_2}= | 101 +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4base-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} +| | ... | ${dut1_vif2_mac} +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} +| | ... | ${dut2_vif2_mac} +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4-ip4base-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} +| | ... | ${dut1_vif2_mac} +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} +| | ... | ${dut2_vif2_mac} +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4-ip4base-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} +| | ... | ${dut1_vif2_mac} +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} +| | ... | ${dut2_vif2_mac} +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4-ip4base-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} +| | ... | ${dut1_vif2_mac} +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} +| | ... | ${dut2_vif2_mac} +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-ethip4-ip4base-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} +| | ... | ${dut1_vif2_mac} +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} +| | ... | ${dut2_vif2_mac} +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-ethip4-ip4base-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} +| | ... | ${dut1_vif2_mac} +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} +| | ... | ${dut2_vif2_mac} +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4-ip4base-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} +| | ... | ${dut1_vif2_mac} +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} +| | ... | ${dut2_vif2_mac} +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4-ip4base-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} +| | ... | ${dut1_vif2_mac} +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} +| | ... | ${dut2_vif2_mac} +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-ethip4-ip4base-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} +| | ... | ${dut1_vif2_mac} +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} +| | ... | ${dut2_vif2_mac} +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-ethip4-ip4base-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} +| | ... | ${dut1_vif2_mac} +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} +| | ... | ${dut2_vif2_mac} +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-IMIX-2t2c-ethip4-ip4base-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} +| | ... | ${dut1_vif2_mac} +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} +| | ... | ${dut2_vif2_mac} +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-IMIX-2t2c-ethip4-ip4base-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} +| | ... | ${dut1_vif2_mac} +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} +| | ... | ${dut2_vif2_mac} +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-ethip4-ip4base-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} +| | ... | ${dut1_vif2_mac} +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} +| | ... | ${dut2_vif2_mac} +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-ethip4-ip4base-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} +| | ... | ${dut1_vif2_mac} +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} +| | ... | ${dut2_vif2_mac} +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-ethip4-ip4base-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} +| | ... | ${dut1_vif2_mac} +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} +| | ... | ${dut2_vif2_mac} +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-ethip4-ip4base-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} +| | ... | ${dut1_vif2_mac} +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} +| | ... | ${dut2_vif2_mac} +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-IMIX-4t4c-ethip4-ip4base-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} +| | ... | ${dut1_vif2_mac} +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} +| | ... | ${dut2_vif2_mac} +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-IMIX-4t4c-ethip4-ip4base-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} +| | ... | ${dut1_vif2_mac} +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} +| | ... | ${dut2_vif2_mac} +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-pdrchk.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-pdrchk.robot new file mode 100644 index 0000000000..46a44cb58b --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-pdrchk.robot @@ -0,0 +1,209 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.QemuUtils +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | PDRCHK +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | BASE | VHOST | VM +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance pdrchk test with vhost and VM with dpdk-testpmd +| ... | ${rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Pkt throughput IPv4 test cases with vhost* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and two static IPv4 /24 route entries. Qemu Guest is connected +| ... | to VPP via vhost-user interfaces. Guest is running DPDK testpmd +| ... | interconnecting vhost-user interfaces using 5 cores pinned to cpus 5-9 +| ... | and 2048M memory. Testpmd is using socket-mem=1024M (512x2M hugepages), +| ... | 5 cores (1 main core and 4 cores dedicated for io), forwarding mode is +| ... | set to mac, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE +| ... | NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG verifies throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. Ref-PDR value is periodically updated acording to +| ... | formula: ref-PDR = 0.9x PDR, where PDR is found in RFC2544 long +| ... | performance tests for the same DUT configuration. Test packets are +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3 +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with +| ... | all packets containing Ethernet header, IPv4 header with IP protocol=61 +| ... | and static payload. MAC addresses are matching MAC addresses of the +| ... | TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${sock1}= | /tmp/sock-1 +| ${sock2}= | /tmp/sock-2 +| ${fib_table_1}= | 100 +| ${fib_table_2}= | 101 +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Keywords *** +| Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with ${wt} thread, ${wt} phy\ +| | ... | core, ${rxq} receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for ${framesize} Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Arguments] | ${framesize} | ${rate} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test and test teardown +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${rate} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost in 3-node circular topology +| | ... | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 | ${dut1_vif1_mac} +| | ... | ${dut1_vif2_mac} +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd-mac connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 | ${dut2_vif1_mac} +| | ... | ${dut2_vif2_mac} +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Traffic should pass with partial loss | ${perf_trial_duration} +| | ... | ${rate} | ${framesize} | ${traffic_profile} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +*** Test Cases *** +| tc01-64B-1t1c-eth-ip4base-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd +| | framesize=${64} | rate=2.5mpps | wt=1 | rxq=1 + +| tc02-1518B-1t1c-eth-ip4base-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd +| | framesize=${1518} | rate=300000pps | wt=1 | rxq=1 + +| tc03-IMIX-1t1c-eth-ip4base-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy\ +| | ... | core, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd +| | framesize=IMIX_v4_1 | rate=0.9mpps | wt=1 | rxq=1 + +| tc04-64B-2t2c-eth-ip4base-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd +| | framesize=${64} | rate=3.0mpps | wt=2 | rxq=1 + +| tc05-1518B-2t2c-eth-ip4base-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd +| | framesize=${1518} | rate=350000pps | wt=2 | rxq=1 + +| tc06-IMIX-2t2c-eth-ip4base-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy\ +| | ... | cores, 1 receive queue per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd +| | framesize=IMIX_v4_1 | rate=2.0mpps | wt=2 | rxq=1 + +| tc07-64B-4t4c-eth-ip4base-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd +| | framesize=${64} | rate=3.8mpps | wt=4 | rxq=2 + +| tc08-1518B-4t4c-eth-ip4base-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-PDR for 1518 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd +| | framesize=${1518} | rate=350000pps | wt=4 | rxq=2 + +| tc09-IMIX-4t4c-eth-ip4base-eth-2vhost-1vm-pdrchk +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy\ +| | ... | cores, 2 receive queues per NIC port. +| | ... | [Ver] Verify ref-PDR for 64 Byte frames using single trial\ +| | ... | throughput test at 2x ${rate}. +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD +| | ... +| | [Template] | Check PDR for IPv4 routing with vhost and VM with dpdk-testpmd +| | framesize=IMIX_v4_1 | rate=3.0mpps | wt=4 | rxq=2 diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot new file mode 100644 index 0000000000..5e1c9afca7 --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot @@ -0,0 +1,550 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.QemuUtils +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | ETH | IP4FWD | BASE | VHOST | VM +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Pkt throughput IPv4 test cases with vhost* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and static IPv4 /24 route entries. Qemu Guests are connected +| ... | to VPP via vhost-user interfaces. Guests are running DPDK testpmd +| ... | interconnecting vhost-user interfaces using 5 cores pinned to cpus 6-10 +| ... | and 11-15 and 2048M memory. Testpmd is using socket-mem=1024M (512x2M +| ... | hugepages), 5 cores (1 main core and 4 cores dedicated for io), +| ... | forwarding mode is set to mac, rxd/txd=256, burst=64. DUT1, DUT2 are +| ... | tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit}= | ${10000000000} +# CPU settings +| ${system_cpus}= | ${1} +| ${vpp_cpus}= | ${5} +| ${vm_cpus}= | ${5} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4base-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4-ip4base-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4-ip4base-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4-ip4base-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-ethip4-ip4base-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-ethip4-ip4base-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4-ip4base-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4-ip4base-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-ethip4-ip4base-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-ethip4-ip4base-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-IMIX-2t2c-ethip4-ip4base-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-IMIX-2t2c-ethip4-ip4base-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-ethip4-ip4base-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-ethip4-ip4base-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-ethip4-ip4base-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-ethip4-ip4base-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-IMIX-4t4c-ethip4-ip4base-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-IMIX-4t4c-ethip4-ip4base-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot new file mode 100644 index 0000000000..b24e0ca3c6 --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot @@ -0,0 +1,675 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.QemuUtils +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X520-DA2 | L2BDMACLRN | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY +| ... | VHOST | VM +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Packet throughput L2BD test cases with VXLANoIPv4 +| ... | and vhost* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. +| ... | Eth-IPv4-VXLAN-Eth-IPv4 is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- +| ... | domain and MAC learning enabled. Qemu Guest is connected to VPP via +| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting +| ... | vhost-user interfaces using 5 cores pinned to cpus 5-9 and 2048M +| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores +| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to +| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE NIC X520 +| ... | Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544, RFC7348. + +*** Variables *** +# X520-DA2 bandwidth limit +| ${s_limit} | ${10000000000} +| ${vxlan_overhead} | ${50} +# Socket names +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 +| ${sock1}= | /tmp/sock-1-${bd_id1} +| ${sock2}= | /tmp/sock-1-${bd_id2} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 framesize using binary search start at\ +| | ... | 10GE linerate, step 5kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${avg_framesize}= | Set Variable | ${403.833} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 frame size using binary search start at\ +| | ... | 10GE linerate, step 5kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${avg_framesize}= | Set Variable | ${403.833} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc11-IMIX-2t2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 frame size using binary search start at\ +| | ... | 10GE linerate, step 5kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${avg_framesize}= | Set Variable | ${403.833} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-IMIX-2t2c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 frame size using binary search start at\ +| | ... | 10GE linerate, step 5kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${avg_framesize}= | Set Variable | ${403.833} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 10GE\ +| | ... | linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize + ${vxlan_overhead}} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc17-IMIX-4t4c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find NDR for IMIX_v4_1 frame size using binary search start at\ +| | ... | 10GE linerate, step 5kpps. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${avg_framesize}= | Set Variable | ${403.833} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-IMIX-4t4c-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Find PDR for IMIX_v4_1 frame size using binary search start at\ +| | ... | 10GE linerate, step 5kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B;16x570B;4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${avg_framesize}= | Set Variable | ${403.833} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${avg_framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot new file mode 100644 index 0000000000..734b624666 --- /dev/null +++ b/tests/vpp/perf/vm_vhost/10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot @@ -0,0 +1,658 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.QemuUtils +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X710 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Pkt throughput L2BD test cases with vhost* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- +| ... | domain and MAC learning enabled. Qemu Guest is connected to VPP via +| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting +| ... | vhost-user interfaces using 5 cores pinned to cpus on NUMA1 and 2048M +| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores +| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to +| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p10GE NIC X710 +| ... | by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# X710 bandwidth limit +| ${s_limit} | ${10000000000} +# Socket names +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 +| ${sock1}= | /tmp/sock-1-${bd_id1} +| ${sock2}= | /tmp/sock-1-${bd_id2} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames\ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames\ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames\ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame\ +| | ... | size using binary search start at 10GE linerate, step 5kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame\ +| | ... | size using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames\ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames\ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames\ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc11-IMIX-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame\ +| | ... | size using binary search start at 10GE linerate, step 5kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-IMIX-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame\ +| | ... | size using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames\ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames\ +| | ... | using binary search start at 10GE linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames\ +| | ... | using binary search start at 10GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc17-IMIX-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame\ +| | ... | size using binary search start at 10GE linerate, step 5kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-IMIX-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame\ +| | ... | size using binary search start at 10GE linerate, step 5kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot new file mode 100644 index 0000000000..b16a699e6a --- /dev/null +++ b/tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot @@ -0,0 +1,660 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.QemuUtils +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-XL710 | ETH | L2BDMACLRN | BASE | VHOST | VM +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-XL710 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Packet throughput L2BD test cases with vhost* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- +| ... | domain and MAC learning enabled. Qemu Guest is connected to VPP via +| ... | vhost-user interfaces. Guest is running DPDK testpmd interconnecting +| ... | vhost-user interfaces using 5 cores pinned to cpus on NUMA1 and 2048M +| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores +| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to +| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p40GE NIC XL710 +| ... | by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G} | ${24500000000} +# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps} | ${18750000} +# Socket names +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 +| ${sock1}= | /tmp/sock-1-${bd_id1} +| ${sock2}= | /tmp/sock-1-${bd_id2} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame\ +| | ... | size using binary search start at 40GE linerate, step 5kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame\ +| | ... | size using binary search start at 40GE linerate, step 5kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc11-IMIX-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame\ +| | ... | size using binary search start at 40GE linerate, step 5kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-IMIX-2t2c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame\ +| | ... | size using binary search start at 40GE linerate, step 5kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames\ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} + +| tc17-IMIX-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame\ +| | ... | size using binary search start at 40GE linerate, step 5kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find NDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-IMIX-4t4c-eth-l2bdbasemaclrn-eth-2vhost-1vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame\ +| | ... | size using binary search start at 40GE linerate, step 5kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User in 3-node circular topology +| | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} +| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut1} | ${sock1} | ${sock2} | DUT1_VM1 +| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1} +| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user +| | ... | ${dut2} | ${sock1} | ${sock2} | DUT2_VM1 +| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2} +| | Then Find PDR using binary search and pps | ${framesize} | ${binary_min} +| | ... | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance} +| | ... | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot new file mode 100644 index 0000000000..c9fc7292b5 --- /dev/null +++ b/tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot @@ -0,0 +1,588 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.QemuUtils +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-XL710 | ETH | L2BDMACLRN | BASE | VHOST | VM +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-XL710 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Packet throughput L2BD test cases with vhost* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- +| ... | domain and MAC learning enabled. Qemu Guests are connected to VPP via +| ... | vhost-user interfaces. Guests are running DPDK testpmd interconnecting +| ... | vhost-user interfaces using 5 cores pinned to cpus on NUMA1 and 2048M +| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores +| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to +| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p40GE NIC XL710 +| ... | by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G} | ${24500000000} +# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps} | ${18750000} +# CPU settings +| ${system_cpus}= | ${1} +| ${vpp_cpus}= | ${5} +| ${vm_cpus}= | ${5} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 40GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-IMIX-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 40GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-IMIX-2t2c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-IMIX-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 40GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-IMIX-4t4c-eth-l2bdbasemaclrn-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 bridge domains with Vhost-User for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot new file mode 100644 index 0000000000..7d79bc2e78 --- /dev/null +++ b/tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot @@ -0,0 +1,588 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.QemuUtils +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-XL710 | ETH | L2XCFWD | BASE | VHOST | VM +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-XL710 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Packet throughput L2XC test cases with vhost* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- +| ... | connects. Qemu Guests are connected to VPP via vhost-user interfaces. +| ... | Guests are running DPDK testpmd interconnecting vhost-user interfaces +| ... | using 5 cores pinned to cpus on NUMA1 (cpus 24-28 and 29-34) and 2048M +| ... | memory. Testpmd is using socket-mem=1024M (512x2M hugepages), 5 cores +| ... | (1 main core and 4 cores dedicated for io), forwarding mode is set to +| ... | io, rxd/txd=256, burst=64. DUT1, DUT2 are tested with 2p40GE NIC XL710 +| ... | by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G} | ${24500000000} +# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps} | ${18750000} +# CPU settings +| ${system_cpus}= | ${1} +| ${vpp_cpus}= | ${5} +| ${vm_cpus}= | ${5} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 40GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-IMIX-2t2c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 40GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-IMIX-2t2c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-IMIX-4t4c-eth-l2xcbase-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 40GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-IMIX-4t4c-eth-l2xcbase-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC switching config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize L2 xconnect with Vhost-User for '2' in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} diff --git a/tests/vpp/perf/vm_vhost/40ge2p1xl710-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot b/tests/vpp/perf/vm_vhost/40ge2p1xl710-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot new file mode 100644 index 0000000000..30e68e1f15 --- /dev/null +++ b/tests/vpp/perf/vm_vhost/40ge2p1xl710-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot @@ -0,0 +1,588 @@ +# Copyright (c) 2017 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/performance/performance_setup.robot +| Library | resources.libraries.python.QemuUtils +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDRDISC +| ... | NIC_Intel-XL710 | ETH | IP4FWD | BASE | VHOST | VM +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-XL710 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd +| ... | ${min_rate}pps | ${framesize} | ${traffic_profile} +| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs} +| ... | dut2_node=${dut2} | dut2_vm_refs=${dut2_vm_refs} +| ... +| Documentation | *RFC2544: Packet throughput IP14 test cases with vhost* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 forIPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and static IPv4 /24 route entries. Qemu Guests are connected to +| ... | VPP via vhost-user interfaces. Guests are running DPDK testpmd +| ... | interconnecting vhost-user interfaces using 5 cores pinned to cpus on +| ... | NUMA1 (cpus 24-28 and 29-34) and 2048M memory. Testpmd is using +| ... | socket-mem=1024M (512x2M hugepages), 5 cores (1 main core and 4 cores +| ... | dedicated for io), forwarding mode is set to io, rxd/txd=256, burst=64. +| ... | DUT1, DUT2 are tested with 2p40GE NIC XL710 by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage +| ... | of packets transmitted. NDR and PDR are discovered for different +| ... | Ethernet L2 frame sizes using either binary search or linear search +| ... | algorithms with configured starting rate and final step that determines +| ... | throughput measurement resolution. Test packets are generated by TG on +| ... | links to DUTs. TG traffic profile contains two L3 flow-groups +| ... | (flow-group per direction, 253 flows per flow-group) with all packets +| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static +| ... | payload. MAC addresses are matching MAC addresses of the TG node +| ... | interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G} | ${24500000000} +# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps} | ${18750000} +# CPU settings +| ${system_cpus}= | ${1} +| ${vpp_cpus}= | ${5} +| ${vm_cpus}= | ${5} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Test Cases *** +| tc01-64B-1t1c-eth-ip4base-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc02-64B-1t1c-eth-ip4base-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc03-1518B-1t1c-eth-ip4base-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc04-1518B-1t1c-eth-ip4base-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc05-IMIX-1t1c-eth-ip4base-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 40GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc06-IMIX-1t1c-eth-ip4base-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc07-64B-2t2c-eth-ip4base-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc08-64B-2t2c-eth-ip4base-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc09-1518B-2t2c-eth-ip4base-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc10-1518B-2t2c-eth-ip4base-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc11-IMIX-2t2c-eth-ip4base-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 40GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc12-IMIX-2t2c-eth-ip4base-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores, \ +| | ... | 1 receive queue per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc13-64B-4t4c-eth-ip4base-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 64 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD | NDRDISC +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc14-64B-4t4c-eth-ip4base-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 64 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 64B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${64} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Set Variable | ${s_18.75Mpps} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc15-1518B-4t4c-eth-ip4base-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for 1518 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc16-1518B-4t4c-eth-ip4base-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for 1518 Byte frames \ +| | ... | using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... +| | [Tags] | 1518B | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | ${1518} +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} + +| tc17-IMIX-4t4c-eth-ip4base-eth-4vhost-2vm-ndrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find NDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 40GE linerate, step 10kpps. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD | NDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find NDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} + +| tc18-IMIX-4t4c-eth-ip4base-eth-4vhost-2vm-pdrdisc +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores, \ +| | ... | 2 receive queues per NIC port. [Ver] Find PDR for IMIX_v4_1 frame \ +| | ... | size using binary search start at 40GE linerate, step 10kpps, LT=0.5%. +| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B) +| | ... +| | [Tags] | IMIX | 4T4C | MTHREAD | PDRDISC | SKIP_PATCH +| | ... +| | ${framesize}= | Set Variable | IMIX_v4_1 +| | ${min_rate}= | Set Variable | ${10000} +| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${353.83333} +| | ${binary_min}= | Set Variable | ${min_rate} +| | ${binary_max}= | Set Variable | ${max_rate} +| | ${threshold}= | Set Variable | ${min_rate} +| | ${dut1_vm_refs}= | Create Dictionary +| | ${dut2_vm_refs}= | Create Dictionary +| | Set Test Variable | ${dut1_vm_refs} +| | Set Test Variable | ${dut2_vm_refs} +| | Given Add '4' worker threads and '2' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv4 forwarding with vhost for '2' VMs in 3-node circular topology +| | And Configure '2' guest VMs with dpdk-testpmd-mac connected via vhost-user in 3-node circular topology +| | Then Find PDR using binary search and pps +| | ... | ${framesize} | ${binary_min} | ${binary_max} | ${traffic_profile} +| | ... | ${min_rate} | ${max_rate} | ${threshold} +| | ... | ${perf_pdr_loss_acceptance} | ${perf_pdr_loss_acceptance_type} -- cgit 1.2.3-korg